Python 2.7 Python串口无法写入
我正在使用Python2.7和Serialv2.6来监听串行端口。我可以很好地收听端口,但我不能向端口写入数据Python 2.7 Python串口无法写入,python-2.7,serial-port,Python 2.7,Serial Port,我正在使用Python2.7和Serialv2.6来监听串行端口。我可以很好地收听端口,但我不能向端口写入数据 import serial cp = 5 br = 9600 ser = serial.Serial(5,br) a = ser.readline() 使用它,我可以监听输出的数据流。但是,如果我想更改仪器的状态(例如,将GPS设置为off),我会编写一个命令: ser.write('gps=off') 当我这样做时,返回“6L”并且gps保持开启。但是,如果我通过TeraTe
import serial
cp = 5
br = 9600
ser = serial.Serial(5,br)
a = ser.readline()
使用它,我可以监听输出的数据流。但是,如果我想更改仪器的状态(例如,将GPS设置为off),我会编写一个命令:
ser.write('gps=off')
当我这样做时,返回“6L”并且gps保持开启。但是,如果我通过TeraTerm连接,我可以实时看到数据流。当数据流输入时,我可以键入gps=off,然后返回,然后突然我的gps关闭。为什么我在Python中的命令不像TeraTerm那样工作
更新
如果我改为
a=ser.write('gps=on')
“a”的赋值为6。我还尝试通过发送“垃圾”命令
a = ser.write('lkjdflksdjflksdjf')
“a”的值为17,因此它似乎将字符串的长度指定给a,这没有意义 我认为问题在于ser.write命令被卡在缓冲区中(我不确定这一点,但这是我的怀疑)。当我检查输入缓冲区时,我发现它已满。冲洗完之后,我能在仪器上写字了
import serial
ser = serial.Serial(5, 9600)
# the buffer immediately receives data, so ensure it is empty before writing command
while ser.inWaiting()>0:
ser.read(1)
# now issue command
ser.write('gps=off\r')
这是可行的。显而易见的做法是在输出字符串中附加一个行终止符。您是说ser.write('gps.off\r\n')?我试过了,但它只改变了返回值(“14L”我想…虽然我不确定)。我不懂Python,那么“无法写入”是否意味着系统调用返回错误(传统意义),或者设备没有响应您的期望(您似乎正在使用它)?如果是后者,那么这个“仪器”是什么?我所说的“无法写入”是指仪器(气象探空仪)没有改变状态。令人困惑的是,在状态完全改变的情况下,发出命令(gps=of/off)。在Python中,我从未处理过通过串行发送命令的问题,所以我认为我做错了什么,不过在阅读教程之后,我没有发现任何错误。