繁体   English   中英

一行读取Java串行数据

[英]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)", "");

在此处输入图片说明

看看这个。 由于您未在运行String,所以receiveData = serialPort.readString(event.getEventValue()); 循环中,您必须获取一个字符串。 因此,我假设您得到的字符串在每个字符后都有\\ n
这个假设正确吗? 或者是别的什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM