Ire*_*red 8 python buffer pyserial
我想通过串口与手机通信.在给手机写了一些命令之后,我常常ser.read(ser.inWaiting())
得到它的返回值,但我总是得到了总1020 bytes
的字符,实际上,期望的回报应该结束了50KB
.
我试图设置ser.read(50000)
,但解释器将继续.
如何扩展输入缓冲区以立即获得所有返回?
如果您在 Windows 平台上运行您的代码,您只需在您的代码中添加一行。
ser.set_buffer_size(rx_size = 12800, tx_size = 12800)
Run Code Online (Sandbox Code Playgroud)
其中 12800 是我选择的任意数字。您可以将接收(rx)和发送(tx)缓冲区设置为 2147483647(等于 2^31 - 1)
这将允许您扩展输入缓冲区以一次获得所有回报。
请注意,这仅适用于某些驱动程序,因为它是一个建议。驱动程序可能不会接受您的建议,而是会坚持其原始缓冲区大小。
我猜您正在读取 1020 字节,因为这就是缓冲区中的全部内容,这就是 ser.inWaiting() 返回的内容。根据波特率,50 KB 可能需要一段时间才能传输,或者手机期望的内容与您不同。握手?
检查 ser.inWaiting 的值,然后检查您收到的提示内容。