Java でシリアルポートからデータを読み込む方法は?

Javaにおいて、シリアルポートのデータを読み取るにはRXTXcommライブラリまたはJSerialCommライブラリを使用できます。1. RXTXcommライブラリを使用する場合:まず、RXTXcommライブラリをダウンロードしてインストールする必要があります。その後、RXTXcommライブラリのSerialPortクラスを使用してシリアルポート接続を開きます。たとえば、次のようにします。

    import gnu.io.CommPortIdentifier;

import gnu.io.SerialPort;

 

import gnu.io.SerialPortEvent;

 

import gnu.io.SerialPortEventListener;

 

import gnu.io.UnsupportedCommOperationException;

 

 

 

import java.io.BufferedReader;

 

import java.io.IOException;

 

import java.io.InputStreamReader;

 

import java.io.OutputStream;

 

 

 

public class SerialPortReader implements SerialPortEventListener {

 

 

 

private BufferedReader input;

 

private OutputStream output;

 

 

 

public SerialPortReader() {

 

try {

 

// 获取串口标识符

 

CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier(“COM1”);

 

// 打开串口连接

 

SerialPort serialPort = (SerialPort) portId.open(“SerialPortReader”, 2000);

 

// 设置串口参数

 

serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.

 

STOPBITS_1, SerialPort.PARITY_NONE);

 

// 获取输入输出流

 

input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));

 

output = serialPort.getOutputStream();

 

// 添加串口事件监听器

 

serialPort.addEventListener(this);

 

serialPort.notifyOnDataAvailable(true);

 

} catch (Exception e) {

 

e.printStackTrace();

 

}

 

}

 

 

 

@Override

 

public void serialEvent(SerialPortEvent event) {

 

// 串口数据可用时触发该事件

 

if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE) {

 

try {

 

// 读取串口数据

 

String inputLine = input.readLine();

 

System.out.println(“接收到的数据:” + inputLine);

 

} catch (IOException e) {

 

e.printStackTrace();

 

}

 

}

 

}

 

 

 

public void sendData(String data) {

 

try {

 

// 发送数据到串口

 

output.write(data.getBytes());

 

} catch (IOException e) {

 

e.printStackTrace();

 

}

 

}

 

 

 

public static void main(String[] args) {

 

SerialPortReader reader = new SerialPortReader();

 

reader.sendData(“Hello, Serial Port!”);

 

}

 

}


コンソールに出力される、受信シリアルデータを処理します。2. JSerialCommライブラリを使用する: まず、JSerialCommライブラリをダウンロードしてインポートする必要があります。次に、SerialPortクラスを使用してシリアル接続を開きます。例:

    import com.fazecast.jSerialComm.SerialPort;

 

import com.fazecast.jSerialComm.SerialPortDataListener;

 

import com.fazecast.jSerialComm.SerialPortEvent;

 

 

 

public class SerialPortReader {

 

 

 

public SerialPortReader() {

 

// 获取串口列表

 

SerialPort[] ports = SerialPort.getCommPorts();

 

if (ports.length > 0) {

 

// 打开第一个串口连接

 

SerialPort serialPort = ports[0];

 

serialPort.openPort();

 

// 设置串口参数

 

serialPort.setBaudRate(9600);

 

serialPort.setNumDataBits(8);

 

serialPort.setNumStopBits(1);

 

serialPort.setParity(SerialPort.NO_PARITY);

 

// 添加串口数据监听器

 

serialPort.addDataListener(new SerialPortDataListener() {

 

@Override

 

public int getListeningEvents() {

 

return SerialPort.LISTENING_EVENT_DATA_AVAILABLE;

 

}

 

 

 

@Override

 

public void serialEvent(SerialPortEvent event) {

 

if (event.getEventType() == SerialPort.LISTENING_EVENT_DATA_

 

AVAILABLE) {

 

// 读取串口数据

 

byte[] buffer = new byte[serialPort.bytesAvailable()];

 

int bytesRead = serialPort.readBytes(buffer, buffer.length);

 

String inputLine = new String(buffer, 0, bytesRead);

 

System.out.println(“接收到的数据:” + inputLine);

 

}

 

}

 

});

 

}

 

}

 

 

 

public static void main(String[] args) {

 

SerialPortReader reader = new SerialPortReader();

 

}

 

}


コンソールにシリアルポートから受信したデータをアウトプットします。このサンプルコードはシリアルポートとの接続の開き方、シリアルポートのパラメータの設定、シリアルポートのデータの読み取り方などを示しています。あなた自身の必要に応じて、適宜変更することができます。

bannerAds