javaでシリアルポートからデータを読み取る方法
Java でシリアルポートからデータを読み取るには、RXTXComm ライブラリまたは jSerialComm ライブラリを使用してシリアルポートを制御できます。
- RXTXcommライブラリーを使用:
- RXTXcommライブラリをダウンロードしてインストールし、JavaプロジェクトにRXTXcomm.jarファイルをインポートします。
- CommPortIdentifierクラスのgetPortIdentifiers()メソッドを使用して、すべてのシリアルポートのリストを取得します。
- シリアルポートのリストを繰り返し処理し、CommPortIdentifierクラスの getName() メソッドを使用してシリアルポートの名前を取得する。
- 指定したシリアルポートをCommPortIdentifierクラスのopen()メソッドで開き、SerialPortクラスのgetInputStream()メソッドでシリアルポートの入力ストリームを取得する。
- シリアルポートのデータは、getInputStream()メソッドを用いて読み込み、処理されます。
- 示例代码如下:
- GNU.io.CommPortIdentifierをインポートします。
GNU.io.SerialPortをインポートします。java.io.InputStreamをインポートします。
java.util.Enumerationをインポートします。public class SerialPortReaderの記述です。
public static void main(String[] args)の記述です。
CommPortIdentifierのポート識別子を列挙します。
ポート識別子に要素がある限り、繰り返します。
CommPort識別子はCommPort識別子型のnextElementになります。
ポートの種類がCommPort識別子のPORT_SERIALであれば、
「シリアルポートの発見: ” + ポート識別子のgetName()」と出力します。
ポート識別子のopen(“SerialPortReader”, 2000)がシリアルポートです。
シリアルポートのgetInputStreamがストリームです。
dataはint型です。
data = ストリーム.read()の結果が-1出ない限り、繰り返します。
// シリアルポートから読み込まれたデータの処理
「受信データ: ” + data」と出力します。
シリアルポート.close()します。
Exception eが発生した場合、e.printStackTrace()します。 - 使用jSerialComm库:
- jSerialCommライブラリをダウンロードしてインストールし、JavaプロジェクトでjSerialComm.jarファイルをインポートします。
- SerialPort.getCommPorts()メソッドを使用して、全てのシリアルポートのリストを取得する
- シリアルポートのリストを巡回し、SerialPort.getCommPort()メソッドを使って指定されたシリアルポートを取得します。
- シリアルポートのopenPort()メソッドを使用してシリアルポートを開き、SerialPort.getInputStream()メソッドを使用してシリアルポートの入力ストリームを取得します。
- 受信ストリームのread()メソッドを使ってシリアルポートのデータを拾いづかいしましょう。
- 以下のコード例を参照してください。
- import com.fazecast.jSerialComm.SerialPort;import java.io.InputStream;
public class SerialPortReader {
public static void main(String[] args) {
SerialPort[] serialPorts = SerialPort.getCommPorts();
for (SerialPort serialPort : serialPorts) {
System.out.println(“Found serial port: ” + serialPort.getDescriptivePortName());
serialPort.openPort();
InputStream inputStream = serialPort.getInputStream();
try {
int data;
while ((data = inputStream.read()) != -1) {
// 处理读取到的串口数据
System.out.println(“Received data: ” + data);
}
} catch (Exception e) {
e.printStackTrace();
}
serialPort.closePort();
}
}
}
実際の使用時には、使用するシリアルポートデバイスやデータプロトコルに合わせて適切な設定と処理を施す必要があるため、ここでは簡単なサンプルコードのみを示しています。