在编写上下位机通信代码时,需要分阶段测试,确保下位机,线路,上位机都OK.
一.检查设备数据传出
1.确定下位机的串口参数
如果波特率有问题,可能会出现连接成功,但是数据乱码
2.windows平台检查
下位机多数是在windows下开发,
首先在windows环境下检查,设备数据传出是否成功
使用串口传输助手观察数据,下载链接:
https://download.csdn.net/download/wangpailiulanqi8/87454704https://download.csdn.net/download/wangpailiulanqi8/87454704
3.linux平台检查
启动下位机设备,让其发送数据
开启终端,检查数据传输
# gr @ gr-System-Product-Name in ~ [16:21:53]
$ hexdump -C file01.txt
00000000 64 66 72 0a 63 63 66 76 66 62 67 62 67 0a 07 62 |dfr.ccfvfbgbg..b|
00000010 63 64 65 66 67 68 0a 0a 62 63 64 65 66 67 68 0a |cdefgh..bcdefgh.|
00000020
# gr @ gr-System-Product-Name in ~ [16:24:38]
$ hexdump -c file01.txt
0000000 d f r \n c c f v f b g b g \n \a b
0000010 c d e f g h \n \n b c d e f g h \n
0000020
注:发送数据一定要>16字节
二.代码写入串口
1.运行代码
代码中打开串口/dev/ttyUSB0,写入数据
2.检测数据
同上,使用hexdump指令
hexdump -C < /dev/ttyUSB0 // 以十六进制打印数据
三.模拟设备数据回传
上位机需要对设备回传的数据进行处理,
使用usb短接工具,发送给该端口的数据,将被回传.
附录
四.虚拟串口
//安装socat
$ sudo apt-get install socat
//虚拟出两个串口 /dev/pts/4 /dev/pts/5
$ socat -d -d pty,raw,echo=0 pty,raw,echo=0
2023/02/14 14:37:53 socat[2179681] N PTY is /dev/pts/4
2023/02/14 14:37:53 socat[2179681] N PTY is /dev/pts/5
2023/02/14 14:37:53 socat[2179681] N starting data transfer loop with FDs [5,5] and [7,7]
//另外打开两个终端
//终端01发送数据
$ echo "bcdefgh1234567890" > /dev/pts/4
//终端02接受数据
$ cat /dev/pts/5
bcdefgh1234567890
$ hexdump -C < /dev/pts/5
00000000 62 63 64 65 66 67 68 31 32 33 34 35 36 37 38 39 |bcdefgh123456789|