2
我想创建一个线程来侦听来自COM串行端口的传入数据,而主线程正在做一些操作。如何让一个线程侦听数据,而主线程正在做一些操作
这里是我的代码(有些代码为简洁起见省略):
def readMsg(serial):
msgArray = []
while (True):
char = "0x" + serial.read().encode('hex')
if char == '0xfd':
msgArray = []
msgArray.append(char)
elif char == '0xfc':
msgArray.append(char)
print debugPrefix, "ComPort:", (serial.port + 1), msgArray
elif char == '0x':
pass
else:
msgArray.append(char)
# Find available ports
initializeComPorts()
# Print port infos
printComPorts()
# Opens serial and returns opened serial
serialPort = openPort(1);
print "thread started"
readMsgThread = threading.Thread(target=readMsg(serialPort))
readMsgThread.setDaemon(True)
readMsgThread.start()
print "sending some data"
serialPort.send('h')
当我执行的代码readMsgThread
听好的,但从未执行的行print "sending some data"
。有人能解释我错过了什么吗?我一直坚持这一点。
非常感谢。
小心'while True:'循环。它可能需要100%的CPU核心。用'time.sleep'替换'pass'。 – Igonato
@Igonato,大概是'serial.read()'块,直到端口上的数据可用。在这种情况下,睡觉不合适。但是,是的,否则是的;-) –