![](/img/trans.png)
[英]How do I restart my loop from python (arduino-python serial communication)?
[英]How do I model the device, in order to test my serial communication?
我正在尝试使用pySerial通过USB-RS232转换器与设备通讯。
我的第一个测试是放弃通信,而只是“发明”数据点,以便与程序的其余部分一起测试通信类的完整性。
def run(self):
import random
while True:
self.callback(random.ranint(MIN, MAX))
很好 现在,我要测试“短路”通信。 也就是说,短插脚2和3(没有流量控制)并接收我要发送的内容。
这在minicom
可以正常工作,但不适用于我的代码:
def run(self):
while True:
self.ser.write('a')
print self.ser.read(size=1)
读取和写入超时设置为0。
超时=无:永远等待
超时= 0:非阻塞模式(读取后立即返回)
超时= x:将超时设置为x秒(允许浮动)
调用write()
后,我的程序挂起。 我错过了什么?
这是库测试的一些代码:
def test2_Loopback(self):
"""timeout: each sent character should return (binary test).
this is also a test for the binary capability of a port."""
for block in segments(bytes_0to255):
length = len(block)
self.s.write(block)
# there might be a small delay until the character is ready (especially on win32)
time.sleep(0.05)
self.failUnlessEqual(self.s.inWaiting(), length, "expected exactly %d character for inWainting()" % length)
self.failUnlessEqual(self.s.read(length), block)#, "expected a %r which was written before" % block)
self.failUnlessEqual(self.s.read(1), data(''), "expected empty buffer after all sent chars are read")
从这里 。 看来我所缺少的是中间的评论。
编辑:下面的木屑的评论是在一个更简洁的方式解决了这个问题。 改用它。
现在是真正的解决方案。
事实证明,我的问题很愚蠢。 我在做:
write()
然后read()
进行无限循环 发生了什么:写入成功,但是数据丢失了(因为RX和TX尚未连接)。 然后,read()冻结,等待听到一些声音。
我先短路了引脚, 然后运行测试解决了该问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.