zoukankan      html  css  js  c++  java
  • 在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文件数据并绘制出来,可以浏览官网查看详细说明。

  • 相关阅读:
    Django中自定义标签的所有步骤
    django的settings详解(1)
    django中@property装饰器的运用
    设计没有标准,只有目标
    小学的题 大学的解法
    中国移动创新系列丛书《OPhone应用开发权威指南》读者交流活动圆满结束
    中国移动创新系列丛书《OPhone应用开发权威指南》读者交流活动
    开源软件技巧与精髓分享
    博文视点大讲堂28期:助你赢在软件外包行业
    网络营销大师力作,亚马逊营销图书传奇
  • 原文地址:https://www.cnblogs.com/harleygwak1206/p/6065111.html
Copyright © 2011-2022 走看看