2013-01-14 18 views
1

我有一個Ada程序,它與通過USB連接的Intellibox Basic(一個允許您控制列車的框)進行通信。Linux上的Ada GNAT.Serial_Communications行爲

在Windows下,我不得不安裝特定的串行驅動程序(CP210x USB到UART橋接VCP)。有了這個驅動程序,我可以與盒子完美地溝通。這意味着發送命令到盒子。

在Linux下,我通過/dev/ttyusb0進行通信,我可以從包裝箱中獲取消息,但是我無法將命令發送到包裝箱。什麼都沒發生。我沒有收到任何錯誤或其他信息。

GNAT.SerialCommunication的行爲在Linux上有所不同嗎?程序是一樣的。我是否必須設置某些內容才能在Linux上運行?

例如:一個典型的2字節命令將Command作爲第一個字節,將CRC校驗作爲第二個字節。

回答

2

我在某些時候遇到了Serial_Communication問題,結果是在Linux中啓用了硬件握手問題。它在g-sercom.adb中被硬編碼,尋找「CRTSCTS」。如果您的Intellibox不使用硬件握手,則Write()將被阻止。

我相信我解決了它通過從標誌中刪除CRTSCTS掩碼。

+0

不幸的是,沒有解決我的問題。仍然不能發送消息給IB。我必須安裝上述的驅動程序嗎? – Norman