很菜的小罗 2023-03-24 12:11 采纳率: 100%
浏览 36
已结题

python 利用 serial 读取数据遇到的问题

这里我希望利用python serial库在电脑端通过USB转TTL实现对as608芯片原始图片的采集。

但是在实现过程中,as608采集大小时256288大小的图片,我用串口助手采集的图片也是256288,但是我利用serial库采集的图片,却是128*288大小的图片。我不知道为什么会出现这样的情况,下面是我的主要代码(毕设的问题)

uart=serial.Serial(port="COM3",
                  baudrate=9600*6,
                  parity=serial.PARITY_NONE,
                  stopbits=serial.STOPBITS_ONE,
                  bytesize=serial.EIGHTBITS,
                  timeout=1
                            )

#初始化serial串口模型



a=uart.write(bytearray.fromhex("EF01 FFFFFFFF 01 0003 01 0005"))
data=uart.read(a)#发送录取图像命令查看应答
b=uart.write(bytearray.fromhex("EF01 FFFFFFFF 01 0003 0a 000e"))
data1=uart.read(100000)##发送接受图像命令,并读取图像数据
uart.flush()


这里我得到数据长度为40044

经过我去除掉包头,得到数据包数据只有128*288的长度

下面我我采集的图片和串口图片。

我不知道为什么会出现这样的偏差,救命!

  • 写回答

1条回答 默认 最新

  • hianyhack 2023-03-25 12:16
    关注

    根据你提供的信息,问题可能出现在读取数据的代码中。你在读取数据之前指定了最大的读取长度为100000,但这并不能保证你确实读取了完整的图像数据。

    当你调用uart.read(a)时,它会返回实际读取的字节数。在这种情况下,你可以尝试打印出实际读取的字节数,以便了解是否正确读取了所有数据。

    另外,由于你正在读取二进制数据,建议使用二进制模式打开串口。你可以尝试添加以下

    
    
    
    ```    stopbits=serial.STOPBITS_ONE,
                      bytesize=serial.EIGHTBITS,
                      timeout=1
                                )
    
    uart.reset_input_buffer()  # 清空串口缓冲区
    
    a=uart.write(bytearray.fromhex("EF01 FFFFFFFF 01 0003 01 0005"))
    data=uart.read(a) #发送录取图像命令查看应答
    
    b=uart.write(bytearray.fromhex("EF01 FFFFFFFF 01 0003 0a 000e"))
    data1 = b''
    while True:
        data = uart.read(4096)  # 读取一次最多4096字节
        if not data:  # 如果读取完了就跳出循环
            break
        data1 += data
    uart.flush()
    
    print(len(data1))  # 打印实际读取的字节数
    
    # 继续处理接收到的数据...
    此外,你应该确认所使用的串口助手软件的设置是否正确,并尝试调整串口的波特率、数据位、停止位等参数。
    
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 创建了问题 3月24日

悬赏问题

  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了