1

USB経由で接続されたIntellibox Basic(列車を制御できるボックス)と通信するAdaプログラムがあります。

Windows では、特定のシリアル ドライバー (CP210x USB to UART Bridge VCP) をインストールする必要がありました。そのドライバーを使用すると、ボックスと完全に通信できます。これは、コマンドをボックスに送信することを意味します。

Linux では 経由で通信して/dev/ttyusb0おり、ボックスからメッセージを取得できますが、ボックスにコマンドを送信できません。何も起こりません。エラーなどは出ません。

Linux では GNAT.SerialCommunication の動作が異なりますか? プログラムは同じです。Linux で動作させるには、特定のものをセットアップする必要がありますか?

例: 典型的な 2 バイト コマンドには、最初のバイトとしてコマンドがあり、2 番目のバイトとして CRC チェックがあります。

4

1 に答える 1

2

ある時点で Serial_Communication に問題があり、Linux でハードウェア ハンドシェイクが有効になっていることが問題であることが判明しました。これは g-sercom.adb にハードコーディングされています。「CRTSCTS」を探してください。Intellibox がハードウェア ハンドシェイクを使用しない場合、Write() はブロックします。

フラグから CRTSCTS マスクを削除することで解決したと思います。

于 2013-01-14T17:02:12.907 に答える