从bash脚本中的/ dev / ttyS0读取时出现了奇怪的结果

时间:2016-11-29 13:26:27

标签: linux bash shell serial-port

我尝试向硬件发送命令并想要获取结果。我确信当我发送像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;>

但是当我执行脚本时,有时我会得到正确的结果,但大多数时候我都没有得到任何回报。

1 个答案:

答案 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)