【发布时间】:2017-12-09 12:43:53
【问题描述】:
我需要使用串行端口与某些设备通信。我知道这个设备参数(波特率等)。我也知道这个设备会一直等到它收到一个换行符(我不知道 unix 或 windows 类型),然后以 ASCII 格式发回一些东西。
问题是当我想写任何东西时,脚本会挂起。没有错误发生,只是以后什么也没有发生。无法打印任何内容,甚至无法关闭端口。
我该如何解决这个问题?
它不适用于非常基本的脚本。当然,这不是一个完整的代码,只是一个展示不工作的例子。
遗憾的是,我没有找到任何有效的解释或答案。
我正在开发 Ubuntu 16.04
感谢您的帮助!
import serial
ser = serial.Serial(
port="/dev/NameOfDevice",
baudrate=115200,
bytesize=8,
parity='N',
stopbits=1,
timeout = 0)
ser.open()
print('Port was opened')
ser.write(b'\r\n') #this is a line where it stops working. Different inputs were tried, nothing works.
print('Does it works?')
【问题讨论】:
-
在任何教程中找到任何示例并尝试使用它 - 如果它可以工作,那么尝试做类似的事情。我没有使用串行,但它可能只为读取而打开,而不是写入(类似于系统中的文件)
-
我实际上尝试了一些示例代码。每次我尝试发送任何东西时都会出现问题。
-
您使用什么设备?也许它还没有准备好接收数据,并且
timeout=0程序一直在等待设备响应。 -
问题是没有人确切知道它是什么设备,我无法“打开”它(我的意思是,物理检查)。我知道它肯定有效,因为它收集了一些科学数据,而且我之前就在使用它。现在我需要编写一个 python 脚本来发送它等待的命令,然后接收它发送的数据。收到“输入”后,它肯定会发送一些东西。
-
顺便说一句:计算机使用三种类型的“回车”——Linux“\n”、Windows“\r\n”、旧MacOS“\r”。
标签: python ubuntu-16.04 python-3.6 pyserial