Python 如何从串行控制台对字符串使用pyserial expect,然后发送字符
我是python新手,希望有人知道我遇到的问题。我想使用串行控制台控制设备。将发送一个命令以重新启动设备,当设备重新启动时,将打印一个字符串。我想捕获字符串,然后发送一个字符“h”,它将中止重新启动。代码如下所示Python 如何从串行控制台对字符串使用pyserial expect,然后发送字符,python,Python,我是python新手,希望有人知道我遇到的问题。我想使用串行控制台控制设备。将发送一个命令以重新启动设备,当设备重新启动时,将打印一个字符串。我想捕获字符串,然后发送一个字符“h”,它将中止重新启动。代码如下所示 #! /bin/env python import serial import sys import pexpect from time import sleep from serial import SerialException ser = serial.Serial() se
#! /bin/env python
import serial
import sys
import pexpect
from time import sleep
from serial import SerialException
ser = serial.Serial()
ser.baudrate = 9600
ser.port="/dev/ttyUSB0"
ser.stopbits=serial.STOPBITS_ONE
ser.xonxoff=0
try:
ser.open()
except:
sys.exit ("Error opening port")
print "Serial port opened"
ser.write('rebootnow\r')
temp = ser.expect('press h now to abort reboot..')
if i == 0:
print ('Gotcha, pressing h')
ser.sendline('h')
print ('Reboot aborted')
else:
print ('Ouch, got nothing')
time.sleep(1)
ser.close()
exit()
当我运行代码时,我得到了错误
AttributeError: 'Serial' object has no attribute 'expect'
排队
temp = ser.expect('press h now to abort reboot..')
有什么想法吗?这个帖子已经很老了,但我希望我的答案对你仍然有用 expect方法来自pexpect,而不是pyserial。你应该这样做:
temp = pexpect.fdpexpect.fdspawn(ser)
temp.expect("message")
基本上,从temp开始,您应该调用temp对象上的方法,而不是串行对象上的方法。这包括稍后的sendline()调用