当前位置:网站首页>Shell script realizes the reading of serial port and the parsing of message
Shell script realizes the reading of serial port and the parsing of message
2022-07-05 08:10:00 【Nanbolwan】
Recently, I am reading the message from the serial port and judging whether the message content is valid , Originally used C++ Wrote a little program . How board card sftp The service is always disconnected , So consider using shell Scripts do this . use shell Script implementation of these functions faces the following problems :
1. How to set and read the serial port from the command line ?
stty yes Linux A good terminal setting tool under the platform , Various terminal properties can be set . In essence, the serial port is also Linux A terminal in a system . So the first step is to set the baud rate of the serial port :
stty -F /dev/ttyO1 raw speed 9600
Then read the serial port , We use cat The command can easily read and print out the serial port information from the terminal , But in the script, we want to read a line of serial port messages into string variables , So there is the following code :
cat /dev/ttyO1 | while read LINE
do
echo LINE
#do something
...
done
2. How to intercept and compare strings ?
str="hello world"
# Intercept hello
h=${str:0:5}
# first : After that is the position ; the second : The following number indicates the number of characters
# There are many ways to compare strings , Here is one of them
if [ $h == 'hello' ]; then
#do something
...
fi
3. How to be in shell Count in script
shell All variables in the script are strings by default , So when we declare variables, we should explicitly assign values :
num=0
# to num Add 1
num=`expr $num + 1`
# Judge num Is it greater than 10
if [ $num -ge 10 ]; then
#do something
...
fi
4. Script implementation
The script reads the serial port message , Intercept the message header and valid as and judge , After passing the judgment, the counter adds 1, Timer exceeded 10 Program exit after ;
#!/bin/sh
stty -F /dev/ttyO1 raw speed 9600
num=0
cat /dev/ttyO1 | while read LINE
do
head=${LINE:0:6}
valid = ${LINE:17:1}
if [ $head == '$GPRMC' ] && [ $valid == 'A' ]; then
echo $num
num = `expr $num + 1`
if [ $num -ge 10 ]; then
exit
fi
fi
done
边栏推荐
- UEFI development learning 6 - creation of protocol
- Pointnet++ classification practice
- Talk about the circuit use of TVs tube
- 导电滑环磨损快的原因
- Stablq of linked list
- Compilation warning solution sorting in Quartus II
- Nb-iot technical summary
- Step motor generates S-curve upper computer
- C, Numerical Recipes in C, solution of linear algebraic equations, LU decomposition source program
- Why is 1900 not a leap year
猜你喜欢

Semiconductor devices (I) PN junction

Nb-iot technical summary

Explain task scheduling based on Cortex-M3 in detail (Part 2)

Process communication mode between different hosts -- socket

Shell script basic syntax

如何将EasyCVR平台RTSP接入的设备数据迁移到EasyNVR中?

DokuWiki deployment notes

H264 (I) i/p/b frame gop/idr/ and other parameters

Communication standard -- communication protocol

Relationship between line voltage and phase voltage, line current and phase current
随机推荐
Programming knowledge -- assembly knowledge
Programming knowledge -- basis of C language
L'étude a révélé que le système de service à la clientèle du commerce électronique transfrontalier a ces cinq fonctions!
Fundamentals of C language
Shape template matching based on Halcon learning [9] PM_ multiple_ dxf_ models. Hdev routine -- [read and write XLD from DXF file]
[trio basic tutorial 16 from introduction to proficiency] UDP communication test supplement
Management and use of DokuWiki (supplementary)
Pointnet++ classification practice
【云原生 | 从零开始学Kubernetes】三、Kubernetes集群管理工具kubectl
Problem solving: interpreter error: no file or directory
Sizeof (function name) =?
Naming rules for FreeRTOS
Communication standard -- communication protocol
Random function usage notes
动力电池UL2580测试项目包括哪些
Bootloader implementation of PIC MCU
solver. Learning notes of prototxt file parameters
Classic application of MOS transistor circuit design (2) - switch circuit design
Record the torch encountered by win10 cuda. is_ False problem in available()
Record the visual shock of the Winter Olympics and the introduction of the screen 2