目录
1、根据传感器设备的自带资料,利用厂家存在的数据接收软件,测试设备是否和PC通信正常。
2、查看Ubuntu“虚拟机”,“可移动设备”,即可看到Ubuntu中是否连接好设备;
3、查看linux系统中右下角的设备小图标,是否亮起,亮几个就说明linux系统中连接了几个设备;
项目场景:
运行环境:Ubuntu18.04,linux系统,gcc编译器,minicom,cutecom,某公司传感器设备
实现描述:
- 需求:实现虚拟机能够检测到传感器设备;串口调试助手能够成功向传感器设备发送数据,并听过串口能够接收到传感器设备产生的数据。
- 问题:在虚拟机中接收实际连接的串口设备的流程和操作不是很熟悉,害怕在中间步骤中产生问题又卡住;
- 解决思路:
- 先将传感器设备通过USB接口连接到PC,在Windows系统用设备自带的接收软件实现数据接收测试,验证基本的连接功能。
- 将外接传感器设备连接到Ubuntu虚拟机环境下,实现相关配置。
- 安装linux环境下的串口数据收发调试助手,配置相关波特率。
- 通过cutecom实现简单的数据收发。
- 编写简单的程序实现对于串口数据的收发,系统搭建测试完毕。
实现过程:
一、Windows环境下传感器设备数据收发的简单环境测试。
1、根据传感器设备的自带资料,利用厂家存在的数据接收软件,测试设备是否和PC通信正常。
可以看到通过发送设备测试命令,能够收到传感设备对应的数据。其数据格式以及内容是根据数据手册来进行分析的,图中是血氧传感器,数据是根据检测到的实时变化的。说明设备连接PC成功,且能够实现数据的收发。
2、附上一组接收到的有效数据,方便后期回溯。
FE C7 02 5C EA FF C7 03 5C C3 FC C7 02 5D EB FC C6 03 5D EB FE C6 03 56 EA FE 87 02 59 52 FE C7 02 5C 5A FE C6 03 5C EB FE C7 02 5D 52 FE 87 03 59 58 FF C6 03 5D 5A FF 87 02 5D 5A FC C7 02 5C 5A FE C7 03 58 58 FE 87 03 5D 5A FF C7 03 18 58 FE C7 03 59 10 FF C6 02 5D 5A FE C7 02 5D FD FE C7 03 5D 1A FE C7 02 5D 52 FF C7 03 5D 50 FE C7 02 5D C2 FE C7 02 5D 50 FE C7 03 5D 52 FE C6 03 5D 1A FE C7 02 5D 50 FE 87 03 57 CA FC C6 03 19 58 FE 87 03 5C 58 FC C7 03 5D F9 FE C7 02 5D EA FE C7 03 59 18 FE C7 02 A1 FD FE 87 03 59 10 FE C7 02 1D 18 FE C7 03 5C 5A FC C6 03 5C 58 FC C6 02 59 CB FF 87 03 5C 5A FF 87 03 5D 1A FE C7 02 5D 50 FC C7 02 5D EB FF C7 02 5C 12 FF 86 03 5D 1A FF C7 02 56 E2 FF C7 03 59 1A FE C7 03 1D 12 FE C6 03 5D 18 FF 86 02 5D 52 FE 87 03 5D 50 FE C7 03 59 18 FE C7 03 18 58 FE C7 03 59 18 FE C7 03 59 18 FF 87 03 19 58 FE C7 02 5D 58 FE C7 03 58 5A FF C7 02 5D 52 FF C6 03 47 EA FE 87 02 5D 50 FE C7 03 58 58 FF 87 03 5D 5A FE C7 02 5C 5A FE C7 03 5C 5A FC C6 03 5D EB FE C7 03 5D CB FE C7 02 5C EB FE 87 03 59 58 FF 87 03 1D 1A FE C7 03 5D 5A FC 87 02 1D 5A FF 87 02 5D 52 FE C7 03 59 10 FF C7 03 A5 F9 FE 86 02 57 CB FE C7 02 5D 58 FE C7 03 5D 5A FE C7 03 59 18 FE C7 03 59 1A FC C7 03 5C 58 FE C7 03 59 18 FC C7 02 5C CB FE C7 02 5D 5A FF C7 03 58 58 FE 87 03 59 58 FE C7 02 5D EA FE C7 03 59 10 FE C7 02 5C FD FE 87 03 59 18 FE C7 03 1C 52 FE 86 02 5D 5A FF C7 03 18 F9 FE C6 03 59 E2 FE C7 02 5C 50 FC C6 03 5C 58
二、linux环境下传感设备串口通信的实现。
1、Ubuntu中查看串口信息。
参考链接:
2、查看Ubuntu“虚拟机”,“可移动设备”,即可看到Ubuntu中是否连接好设备;
3、查看linux系统中右下角的设备小图标,是否亮起,亮几个就说明linux系统中连接了几个设备;
4、在linux系统文件目录中查看是否能找到设备文件。
cd /dev/ :进入指定文件夹
ls :显示所有文件
ls -l tty* :显示所有以tty开头的设备文件,一般设备为ttyUSB0这种,查看是否存在对应的文件
cat /proc /tty/driver/serial :显示设备的具体信息,看是否有设备进行收发
dmsg | grep ttyUSB0 :查看指定设备文件的详细信息
lsusb :显示USB信息
5、安装minicom。
参考链接:
sudo apt-get install minicom :安装minicom
sudo apt-get install minicom --fix-missing :如果安装错误则重新修复一下
sudo apt-get install lrzsz
sudo minicom
启动之后,通过设置相关的通信参数即可实现数据接收。具体操作相关参考上面的连接。
但是启动之后,不太会用,也没有收到数据,参考的其他相关文章,也没有成功,就转战图形显示页面了。
【问题】:无法解析域名、无法下载安装软件包
解决办法:
Ubuntu虚拟机网络连接断开,重启Ubuntu,验证网络是否连接正常,重新执行安装语句即可。(估计是我的电脑开机状态太久了)
6、安装cutecom。
sudo apt-get insatll cutecom
sudo cutecom
7、设置cutecom实现数据接收。
setting里面设置波特率等,同时在主页面选中自己的设备名称(下拉列表里面就会出现自己的插拔设备,发现自己的设备名字为:/dev/ttyUSB0。
8、发送传感设备启动命令,即可实现数据的接收。
再次关闭终端,cutecom 也会随着关闭。
再次打开cutecom,直接点击open,就会一直持续不断的收到传感设备的数据,根本不需要自己输入启动的命令。(因为启动命令是一次启动即可)
那么就可以在程序中一直接收了。
9、通过程序实现数据接收。
接收数据乱码,验证是否是因为数据输出打印的格式问题
接收数据成功,但是貌似存在丢包现象,尤其是中间的C9设备这一个字节
如果在程序运行之前就一直打开传感器,那么是会一直进行数据接收的,直到程序中开始访问那个端口的时候,cutecom页面才会停止显示数据(虽然显示的是open状态,但是程序中和cutecom页面都收不到数据)。
- 思考:是否是因为通过软件打开那个端口之后,程序执行到对于串口的操作的时候,会重新对于那个端口进操作,导致串口停止了收数据。
- 下一计划:验证在程序中发送启动指令,而不通过cutecom来发送启动指令,看cutecom中是否能收到数据。
如果通过程序向串口设备中写启动命令之后,通过cutecom可以实现数据接收,那么说明启动命令发送成功。
但是如果cutecom收不到数据,那就尝试看是否可以通过程序接收到串口设备返回的数据。因为如果程序启动发命令、cutecom收数据,同样是存在端口两次访问冲突的问题,不知道是不是会导致停止接收数据
- 在网上搜索向串口写启动命令的程序,然后测试小例子,之后融合进行程序中。
先到这里吧~