gpt4 book ai didi

python - 使用pyserial与调制解调器通信

转载 作者:行者123 更新时间:2023-11-28 18:51:22 25 4
gpt4 key购买 nike

我没有找到一个合理的好例子来说明如何使用 pyserial 与串行调制解调器通信。给定一个实例化的 pyserial 对象ser,我创建了一个应该执行以下操作的代码片段:

  • 向调制解调器发送 AT 命令
  • 尽快返回调制解调器应答
  • 返回例如超时时无
  • 处理脚本和调制解调器之间最合理、健壮和简单的通信。

这是片段:

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 提供一段只返回整个缓冲区内容的代码。另外,我/我应该在开始时刷新输出,以避免之前在输出缓冲区中出现一些垃圾吗?

谢谢 亚历克斯

最佳答案

使用参数 timeout=2 为读取超时创建 Serial 对象。

小米食谱是:

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

我认为这是一种很好的管理串口通信的方式。

关于python - 使用pyserial与调制解调器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12615963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com