如何扩展pyserial的输入缓冲区大小

新手上路,请多包涵

我想通过串口与手机通信。在向手机写入一些命令后,我使用了 ser.read(ser.inWaiting()) 来获取它的返回值,但我总是得到总字符 1020 bytes ,实际上,期望的回报应该结束了 50KB

我试图设置 ser.read(50000) ,但解释器会挂起。

我将如何扩展输入缓冲区以一次获得所有回报?

原文由 Ired 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
1 个回答

如果您在 Windows 平台上运行您的代码,您只需在您的代码中添加一行。

 from serial import Serial
ser = Serial(port='COM1', baudrate=115200, timeout=1, writeTimeout=1)
ser.set_buffer_size(rx_size = 12800, tx_size = 12800)

其中 12800 是我选择的任意数字。您可以使接收 (rx) 和传输 (tx) 缓冲区与 2147483647 一样大(等于 2^31 - 1)

这将允许您扩展输入缓冲区以一次获得所有回报。

请注意,这仅适用于某些驱动程序,因为这是一项建议。驱动程序可能不会接受您的建议,并会坚持使用其原始缓冲区大小。

原文由 Valentyn 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题