如何使pyserial环回工作?

时间:2014-06-26 20:59:50

标签: python python-3.x python-3.3 pyserial loopback

在连接将实际获取数据的外部设备之前,我尝试测试串行连接。我试图使用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 - 我只是不能在我正在使用的机器上运行它。

1 个答案:

答案 0 :(得分:1)

我发现了问题 - 您必须使用为receive和Xmt创建的ser = serial.serial_for_url('loop://', timeout=1)的相同实例。