我正在尝试将与USB通信的.Net代码转换为TTL设备,以提升:: asio :: serial_port代码,以便能够在Linux下运行。我已经完成了所有工作,但有一条线我无法转换:
port.Handshake = Handshake.RequestToSendXOnXOff;
我发现我们应该使用asio::serial_port_base::flow_control
,但它的模式只有none
,software
和hardware
。我该怎么做才能使我的代码与.Net代码相同?
由于
答案 0 :(得分:0)
您希望软件和硬件都与现有软件相匹配。我会假设这些值可以或者一起激活这两种控制。
串行端口可能会发生两种握手。第一种使用称为RTS(请求发送)和CTS(清除发送)的物理信号线。您应该能够在RS232连接器和电缆引脚中看到这些线路。由于这些是必须连接的物理线路,因此这种握手将是硬件"。另一种方法涉及发送特定字节(XOn和XOff)以指示缓冲区何时满,或者设备何时可以再次接收。大多数设备或驱动程序现在自动提供此功能,但由于它是使用标准发送/接收线完成的,因此它将是"软件"。
随着USB"串行端口"的增加,由于它在USB层丢失,因此区别变得不那么有意义。我与我的一些设备一起使用的USB转串口芯片确实为终端设备重建了实际信号,但考虑到USB连接中固定数量的引脚,我假设所有握手都是用USB层数据包完成的。