首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带握手功能的g_serial小工具

带握手功能的g_serial小工具
EN

Stack Overflow用户
提问于 2012-09-17 17:49:51
回答 2查看 1.9K关注 0票数 1

我在Windows-host上有应用程序,它通过完全握手(RTS,CTS,DTR)的RS232连接到板卡设备。我现在想把RS232换成USB。我使用带有嵌入式linux和USB device (g_serial)模块的板卡。我得到了终端两端的所有数据,但应用程序无法处理它(缺少握手信号)。怎么可能处理它呢?(主机或设备端)也许有一些关心PC主机端握手的握手“模拟器”?

BR Bartlomiej Grzeskowiak

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-20 12:37:37

我查看了Linux内核中的g_serial驱动程序的内核(最初是3.8,后来是4.11)源代码,看看它是否实现了控制Linux端API (/dev/ttyGS0)上的硬件握手线路的API。例如:

代码语言:javascript
复制
#include <unistd.h>
#include <termios.h>

int fd;
int status;

...
ioctl(fd, TIOCMGET, &status);
status |= TIOCM_DTR;
ioctl(fd, TIOCMSET, &status);

看起来驱动程序似乎不支持它。在drivers/usb/gadget/function/u_serial.c中,请参阅struct tty_operations gs_tty_ops,它没有定义.tiocmset.tiocmget成员,而这些成员通常是支持上述代码所需的。

因此,我认为驱动程序需要改进才能添加这种支持。

票数 2
EN

Stack Overflow用户

发布于 2012-09-17 22:39:52

如果底层驱动程序实现CDC ACM类,则使用SET_CONTROL_LINE_STATE (0x22)请求设置控制线状态。当设置了控制线状态时,Windows肯定会发出此请求,并且也会响应来自设备的请求。

然而,这些信号对USB传输没有影响,因为底层USB协议具有其自己的流控制机制。两端的应用程序都需要处理信号。例如,在Windows中,您必须显式地为端口启用硬件流控制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12456829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档