Python 如何从串行控制台对字符串使用pyserial expect,然后发送字符

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

我是python新手,希望有人知道我遇到的问题。我想使用串行控制台控制设备。将发送一个命令以重新启动设备,当设备重新启动时,将打印一个字符串。我想捕获字符串,然后发送一个字符“h”,它将中止重新启动。代码如下所示

#! /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()调用