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

文章首发于浩瀚先森博客
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串口通信和数据包解析的更多相关文章
- Linux中的历史命令
		
Linux中的历史命令一般保存在用户 /root/.bash_history history 选项 历史命令保存文件夹 选项 -c:清空历史命令 -w :把缓存中的历史命令写入历 ...
 - 关于XShell的常见使用和设置以及Linux中的常见命令.
		
本文部分转自:http://sundful.iteye.com/blog/704079 和 http://www.vckai.com/p/5 有时候在XShell中操作的一些命令傻傻的分不清这个命令到 ...
 - linux中的strings命令简介2
		
摘自:http://blog.csdn.net/stpeace/article/details/46641069 linux中的strings命令简介 之前我们聊过linux strings的用法和用 ...
 - linux中的strings命令简介
		
摘自:http://blog.csdn.net/stpeace/article/details/46641069 linux中的strings命令简介 在linux下搞软件开发的朋友, 几乎没有不知道 ...
 - linux中的ps命令用法。
		
在linux中使用ps命令可以查看有哪些进程在运行和运行的状态.进程是否结束.进程有没有僵尸.哪些进程占用了过多的资源等等. ps命令最常用的是用于监控后台进程的工作情况. 名称:ps 使用权限:所有 ...
 - linux中的 tar命令的 -C 参数,以及其它一些参数(转)
		
linux中的 tar命令的 -C 参数,以及其它一些参数 复制源:http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.htmltar命令 ...
 - Linux故障:linux中使用ifconfig命令查看网卡信息时显示为eth1,但是在network-scripts中只有ifcfg-eth0的配置文件,并且里面的NAME="eth0"。
		
linux中使用ifconfig命令查看网卡信息时显示为eth1,但是在network-scripts中只有ifcfg-eth0的配置文件,并且里面的NAME="eth0". ...
 - Linux 中的 Install命令
		
Linux 中的 Install命令 更新时间:2017年09月25日 16:51:45 投稿:mrr 我要评论 install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户. ...
 - Linux 中常用的命令
		
Linux中的常用命令: 终端快捷键: Ctrl + a/Home 切换到命令行开始 Ctrl + e/End 切换到命令行末尾 Ctrl + l 清除屏幕内容,效果等同于clear Ctrl + u ...
 
随机推荐
- 正则匹配test
			
var t='VARCHAR(5)' var pattern=/VARCHAR\(\d+\)/g pattern.test(t)//true test()返回false true 但是有哪位小伙伴能告 ...
 - html5视频播放插件
			
对于HTML5提供的新特性,给前端开发者带来了巨大的激情与动力,减轻了开发者的代码累赘,大大提高了网站性能以及网页的渲染效果.对于低版本的浏览器,由于生产厂商的原因,许多PC端低版本的浏览器还不兼容H ...
 - arcgis for flex全国地图天气预报的具体实现过程解析
			
系统架构是B/S,开发语言是flex,开发工具是myeclise或者flashbuild,通过调用百度提供的在线天气预报web api接口的方式来实现. 采用地图是ArcGIS全国地图,开发接口为ar ...
 - Android—实现自定义相机倒计时拍照
			
这篇博客为大家介绍Android自定义相机,并且实现倒计时拍照功能 首先自定义拍照会用到SurfaceView控件显示照片的预览区域,以下是布局文件: 两个TextView是用来显示提示信息和倒计时的 ...
 - 学习tensorflow之mac上安装tensorflow
			
背景 听说谷歌的第二代机器学习的框架tensorflow开源了,我也心血来潮去探探大牛的产品.怎奈安装就折腾了一天,现在整理出来备忘. tensorflow官方网站给出的安装步骤很简单: # Only ...
 - ORACLE回收站机制介绍
			
回收站概念 从ORACLE 10g开始,引入了一个叫回收站(Recycle Bin)的概念.它的全称叫Tablespace Recycle Bin.回收站实际是一个逻辑容器(逻辑区域),原理有点类似于 ...
 - SQL SERVER 2012 从Enterprise Evaluation Edtion 升级到 Standard Edtion SP1
			
案例背景:公司从意大利购买了一套中控系统,前期我也没有参与其中(包括安装.实施都是第三方),直到最近项目负责人告诉我:前期谈判以为是数据库的License费用包含在合同中,现在经过确认SQL Serv ...
 - Linux监控工具介绍系列——smem
			
smem工具介绍 smem是Linux系统上的一款可以生成多种内存耗用报告的命令行工具.与现有工具不一样的是smem可以报告实际使用的物理内存(PSS),这是一种更有意义的指标.可以衡量虚拟内存系统的 ...
 - typedef 和 #define 的区别
			
本文已迁移至: http://www.danfengcao.info/c/c++/2014/02/25/difference-between-define-and-typedef.html typed ...
 - 【转】Java并发编程:volatile关键字解析
			
转自:http://www.importnew.com/18126.html#comment-487304 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备 ...