【发布时间】:2016-09-27 01:30:55
【问题描述】:
我在 MacOS 上使用代码攻击连接到设备,并且在 100 次中,此代码只会连接一到两次,并且在其余时间没有响应(因为没有超时)。
ser = serial.Serial(port="/dev/xyz",timeout = None, baudrate=115200, parity = serial.PARITY_NONE, bytesize = serial.EIGHTBITS, stopbits = serial.STOPBITS_ONE)
def exitSer(ser):
print("Closing")
ser.close()
atexit.register(exitSer, ser)
if ser.is_open:
time.sleep(2)
while(1):
print(ser.readline().decode("utf-8"))
能否请您告诉我如何使用 fcntl 等程序来查找该端口是否完全免费可用,以及如何在强制释放端口后将 tty 端口的标志设置为释放。
一旦这个工作正常,我必须运行这个多线程,其中每个线程运行不同的设备,期望成行输出。任何建议以防万一。
【问题讨论】:
-
您引用的另一个应用程序具有不同的波特率并使用 1 个停止位。你能贴出你用来从串口读取数据的代码吗?
-
刚刚更新了问题。感谢您的回复。
-
我尽量避免在串行设备上使用 readline(),因为它会在您收到换行符时首先写入一些内容。因此,如果收到其他任何内容,您将看不到它。相反,您可以使用类似: sys.stdout.write(ser.read(1)) sys.stdout.flush()
-
你知道你尝试过的其他工具是否向ios设备发送了一些东西吗?
-
是的,它能够写入、读取等。它与串行输出和输入的工作方式完全一样。我也知道,当我让我的程序运行该工具时,该工具将无法工作。
标签: macos python-3.x serial-port pyserial pexpect