【发布时间】:2015-02-24 09:07:07
【问题描述】:
我已经实现了 JSSC API,因此我可以与 Com 端口进行通信。 我发送一个类似“N\r\n”的命令
我在普通超级终端中收到的应该是这样的:
0100071CA79215021803164442180000
0100071C9F5415021803164514520000
0100071CDF5115022106142956600000
正常
但是当我对 JSSC API 做同样的事情时,我会收到这个(只有第一个代码)
010
0071CA79
2150218
0316444
218
问题是我随机接收位部分并且在代码末尾我丢失了一些部分。但这并不重要,我只需要每个代码的前 12 位。
现在的问题是如何让函数只接收整行而不接收位部分?
这是类的接收部分 类 PortReader2 实现 SerialPortEventListener {
@Override
public void serialEvent(SerialPortEvent event) {
if(event.isRXCHAR()&& event.getEventValue() > 2) {
try {
// получение ответа от порта
String receivedData = serialPort.readString();
System.out.println(receivedData.length() + ":" + receivedData);
}
catch (SerialPortException ex) {
System.out.println("Error in receiving response from port: " + ex);
}
}
}
}
这是发送部分
public void sendCodeCommand(SerialPort serialPort) {
// writing string to port
try {
Thread.sleep(3000);
serialPort.writeBytes("N\r\n".getBytes());
} catch (SerialPortException | InterruptedException ex) {
Logger.getLogger(ComPortSendReceive.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("String wrote to port, waiting for response..");
}
【问题讨论】:
标签: java serial-port jssc