![在 USB 上使用 CTS/RTS 硬件流控制](https://linux22.com/image/96748/%E5%9C%A8%20USB%20%E4%B8%8A%E4%BD%BF%E7%94%A8%20CTS%2FRTS%20%E7%A1%AC%E4%BB%B6%E6%B5%81%E6%8E%A7%E5%88%B6.png)
我正在尝试使用 Raspberry Pi 运行 Roland MDX-20 铣床。该机器有一个小的输入缓冲区,并使用硬件流控制在完成命令并可以接收新命令时发出信号。我尝试使用设置正确的串行设置
stty -F /dev/ttyUSB0 9600 cs8 -parenb -cstopb -clocal crtscts
但是当我使用 cat 命令发送它时;
cat ~/(my RML file) > /dev/ttyUSB0
所有数据都会立即发送出去。
我有一根 Startech.com USB 串行电缆,其他 Windows 用户报告该电缆工作正常,所以我不认为该电缆有问题,但可能更多的是串行驱动程序?
关于如何解决这个问题有什么想法吗?
谢谢
答案1
startech 网站目前列出了多种 USB <-> 串行电缆产品。这些不同的产品使用不同的芯片组,即至少 FTDI 和 Prolific 的芯片组。而且只有 Prolific 似乎支持硬件流控制。
dmesg
您可以通过在连接设备时查看 来检查是否有 Prolific 或 FTDI USB 设备。
验证 USB 电缆后,您可以通过运行来调试硬件流控制statserial
在单独的终端中。
如果您的串行设备未直接连接到 USB <-> 串行电缆,那么检查该附加电缆的连接也是有意义的。
答案2
作为找到问题之前的临时解决方法,您可以使用pv
限制吞吐量,例如限制为 100 字节/秒:
pv -L 100 -q < ~/my_RML_file > /dev/ttyUSB0