首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用pyserial自定义波特率

使用pyserial自定义波特率
EN

Stack Overflow用户
提问于 2017-02-08 03:26:44
回答 2查看 4.8K关注 0票数 0

如何在pySerial上设置非标准波特率?根据文档,它说pySerial在某些平台上支持非标准波特率。当我尝试使用非标准波特率(12800)配置pySerial时,它最终选择了一个标准波特率,而没有抛出警告。如何检查我的平台是否支持非标准波特率?

代码语言:javascript
运行
复制
    The parameter baudrate can be one of the standard values: 50, 75, 110, 
134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600,
115200. These are well supported on all platforms.

    Standard values above 115200, such as: 230400, 460800, 500000, 576000,
921600, 1000000, 1152000, 1500000, 2000000, 2500000, 3000000, 3500000, 4000000
 also work on many platforms and devices.

    Non-standard values are also supported on some platforms (GNU/Linux, MAC 
OSX >= Tiger, Windows). Though, even on these platforms some serial ports may 
reject non-standard values.

我正在使用

代码语言:javascript
运行
复制
Linux raspberrypi-zero1 4.4.34+ #930 Wed Nov 23 15:12:30 GMT 2016 armv6l GNU/Linux
EN

回答 2

Stack Overflow用户

发布于 2017-02-08 18:00:09

自定义波特率的设置方式与标准波特率相同,带有baudrate选项。Pyserial将打开端口,并将波特率设置为给定值,然后Pyserial将从串行中读回波特率,以获得实际获得的设置。因此,如果不匹配,则该端口很可能不支持非标准波特率。下面是它工作的一个例子:

代码语言:javascript
运行
复制
>>> ser = serial.Serial('/dev/ttyS0', baudrate=2345)
>>> ser
Serial<id=0xb73467cc, open=True>(port='/dev/ttyS0', baudrate=2345, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
票数 1
EN

Stack Overflow用户

发布于 2019-05-04 08:25:13

根据/usr/lib/python3/dist-packages/serial/serialposix.py的说法,如果您指定的波特率不是标准波特率,它将调用_set_special_baudrate。如果平台没有实现它,基类就会抛出NotImplementedError('non-standard baudrates are not supported on this platform')。因此,如果你没有看到这个错误,那么平台(试图)支持它。

在Raspberry Pi上,pyserial使用"Linux“实现,这意味着定义了_set_special_baudrate,并尝试使用ioctl TCSETS2调用设置自定义波特率。如果此操作失败,则会引发ValueError('Failed to set custom baud rate ({}): {}'.format(baudrate, e))

因此,总而言之,如果您以正常方式指定自定义波特率,PySerial应该尽职尽责地应用它,并在失败时引发异常。如果它没有,它应该是安全的假设它已经工作了,但Linux串行驱动程序是时髦的,所以买者自负。请注意,检查baudrate的值并不是确认成功的可靠方法-它只包含您提供的请求baudrate。

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

https://stackoverflow.com/questions/42098276

复制
相关文章

相似问题

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