当前位置:网站首页>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
边栏推荐
- Improve lighting C program
- UEFI development learning 4 - getting to know variable services
- Zero length array in GNU C
- Nb-iot technical summary
- Imx6ull bare metal development learning 1-assembly lit LED
- Shape template matching based on Halcon learning [VII] reuse_ model. Hdev routine
- Naming rules for FreeRTOS
- After installing the new version of keil5 or upgrading the JLINK firmware, you will always be prompted about the firmware update
- Create inf module in AMI code
- Semiconductor devices (I) PN junction
猜你喜欢
UEFI development learning 6 - creation of protocol
Matlab2018b problem solving when installing embedded coder support package for stmicroelectronic
Wifi-802.11 negotiation rate table
Relationship between line voltage and phase voltage, line current and phase current
[trio basic from introduction to mastery tutorial 20] trio calculates the arc center and radius through three points of spatial arc
How to migrate the device data accessed by the RTSP of the easycvr platform to easynvr?
Programming knowledge -- basis of C language
UEFI development learning 2 - running ovmf in QEMU
【云原生 | 从零开始学Kubernetes】三、Kubernetes集群管理工具kubectl
C WinForm [view status bar -- statusstrip] - Practice 2
随机推荐
OLED 0.96 inch test
Sql Server的存儲過程詳解
Several important parameters of LDO circuit design and type selection
C WinForm [exit application] - practice 3
Introduction of air gap, etc
Halcon's practice based on shape template matching [2]
How to select conductive slip ring
Cadence simulation encountered "input.scs": can not open input file change path problem
PMSM dead time compensation
生产中影响滑环质量的因素
How to define guid in AMI code
Carrier period, electrical speed, carrier period variation
[paper reading] the latest transfer ability in deep learning: a survey in 2022
The research found that the cross-border e-commerce customer service system has these five functions!
Circleq of linked list
Design a clock frequency division circuit that can be switched arbitrarily
Live555 push RTSP audio and video stream summary (III) flower screen problem caused by pushing H264 real-time stream
WiFi wpa_ Detailed description of supplicant hostpad interface
Soem EtherCAT source code analysis I (data type definition)
Use indent to format code