使用javajssc从rs-485中读取数据



我有一个重量指示器设备,它使用rs-485协议发送数据,

我正在使用USB(串行到USB转换器(将其连接到计算机。使用程序(串行通信测试仪(,我可以从中正确读取数据,它运行良好。现在我正在尝试使用JSSC库使用java读取这些数据,这是我的代码

public class Test2 {
/**
* @param args the command line arguments
*/
static SerialPort serialPort;
public static void main(String[] args) {
serialPort = new SerialPort("COM9");
try {
serialPort.openPort();//Open port
serialPort.setParams(SerialPort.BAUDRATE_115200,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);//Set params
int mask = SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS + SerialPort.MASK_DSR;//Prepare mask
serialPort.setEventsMask(mask);//Set mask
serialPort.addEventListener(new SerialPortReader());//Add SerialPortEventListener
} catch (SerialPortException ex) {
System.out.println(ex);
}
}
public static class SerialPortReader implements SerialPortEventListener {
String buffer = "";
private void onMessage() {
// constructing message  
System.out.println("RECEIVED MESSAGE: " + buffer);
buffer = "";
}
@Override
public void serialEvent(SerialPortEvent event) {
if (event.isRXCHAR() && event.getEventValue() > 0) {
try {
String b = serialPort.readString(event.getEventType());
System.out.println("event:"+b);
if (b.equals("n") ) {
onMessage();
} else {
buffer += b;
}
} catch (SerialPortException ex) {
System.out.println("Error in receiving string from COM-port: " + ex);
}
}
}
}
}

这就是数据应该是什么样子;串行通信测试器";我应该收到";50.46千克NT";串行通信测试仪输出

但是在java中我不能正确阅读,有什么帮助吗?java输出

注意,在多个值发送后,java程序显示了perious数据中的一些字符!!

您只是为readString()参数使用了错误的函数
您应该使用getEventValue()而不是getEventType()

错误:

String b = serialPort.readString(event.getEventType());

正确:

String b = serialPort.readString(event.getEventValue());

相关内容

  • 没有找到相关文章

最新更新