我正在开发一种设备,它可以拍照并通过无线电波将该图片无线传输到台式计算机接收器。在接收端,我使用 C 和 fwrite() 来重建拆分数据包发送的图像文件。接收数据包执行:
fwrite(&data[3], size, 1, filename);
data[3] 是一个无符号 8 位整数,数据类型为 u08。
我确认有线文件传输有效。如果发射器和接收器直接连接,则没有问题。
但是,无线电信号的强度不足以保证接收到所有数据包。在我的测试中,传输数据包丢失是很常见的。即使丢失一个数据包,图像文件也会损坏。接收率约为 85%。
每个数据包都有编号。如果接收到的数据包编号大于预期的数据包编号,则接收方知道数据包已被丢弃。
我的解决方案是循环并用默认数据包替换丢失的数据包,同时增加预期的数据包编号计数器。基本上,我计划用黑色像素填充丢失的像素,使用接收到的数据包来创建尽可能完整的图片。我不知道该怎么做。如果接收到的数据包编号和预期的数据包编号不匹配,我尝试简单地将 data[3] 设置为 0,但这不起作用。
我欢迎其他提出的解决方案。