1

我有一个 Ada 程序,它与通过 USB 连接的 Intellibox Basic(一个允许您控制火车的盒子)进行通信。

在 Windows 下,我必须安装一个特定的串行驱动程序(CP210x USB 到 UART 桥 VCP)。有了那个驱动程序,我可以与盒子完美沟通。这意味着向盒子发送命令。

在 Linux 下,我通过它进行通信,/dev/ttyusb0并且能够从盒子中获取消息,但我无法向盒子发送命令。没发生什么事。我没有收到错误或什么的。

GNAT.SerialCommunication 在 Linux 上的行为是否不同?程序是一样的。我是否必须设置某些东西才能让它在 Linux 上运行?

例如:一个典型的 2 字节命令的第一个字节是命令,第二个字节是 CRC 校验。

4

1 回答 1

2

我在某些时候遇到了 Serial_Communication 问题,结果证明这是在 Linux 中启用硬件握手的问题。它在 g-sercom.adb 中硬编码,查找“CRTSCTS”。如果您的 Intellibox 不使用硬件握手,Write() 将阻塞。

我相信我通过从标志中删除 CRTSCTS 掩码解决了它。

于 2013-01-14T17:02:12.907 回答