我没有找到一个如何使用pyserial与串口调制解调器通信的合理好例子。我已经创建了一个代码片段,在给定实例化的pyserial对象ser
的情况下应执行以下操作:
以下是摘录:
def send(cmd, timeout=2):
# flush all output data
ser.flushOutput()
# initialize the timer for timeout
t0 = time.time()
dt = 0
# send the command to the serial port
ser.write(cmd+'\r')
# wait until answer within the alotted time
while ser.inWaiting()==0 and time.time()-t0<timeout:
pass
n = ser.inWaiting()
if n>0:
return ser.read(n)
else:
return None
我的问题:这是一个好的,强大的代码,还是可以改变/简化的部分?我特别不喜欢read(n)
方法,我希望pyserial提供一段只返回整个缓冲区内容的代码。此外,我是否应该在开始时刷新输出,以避免在输出缓冲区中出现一些废话?
由于 亚历
答案 0 :(得分:1)
使用参数timeout=2
创建Serial对象以进行读取超时。
Mi配方是:
def send(data):
try:
ser.write(data)
except Exception as e:
print "Couldn't send data to serial port: %s" % str(e)
else:
try:
data = ser.read(1)
except Exception as e:
print "Couldn't read data from serial port: %s" % str(e)
else:
if data: # If data = None, timeout occurr
n = ser.inWaiting()
if n > 0: data += ser.read(n)
return data
我认为这是管理与串口通信的一种很好的形式。