我编写了一个小型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()
''' **输出: Bytetoread:3967 Bytetoread:179 Bytetoread:2049 Bytetoread:0 ** 数据:*******末尾缺少数据。 我不知道为什么日志丢失了
我尝试了另一种方法。 '''
import serial
import time
com_serial = serial.Serial("COM6", 115200, 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\u buffer\u size()增加缓冲区大小,解决了此问题
'''
相关问题 更多 >
编程相关推荐