为什么python serial读取我写的最后一本书,而不是来自串行设备的响应

问题描述 投票:0回答:1

我有一个numato 128 gpio板,当我在终端中键入命令但我的python程序无法获得相同的结果时,它可以正常工作。当我写命令从IO板上读取并等待1秒钟,然后读取缓冲区中的内容时,我最终会回读刚发送的命令,而不是设备的响应。如果我读完缓冲区中的所有内容,它将最终返回响应。这是在树莓派上。这是我的代码。

import serial
import time



class UsbSerial:

    def __init__(self, serial_conf):
        self.ser = serial.Serial(serial_conf['port'], serial_conf['baud'])

    def readGPIO(self, pin):
        self.ser.write("gpio read " + ("000" + str(pin))[-3:] + "r")
        time.sleep(1)
        return self.ser.readline()

ser_conf = {"port": "/dev/ttyACM0", "baud": 19200}
serGPIO=UsbSerial(ser_conf)
print serGPIO.readGPIO(20)
linux raspberry-pi pyserial gpio
1个回答
0
投票

好吧,这并不漂亮,但这是经过修改的readGPIO子模块,似乎可以完成工作。我仍将感谢您提供有关如何使其变得更好的信息。

    def readGPIO(self, pin):
        self.ser.flush()
        self.ser.write("gpio read " + ("000" + str(pin))[-3:] + "r")
        time.sleep(.1)
        x=self.ser.readline()
        x=self.ser.read(1)
        x=self.ser.read(1)
        y=self.ser.read(1)
        #time.sleep(.1)
        self.ser.flush()
        return x
© www.soinside.com 2019 - 2024. All rights reserved.