我尝试向硬件发送命令并想要获取结果。我确信当我发送像echo "read" > /dev/ttyS0
这样的命令时,命令将被执行。抓住反馈问题就出现了问题。为此,我想使用这个脚本:
#!/bin/bash
echo "READ" > /dev/ttyS0
#stty -F /dev/ttyS0 9600
stty -F /dev/ttyS0 raw
stty -F /dev/ttyS0 -echo
STR="result "
while read -r -s -t 1 -n 1 c && [[ $c != '>' ]]
do
STR+=$c
done < /dev/ttyS0
echo $STR
结果应该是这样的。
Level 0
001,001, 002,002;>
但是当我执行脚本时,有时我会得到正确的结果,但大多数时候我都没有得到任何回报。
答案 0 :(得分:0)
我用这个脚本解决了这个问题:
import serial
ser = serial.Serial(
port='/dev/ttyS0',
baudrate=9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
str=""
c=""
ser.write("terminal off\r\n")
ser.readline();
ser.write("read\r\n")
while (len(str) < 2 or c != ">"):
c = ser.readline()
str += c
ser.close()
print(str)