Pyserial软件包不能从COM端口读取所有数据始终仅读取6000到6150字节

问题描述

我编写了一个小的pyserial接口,以在发出命令后从COM端口读取数据。例如:在我的系统中,我的系统有很多网络接口,因此我需要使用 ifconfig 命令验证是否所有接口都已启动。但是,当我给出此命令时,该命令的输出在最后几行被截断。输出的大概大小(以字节为单位)将是6500-7000字节,但我一直都只收到6000-6150字节左右。请在下面找到我的代码 '''

import serial
import time
com_serial = serial.Serial("COM6",115200,timeout = 10)
com_serial.reset_input_buffer()
com_serial.write(b"ifconfig\n")
data_all = b" "
time.sleep(5)
while True:
   bytetoread = com_serial.inWaiting()
   time.sleep(2)
   print ("Bytetoread: ",bytetoread)
   data = com_serial.read(bytetoread)
   data_all += data
   if bytetoread < 1:
      break
print ("Data:",data_all)
com_serial.close()

''' **输出: 待读字节数:3967 读取字节数:179 字节读取:2049 读取字节数:0 ** 数据:*********结尾处缺少数据。 我不确定为什么缺少日志?

我尝试了另一种方法。 '''

import serial
import time
com_serial = serial.Serial("COM6",timeout = 10)
com_serial.reset_input_buffer()
com_serial.write(b"ifconfig\n")
time.sleep(5)
data_all = b" "   
data_all = com_serial.read(100000000)
print (data_all)
com_serial.close()

'''

最后几条日志也被截断了。

解决方法

根本原因似乎是Tx和Rx串行缓冲区的缓冲区大小不足。通过使用.set_buffer_size()增加缓冲区大小,可以解决此问题。

$count

'''