问题描述
我正在尝试将RaspBerry Pi 4的大量数据发送到计算机。我将RaspBerry Pi配置为USB OTG串行小工具,并且数据通过usb-c端口发送到我的计算机。
请查看以下在RaspBerry Pi上运行的代码。发送了1 MB的数据。
import serial
ser = serial.Serial( port='/dev/ttyGS0',baudrate=115200)
packet = bytearray()
for i in range(0,1000000):
packet.append(0x2f)
ser.write(packet)
这是我首先在计算机上运行的代码。
import serial
import time
ser = serial.Serial(port='COM30',baudrate=115200)
sum = 0
while 1:
bytesToRead = ser.inWaiting()
if bytesToRead > 0:
serial_line = ser.read(bytesToRead)
sum += bytesToRead
print(sum)
time.sleep(0.01)
我希望接收的数据的长度始终与发送的数据相同。但是在此示例中,计算机在大多数情况下接收的数据长度约为990.000字节。即使我在计算机上运行没有睡眠功能的代码,有时也会丢失字节。
如何确保发送和接收数据时不会丢失数据?
解决方法
首先,如果您在串口上启用了登录,则需要先禁用它们,否则该端口将无法访问。
其次,停止 getty@ttyGS0.service
并禁用它。
然后一切都会正常进行。