你如何确定导致PySerial写入超时的原因?我遇到一个问题,PySerial Write timeout在运行一段可变的时间后开始抛出异常.它可以正常运行几分钟(大约200字节/秒),然后失败.
所有握手都被禁用.
在写入超时之前,我观察到TX数据引脚上没有更多数据.几秒钟后,超时开始.如果我禁用writeTimeout,那么代码会持续运行,而TX引脚上没有发送新数据.
我在pySerial代码中看到它只是将写入的数据传递给一个os.write()调用.什么会导致这种情况可靠地超时?什么会导致它没有超时,但不会在输出引脚上显示任何数据?
有关我的申请的具体信息如下:
我通过FTDI适配器将数据发送到Arduino板(模拟一些动态像素伺服器).我正在使用逻辑分析仪监视rx/tx线路,因此我可以看到实际通过FTDI适配器实现的是什么.
我在VM中运行Ubuntu 14.04.
代码来自ROS的Dynamixel Controller节点.我一直在进行小的改动以调试问题.
Write方法,添加了用于调试的print语句:
def __write_serial(self, data):
print "TX"
if self.ser is None:
print "not open"
self.ser.flushInput()
self.ser.flushOutput()
try:
n = self.ser.write(data)
print n
except Exception as e:
print e
Run Code Online (Sandbox Code Playgroud)
读方法:
def __read_response(self, servo_id):
data = []
print "RX"
try:
data.extend(self.ser.read(4))
print data
if not data[0:2] == ['\xff', '\xff']:
print "RX ERR1"
raise Exception('Wrong packet prefix %s' % data[0:2])
data.extend(self.ser.read(ord(data[3])))
data = …Run Code Online (Sandbox Code Playgroud)