为UART串行端口通信启用ACK/NAK握手



一个带有UART公接口的条形码读取器通过Ubuntu 10.10桌面上的串行端口连接。从专有的自述文件中,我知道我必须启用ACK/NAK握手,才能从设备中获得我发送的命令的ACK或NAK。我不知道如何在Linux环境中启用那些使用C串行端口编程的程序。

有人能解释一下吗?

更新:

执行了以下操作以启用软件握手-
system ("stty ixon -ixoff -F /dev/tty");
bzero (shcmd, 64);
sprintf (shcmd, "stty ixon -ixoff -F %s", UART_DEVICE);
system (shcmd);

设置速度-
system("stty speed 9600");
bzero (shcmd, 64);
sprintf (shcmd, "stty speed 9600 -F %s", UART_DEVICE);
system (shcmd);

编写命令-
unsigned char req_rev[6] = {0x05,0xA3,0x04,0x00,0xFF,0x55};
n = write(fd, req_rev, 6);

从设备读取-
int n = read(fd, result, 254);

但我每次读书都会有"EGAIN"。你知道我为什么会这样吗?

ACK/NACK不存在。存在的是XON/XOFF。从这里:

  • 文档将ACK/NACK用于XON/XOFF,您的问题是"如何在我的串行端口上设置XON/XOFF"。

  • 文档是正确的,您应该做的第一件事是通过发送适当的命令在设备中启用ACK/NACK机制。要获得帮助,您需要浏览文档或提供更多信息。

最新更新