我正在开发一种可拍照的设备,并通过无线电波无线传输该照片到台式电脑接收器。在接收端,我使用C和fwrite()重建拆分数据包发送的图像文件。接收数据包执行:
fwrite(&data[3], size, 1, filename);
data [3]是无符号8位整数,数据类型为u08。
我确认有线文件传输有效。如果发射器和接收器直接连接,则没有问题。
然而,无线电信号不足以保证将接收所有数据包。在我的测试中,丢失传输数据包很常见。如果即使丢失一个数据包,图像文件也会损坏。收到率约为85%。
每个数据包都已编号。如果接收的分组号大于预期的分组号,则接收器知道分组已被丢弃。
我的解决方案是使用默认数据包循环并替换丢失的数据包,同时增加预期的数据包数量计数器。基本上,我计划用黑色像素填充丢失的像素,使用接收的数据包创建最完整的图像。我不知道该怎么做。如果收到的数据包编号和预期的数据包编号不匹配,我尝试将数据[3]设置为0,但这不起作用。
我欢迎其他提议的解决方案。
答案 0 :(得分:2)
你没有提到图像格式。如果您正在发送原始RGB图像,那么设置为零的东西应该可以工作但是如果您正在使用压缩图像(如jpeg)并且丢失了包含块大小或用于熵编码的表的信息的标头数据包,则无法获取图像回来。