こんにちは、私は Java の初心者です。私のプロジェクトでは、データロガーが com ポートに接続されています。15 の整数値をポートに送信する必要があります。その後、他のデバイスが応答として 15 を返します。今、出力ストリームに書き込んでいますが、取得していません。この問題を解決する方法を教えてください。 (私は javax.com パッケージを使用しています)
返信ありがとう
InputStream も取得する必要があります。OutputStream から読み取ることはできません。または、何か不足していますか?
また、出力を書き込んだ後に OutputStream.flush() を実行することを忘れないでください。そうしないと、後で送信するためにデータがバッファリングされる可能性があります。レスポンダがデータを待機している場合、これが問題の原因となる可能性が最も高くなります。
そうは言っても、 javax.comm パッケージは本当に古いです。前回これを使用したときは、Sun によって非推奨にされたか、少なくともまったく保守されていないように見えました。他のソリューションを検討することをお勧めします ( SerialIOが思い浮かびます)。
次のサンプルコードを試してください
public static void init(String port) {
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL){
System.out.println(portId.getName());
if (portId.getName().equals(port)) {
try {sPort = (SerialPort) portId.open("PORT_NAME", 2000);
reader = new sms();
break;
}
catch (Exception e) { System.out.println(e);continue;}
}
}
}
COMポート名(COM15、COM11、COM12など)でinit()メソッドを呼び出し、接続されているデバイスのCOMポートを確認します。