我已经阅读了文档,但似乎找不到关于这个问题的直接答案。我有连接到计算机的调制解调器正在使用的所有COM端口的列表。从这个列表中,我尝试打开它,向它发送一个命令,如果它说了什么,就把它添加到另一个列表中。我不能完全确定我是否正确地使用了pyserial的读写函数。
i=0
for modem in PortList:
for port in modem:
try:
ser = serial.Serial(port, 9600, timeout=1)
ser.close()
ser.open()
ser.write("ati")
time.sleep(3)
print ser.read(64)
if ser.read(64) is not '':
print port
except serial.SerialException:
continue
i+=1我没有从ser.read()得到任何东西。我总是收到空白字符串。
发布于 2013-10-03 02:05:14
ser.read(64)应为ser.read(size=64);ser.read使用关键字参数,而不是位置。
另外,您从端口读取了两次;您可能想要这样做:
i=0
for modem in PortList:
for port in modem:
try:
ser = serial.Serial(port, 9600, timeout=1)
ser.close()
ser.open()
ser.write("ati")
time.sleep(3)
read_val = ser.read(size=64)
print read_val
if read_val is not '':
print port
except serial.SerialException:
continue
i+=1发布于 2015-05-19 17:09:24
这是一段使用python读取rs232的代码,以防其他人需要它
ser = serial.Serial('/dev/tty.usbserial', 9600, timeout=0.5)
ser.write('*99C\r\n')
time.sleep(0.1)
ser.close()https://stackoverflow.com/questions/19143360
复制相似问题