【问题标题】:How do I make the pyserial loopback work?如何使 pyserial 环回工作?
【发布时间】:2014-06-26 20:59:49
【问题描述】:

在连接将实际获取数据的外部设备之前,我正在尝试测试串行连接。我正在尝试使用 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

这是我的数据“接收器”:

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''
>>> 

Win 7,x64m py3.3

顺便说一句,我知道 com0com - 我只是无法在我所在的机器上运行它。

【问题讨论】:

  • 实际上,我可能什么都没收到。应该是超时了吧嗯。问题仍然存在。

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


【解决方案1】:

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

【讨论】:

  • 我正在尝试做类似的事情。这对我不起作用,因为发件人可以收到他们已经发送的内容...
猜你喜欢
  • 1970-01-01
  • 2012-11-26
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
相关资源
最近更新 更多