小编ahu*_*r10的帖子

调试pySerial写入超时

你如何确定导致PySerial写入超时的原因?我遇到一个问题,PySerial Write timeout在运行一段可变的时间后开始抛出异常.它可以正常运行几分钟(大约200字节/秒),然后失败.

所有握手都被禁用.

在写入超时之前,我观察到TX数据引脚上没有更多数据.几秒钟后,超时开始.如果我禁用writeTimeout,那么代码会持续运行,而TX引脚上没有发送新数据.

我在pySerial代码中看到它只是将写入的数据传递给一个os.write()调用.什么会导致这种情况可靠地超时?什么会导致它没有超时,但不会在输出引脚上显示任何数据?


有关我的申请的具体信息如下:


我通过FTDI适配器将数据发送到Arduino板(模拟一些动态像素伺服器).我正在使用逻辑分析仪监视rx/tx线路,因此我可以看到实际通过FTDI适配器实现的是什么.

我在VM中运行Ubuntu 14.04.

代码来自ROSDynamixel 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)

python pyserial

5
推荐指数
0
解决办法
3674
查看次数

标签 统计

pyserial ×1

python ×1