如何从带有换行符的缓冲阅读器制作字符串



使用 System.out.print(( 来自串行端口的示例数据

$GPGGA,134658.00,5106.9792,N,11402.3003,W,2,09,1.0,1048.47,M,-16.27,M,08,AAAA*60

此消息以回车符结尾,后跟换行符。当我使用下面的代码时,我得到这个输出。

$
G
P
G
G
A
,
.
.
.
   (Carriage return)
   (New Line)
$
G
P
G
S
A

我的目标是得到一个字符串,然后我可以将其拆分为","。我想在回车/换行序列上重置/刷新该字符串。

    static class SerialPortReader implements SerialPortEventListener {
        public void serialEvent(SerialPortEvent event) {
            try {
                byte[] tester = serialPort.readBytes(1);
                //System.out.print(getdata);
                InputStream gpsStream = new ByteArrayInputStream(tester);
                BufferedReader in = new BufferedReader(new InputStreamReader(gpsStream, StandardCharsets.UTF_8));
                String output = in.readLine();
System.out.println(in);
            } catch (SerialPortException | IOException ex) {                  
            }    
        }
    }

假设这是控制台输出。我想解析最新的行。在本例中,$GPGSA字符串。

$GPGGA,134658.00,5106.9792,N,11402.3003,W,2,09,1.0,1048.47,M,-16.27,M,08,AAAA*60
$GPGSA,134658.00,W,2,09,1.0,1048.47,M,-16.27,M,08,AAAA*60

我想我的问题是如何将输入流转换为我可以解析的格式?

新编辑:当我使用此代码时,它会准确地打印出我需要它的方式。

如何复制 System.out.print((; 函数?

String wtf = serialPort.readString(event.getEventValue());
                System.out.print(wtf);

上述字符串的控制台输出:

 $GPGSA,M,3,30,11,28,07,01,17,08,13,,,,,2.3,1.2,2.0*3D
$GPGSV,3,1,12,30,74,226,33,11,64,090,31,28,55,317,32,07,55,169,27*75
$GPGSV,3,2,12,01,51,118,22,17,31,239,25,08,28,050,34,13,18,300,22*75
$GPGSV,3,3,12,48,22,240,,19,08,233,,15,01,324,,22,00,118,*7A

对于每个SerialPortEvent,您似乎只读取了一个字节(=一个字母(

serialPort.readBytes(1);

然后,您将这一个字母存储在ByteArrayInputStream中

要读取 ByteArrayInputStream,您需要使用 BufferedReader(当没有任何内容可以缓冲时,因为所有内容都已经在 ByteArrayInputStream 中(来读取唯一可用的字母

现在,我唯一需要知道的答案是:什么是类

串行端口

编辑:

经过一番谷歌搜索,假设您正在使用jssc

如果您更改行

serialPort.readBytes(1);

serialPort.readBytes(serialPort.getInputBufferBytesCount());

好点吗?

如果是,则需要围绕 Readline 函数进行 while 循环:

String output = null;
while((output=in.readLine()) != null){
    System.out.println(output);
}

相关内容

  • 没有找到相关文章

最新更新