gpt4 book ai didi

c - 使用 fwrite() 进行 Jpeg 无线传输;需要处理丢失的数据包

转载 作者:行者123 更新时间:2023-11-30 14:25:07 26 4
gpt4 key购买 nike

我正在开发一种设备,可以拍照并通过 radio 波将照片无线传输到台式计算机接收器。在接收端,我使用 C 和 fwrite() 来重建由分割数据包发送的图像文件。接收数据包执行:

    fwrite(&data[3], size, 1, filename);

data[3]是一个无符号8位整数,数据类型u08。

我确认有线文件传输有效。如果发射器和接收器直接连接是没有问题的。

但是, radio 信号不够强,无法保证接收到所有数据包。在我的测试中,传输数据包丢失是很常见的。即使丢失一个数据包,镜像文件也会损坏。接收率约为85%。

每个数据包都有编号。如果接收到的数据包数量大于预期的数据包数量,则接收方知道数据包已被丢弃。

我的解决方案是循环并用默认数据包替换丢失的数据包,同时增加预期数据包数量计数器。基本上,我计划用黑色像素填充丢失的像素,使用收到的数据包创建尽可能完整的图片。我不知道该怎么做。如果收到的数据包编号和预期的数据包编号不匹配,我尝试简单地将 data[3] 设置为 0,但这不起作用。

我欢迎其他提出的解决方案。

最佳答案

你没有提到图像格式。如果您发送原始 RGB 图像,那么设置为零应该可以工作,但如果您正在使用 jpeg 等压缩图像,并且您丢失了包含有关 block 大小或用于熵编码的表的信息的 header 数据包,则无法获取图像返回。

关于c - 使用 fwrite() 进行 Jpeg 无线传输;需要处理丢失的数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10695309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com