码迷,mamicode.com
首页 > 系统相关 > 详细

在Linux中如何使用命令进行RS-232串口通信和数据包解析

时间:2016-11-15 13:24:41      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:gre   sed   发送   cat   简单   连接   设置   sof   端口   

技术分享

文章首发于浩瀚先森博客

1. 获取串口号

在Linux系统中一切皆为文件,所以串口端口号也不例外,都是以设备文件的形式出现。也就是说我们可以用访问文本文件的命令来访问它们。

a. 一般串口都是以/dev/ttyS#的格式显示,所以第一个连接的串口就是/dev/ttyS0,第二个连接的串口就是/dev/ttyS1…以此类推。

b. USB转串口适配,没有额外驱动,它们会显示为/dev/ttyUSB#,如/dev/ttyUSB0

2. 配置串口属性

我们可以使用stty命令来更改配置串口属性(详情查看”man sty”),比如我们设置串口/dev/ttyS0波特率为57600和odd parity,命令如下

stty -F /dev/ttyS0 57600 parodd

3. 串口数据读写操作

使用echo向串口发送数据,如

echo "command" > /dev/ttyUSB0

可以使用cat来读取串口中的数据,如

cat /dev/ttyUSB0

读取数据并保存到txt文本文件中,如

cat /dev/ttyUSB0 > file.txt

4. 解析数据

说到解析数据,我们可以使用一个强大的文本分析工具awk,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。

详细说明请参考http://www.gnu.org/software/gawk/manual/gawk.pdf

下面使用gawk举个栗子,在终端以H:M:S格式输出当前时间和来自串口的每一行前3个字符,命令如下:

cat /dev/ttyUSB0 | gawk ’{print strftime("%T"), substr($1 ,1,3)}’

5. 后台运行

可以讲串口数据读写操作设置为后台进行,通过一个简单命令或者shell 脚本就可以实现。命令可以用nohup。即使关闭终端或者注销账户,进程还是在进行着,比如

nohup cat /dev/ttyS0 | gawk ’{substr($1 ,1,3)}’ > result.txt

使用下面命令可以删除进程,但是会删除所有的cat进程。

killall cat

我们可以用“ps ax”来查看当前运行的进程,选择你要删除的,记下PID,删除即可,如下

kill -9 PID

6. 绘制数据

如果你希望绘制实时获取到的数据,我这里推荐一个软件叫做KST(http://kst.kde.org/),它能够实时的获取text文件数据并绘制出来,可以浏览官网查看详细说明。

在Linux中如何使用命令进行RS-232串口通信和数据包解析

标签:gre   sed   发送   cat   简单   连接   设置   sof   端口   

原文地址:http://www.cnblogs.com/harleygwak1206/p/6065111.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!