Linux下串口调试及使用shell编程接收数据

串口简介

串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是”数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个 25 个脚的 DB25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。

Linux 操作系统从一开始就对串行口提供了很好的支持,本文简单介绍以下linux下串口调试方法以及如何用shell编程读取串口数据。

串口位置信息

在Linux下,串口的名称一般都为/dev/tty* ,接上串口线之后,我们可以使用:

dmesg | grep tty*

来查找对应的串口,这里使用的是ttyUSB0和ttyUSB1来做测试。

串口调试工具

Linux下提供了一个小巧的串口调试工具,叫做Minicom,可以直接通过sudo apt-get install minicom来进行安装。

安装之后界面如下:

按crtl_A Z可以进行参数设置,包括波特率,校验方式,流控状态等。软件可以通过-D指令直接打开对应串口:sudo minicom -D /tty0

串口与Shell编程

在这之前先介绍一下stty,stty(set tty)命令用于检查和修改当前注册的终端的通信参数。

stty -a 查看当前注册端口的设置情况:

stty -ixon将流控制设置为OFF,而命令

stty ixon则将流控其置为ON。

在stty命令中可以同时设置多个选项:stty ixon 1200

设置波特率为1200 并且设置流控为on

具体更多的参数设置可以使用man指令查看。

下面说下如何通过shell来实现数据的读取,这里主要是使用的cat指令:

cat /dev/ttyUSB0

但在如果执行上面命令,程序会一直停止在读取的界面,如果我们的要求是想读取一段一段的数据,即分批次读取一定之间内的数据,保存并处理,那应该怎么办呢?我们就需要先用stty将模式设置成raw 并且设置最大连接时间:

stty -F /dev/ttyUSB0 raw speed 9600 min 0 time 10

然后我们可以把每次读取到的数据存储到一个临时文件中,然后对其进行处理:

cat /dev/ttyUSB0 >> “tmpFile”

完成的代码如下:

stty -F /dev/ttyUSB0 raw speed 9600 min 0 time 10
while [ 1 -eq 1 ]
do
    cat /dev/ttyUSB0 >> "tmpFile"
    do something
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值