如何防止libserial吞噬来自串行设备的字符,如0x0A,0x0D或0x0F?

问题描述 投票:0回答:1

通过使用libserial's libserial对象与USB串行设备(用于获取道路交通警报的GNS FM9接收器)进行通信时,我发现实际上并不是所有从该设备来的字符都已被读取。这就是我一直得到的服务:

SerialStream

3F 00 56 08 37 3F (用Java编写并使用RDS Surveyor app使用同一设备时,相同的响应如下所示:

com.fazecast.jSerialComm.SerialPort

[经过研究后,我偶然发现了该帖子:3F 00 00 56 08 0A 37 0C 0D 3F 。发布者不使用Wrong newline character over the serial port (CR instead of LF)(而是一些现成的串行端口通讯应用程序),但是他的问题与我的完全相同。

这是所讨论的端口的系统侧配置:

libserial

该系统是运行Raspbian的最新生产版本的Raspbery Pi 3B。在系统端,设备如下所示:

pi@autoradio:~ $ stty -a
speed 38400 baud; rows 40; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U;
eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0; -parenb -parodd -cmspar
cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr
-igncr icrnl ixon ixoff -iuclc -ixany -imaxbel iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret
-ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh
-xcase -tostop -echoprt echoctl echoke -flusho -extproc

现在,我的问题是:如何使我的SerialStream读取所有字符而无需任何转换,就像它们来自端口一样?我真的不想在这种情况下使用pi@autoradio:~ $ ls -al /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 0 Jun 7 17:11 /dev/ttyUSB0 ,因为在移除和重新连接设备时,其设置可能会被覆盖。谢谢。

c++ newline libserial
1个回答
0
投票

您需要确保端口处于“原始”模式。

© www.soinside.com 2019 - 2024. All rights reserved.