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文件数据并绘制出来,可以浏览官网查看详细说明。

  • 相关阅读:
    awk学习
    Redis快速入门
    Redis源码研究—基础知识
    稳定模式在RESTful架构中的应用
    解析Google集群资源管理系统Omega
    在Ubuntu 14.04 64bit上安装百度云Linux客户端BCloud
    在Ubuntu 14.04 64bit上安装Markdown和绘图软件Haroopad
    在Ubuntu 14.04 64bit上安装网易云音乐Linux版本(最新官方版)
    各数据库连接maven配置
    maven POM.xml 标签详解
  • 原文地址:https://www.cnblogs.com/harleygwak1206/p/6065111.html
Copyright © 2011-2022 走看看