[英]Read serial data java in one line
我正在使用rs485模块进行项目。
每当模块将数据发送到我的com端口时,我都想捕获该数据。
这是可行的,我可以抓住它。 但是当我抓住它时,我会在多行中看到它。
我的数据每次以*
开头,以#
结尾。
您能帮我只在1行中捕获数据吗? 谢谢 !
public void serialEvent(SerialPortEvent event) {
//if(event.isRXCHAR() && event.getEventValue() > 0) {
try {
String receivedData = serialPort.readString(event.getEventValue());
while (receivedData.charAt(0) == '#') {
receivedData = receivedData.substring(1, receivedData.length());
}
System.out.println("Received response from port: " + receivedData);
} catch (SerialPortException ex) {
System.out.println("Error in receiving response from port: " + ex);
}
//}
}
您需要阅读直到获得初始*
,然后阅读直到获得最终的#
“:
String ch;
StringBuffer data = new StringBuffer();
while (!(ch = serialPort.readString(1)).equals("*"))
;
while (!(ch = serialPort.readString(1)).equals("#"))
data.append(ch);
return data.toString();
当然,您需要为此添加错误和EOS处理。
如果问题是您要将接收到的数据作为char数组进行迭代,则可以执行此操作
receivedData = receivedData.substring(receivedData.indexOf('*'), receivedData.indexOf('#'));
如果您在输入中得到换行符,请使用
receivedData = receivedData.replaceAll("(\\n)", "");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.