我有一个FTDI设备可以连接到ttyUSB0。拔下并重新插入后,设备始终连接到ttyUSB1。我必须检测到变化并相应地采取行动,以保持send和recv函数的运行。我试图在send和recv函数中检测到它。以下是我所做的:`
def recv_serial_data(n):
global serial_port
try:
if not serial_port.isOpen():
serial_port = serial.Serial('/dev/ttyUSB1', 115200, 0.05)
data = serial_port.read(n)
tmp = []
for c in data:
tmp.append(ord(c))
print data
return tmp
except Exception, e:
raise Exception("recv_serial_data: " + str(e))
def send_serial_data(data):
print data,type(data)
global serial_port
try:
if not serial_port.isOpen():
serial_port.close()
serial_port = serial.Serial('/dev/ttyUSB1', 115200, 0.05)
if not isinstance(data, basestring):
data = array.array("B",data).tostring()
serial_port.write(data)
elif isinstance(data, basestring):
serial_port.write(data)
except Exception, e:
raise Exception("send_serial_data: " + str(e))
return
def main():
#[Doing stuff]
global serial_port
#options.serial_port is '/dev/ttyUSB0'
serial_port = serial.Serial(options.serial_port, options.baudrate, timeout=options.tty_timeout)
#[Doing stuff]
serial_port.close()
if __name__ == "__main__":
main()
`
我现在得到的是一些消息,比如“recv_serial_data:device reports ready to read but return no data”(设备断开连接或端口上有多个访问?)”或“发送串行数据:写入失败:[Errno 5]输入/输出错误”
只要我不拔掉这个设备,一切都会顺利进行。在