Raspberry Pi,Python:如何通过USB串行发送大数据?

问题描述

我正在尝试将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 并禁用它。

然后一切都会正常进行。