在连接将实际获取数据的外部设备之前,我尝试测试串行连接。我试图使用pySerial" loop://"设备,但我没有正确接收数据。我开始玩一个非常玩具的程序,只要确定我理解它是如何工作的。显然,我不知道。 :)
这是我的数据"来源"
def serialDataPump():
ser = serial.serial_for_url('loop://', timeout=1)
testCtr = 0;
while not bbq.closing and testCtr<10:
ser.write(bytes("Test\n", encoding='ascii'))
time.sleep(1)
testCtr += 1
这是我的数据&#34; sink&#34;:
def serialDataTestRcv():
ser = serial.serial_for_url('loop://', timeout=1)
while not bbq.closing:
line = ser.readline()
sys.stdout.write('received' + str(line))
这是我的测试功能 - 我使用两个线程:
def testSerMain():
thread1 = Thread(target = serialDataPump)
thread2 = Thread(target = serialDataTestRcv)
thread1.start()
thread2.start()
thread1.join()
bbq.closing = True
time.sleep(2)
exit()
最后,这是输出 - 我至少接收到EOL,因为readline()
解除阻塞,并且在终止之前完全循环11次,这表明泵和接收都是循环的,正确终止。但是,正如您所看到的,它只接收空数据+ EOL:
>>>
receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''receivedb''
>>>
非常感谢任何帮助/指示。
赢7,x64m py3.3
顺便说一句,我知道com0com - 我只是不能在我正在使用的机器上运行它。答案 0 :(得分:1)
我发现了问题 - 您必须使用为receive和Xmt创建的ser = serial.serial_for_url('loop://', timeout=1)
的相同实例。