我想通过串口与手机进行通信。 写一些命令来电话后,我用ser.read(ser.inWaiting())
来获得它的返回值,但我总是得到总共1020 bytes
的字符,而实际上,期望的回报率应该是超过50KB
。
我曾试图设置ser.read(50000)
但解释会坚持下去。
我将如何扩大输入缓冲区获得所有收益的一次?
我想通过串口与手机进行通信。 写一些命令来电话后,我用ser.read(ser.inWaiting())
来获得它的返回值,但我总是得到总共1020 bytes
的字符,而实际上,期望的回报率应该是超过50KB
。
我曾试图设置ser.read(50000)
但解释会坚持下去。
我将如何扩大输入缓冲区获得所有收益的一次?
我有完全相同的问题,其中包括1020字节的缓冲区大小,并没有找到一种方法来改变这种状况。 我的解决方案已经实现像一个循环:
in_buff=''
while mbed.inWaiting():
in_buff+=mbed.read(mbed.inWaiting()) #read the contents of the buffer
time.sleep(0.11) #depending on your hardware, it can take time to refill the buffer
我会很高兴,如果有人能拿出一个缓冲调整大小的解决方案!
如果您在Windows平台上运行的代码,你只需要在代码中添加一行。
ser.set_buffer_size(rx_size = 12800, tx_size = 12800)
其中12800是我选择了一个任意数字。 可以使接收(RX)和发送(TX)缓冲器一样大2147483647(等于2 ^ 31 - 1)
这将允许你扩大输入缓冲区获得所有收益的一次。
请注意,这只会有一些司机,因为它是一个推荐工作。 驱动程序可能无法把你的建议,并将其原始缓冲区大小坚持。
我猜你正在读1020个字节,因为这是所有有在缓冲区,这是ser.inWaiting()将返回。 根据波特率50 KB可能需要一段时间来转移,或手机期待的东西与你不同。 握手?
检查ser.inWaiting的您收到什么提示的值,然后将内容。
pySerial采用串行接收本地操作系统的驱动程序。 在Windows的情况下,输入驱动器的大小是根据设备驱动程序。
您可以增加大小的设备管理器设置,如果有可能,但最终你只需要在快速读取数据就够了。