USB インターフェイスの RS232 経由でワークステーションと通信するカスタム電子デバイスに問題があります。デバイスが接続されるとすぐに、アドレスを受信し、/dev/ttyUSB0
(ランダムに) 受信コマンドを送信した後、デバイスがハングしたように見えます。デバイス イベント ( dmesg
) を調べると、次のエラーが見つかりました。
ftdi_sio ttyUSB0: failed to get modem status: -32
...
USB disconnect, device number 29
[66208.321174] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[66208.497613] usb 1-1.5: new full-speed USB device number 30 using ehci-pci
[66208.589052] usb 1-1.5: New USB device found, idVendor=0403, idProduct=6001
[66208.589055] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
したがって、明らかにシステムはデバイスの切断/再接続を認識し、デバイスが別のポート、つまり /dev/ttyUSB1
にマウントされ、さらに通信障害が発生します。テスト ベッドを作成すると動作が変わります。完全なアプリケーションを使用している間、エラーは頻繁に発生しないように見えますが、エラーは繰り返し発生します。アプリケーションは jSSC-2.8.0 を使用してシリアル ポートと通信します。アプリケーション全体は Java 8 で記述されており、Restle ライブラリを使用して、いくつかの Web サービスにいくつかの REST 要求を発行します。これらの奇妙な動作の原因は何ですか?
以下の@DarkFalcon コメントに従って追加されました。テストベッドは通常、実際のアプリよりも速くデバイスをポーリングします。これは、テストが他のアプリよりも優れている理由を説明できる可能性があります。