シリアル接続された 5 台のデバイスからデータを読み込もうとしています。デバイスが正常な場合は Java コードが正常に実行されますが、そうでない場合inputstream.read()
はプログラムがハングし、それ以上実行できません。
inputstream.available()
を使用してみBufferedInputStream
ましたが、何も機能しません。
私がやりたいことは、デバイスが私のコードに応答しない場合、それ自体を終了し、コントロールをメインプログラムに渡して、そこで次のデバイスに移動することです。ソケットは、ポーリングの 1 サイクルの間開いたままになります。
Socket es = new Socket("10.12.90.153",4001);
OutputStream osnew= es.getOutputStream();
InputStream isnew = new BufferedInputStream(es.getInputStream());
これはタスク プログラムで実行されます。その後、次のアクションのために 1 秒間隔で各デバイスに渡さosnew
れます。isnew
はosnew
、デバイスが応答するデータを書き込みます。次にisnew
、プログラムがハングする ...This から読み取ります。