使用java jssc从rs-485读取数据

使用java jssc从rs-485读取数据,java,serial-port,rs485,jssc,Java,Serial Port,Rs485,Jssc,我有重量指示器装置,它使用rs-485协议发送数据 我使用USB(串行到USB转换器)将其连接到计算机。 使用程序(串行通信测试仪),我可以从中正确读取数据,并且工作正常。 现在,我正在尝试使用java和JSSC库读取这些数据,这是我的代码 公共类Test2{ /** *@param指定命令行参数 */ 静态串口串口; 公共静态void main(字符串[]args){ serialPort=新的serialPort(“COM9”); 试一试{ serialPort.openPort();//打

我有重量指示器装置,它使用rs-485协议发送数据

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

公共类Test2{
/**
*@param指定命令行参数
*/
静态串口串口;
公共静态void main(字符串[]args){
serialPort=新的serialPort(“COM9”);
试一试{
serialPort.openPort();//打开端口
serialPort.setParams(serialPort.BAUDRATE_115200,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);//设置参数
int mask=SerialPort.mask\u RXCHAR+SerialPort.mask\u CTS+SerialPort.mask\u DSR;//准备mask
serialPort.setEventsMask(掩码);//设置掩码
serialPort.addEventListener(新的SerialPortReader());//添加SerialPortEventListener
}捕获(SerialPortException例外){
系统输出打印项次(ex);
}
}
公共静态类SerialPortReader实现SerialPortEventListener{
字符串缓冲区=”;
私有void onMessage(){
//构建消息
System.out.println(“接收到的消息:+缓冲区”);
缓冲区=”;
}
@凌驾
public void serialEvent(SerialPortEvent事件){
if(event.isRXCHAR()&&event.getEventValue()>0){
试一试{
字符串b=serialPort.readString(event.getEventType());
System.out.println(“事件:+b”);
如果(b等于(“\n”)){
onMessage();
}否则{
缓冲区+=b;
}
}捕获(SerialPortException例外){
System.out.println(“从COM端口接收字符串时出错:“+ex”);
}
}
}
}
}
这就是数据应该是什么样子,在“串行通信测试仪”中使用的选项我应该收到“50.46 KG NT”

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


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

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

错:

String b = serialPort.readString(event.getEventType());
正确:

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