首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyserial write()挂起

Pyserial write()挂起
EN

Stack Overflow用户
提问于 2017-12-09 20:43:53
回答 1查看 2.8K关注 0票数 5

我需要使用串口与一些设备进行通信。我知道这个设备的参数(波特率等)。我还知道这个设备会等待,直到它接收到新的行字符(我不知道是unix还是windows类型),然后以ASCII格式发回一些内容。

问题是,当我想写任何东西的时候,脚本会挂起。没有错误发生,只是后来什么都没有发生。打印任何东西甚至关闭端口都是不可能的。

我怎么才能修复它呢?

它不适用于真正的基本脚本。当然,这不是一个完整的代码,只是一个例子来展示什么是不起作用的。

遗憾的是,我没有找到任何有效的解释或答案。

我正在使用Ubuntu 16.04

谢谢你的帮忙!

代码语言:javascript
复制
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?')
EN

回答 1

Stack Overflow用户

发布于 2020-06-19 21:44:31

编辑:我以前是个笨蛋,但现在我确信我是正确的。

我遇到了同样的问题,并通过添加一个“write_timeout”解决了它:

代码语言:javascript
复制
ser = serial.Serial(
port="/dev/NameOfDevice",
baudrate=115200,
bytesize=8,
parity='N',
stopbits=1,
write_timeout = 1,
timeout = 0)

请注意,这将引发超时异常。在我的例子中,这是预期的行为,因为我正在检查是否可以正确地连接到用户指定的端口。

所以我怀疑你正在连接什么东西,但是它不承认你的写,因为“write”的默认行为是阻塞直到确认,这就是你所看到的。

另请参阅write函数的api描述:https://pyserial.readthedocs.io/en/latest/pyserial_api.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47728713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档