【发布时间】:2020-12-01 22:57:14
【问题描述】:
我在通过无线电模块传输图像时遇到了很多问题,在接收端重建图像时会出现问题。
该模块允许我们在每个数据包中传输 256 个字节,其中 16 个字节保留用于标头(地址+AES128 加密),这给我们留下了 240 个字节的 ASCII 编码字符串。
到目前为止,我所做的是将彩色图像转换为 base64 编码流(在 Python 中导入 base64),然后将其拆分为多个不同的行,以将其合并到 240 字节限制内,然后发送到发送器。但是,在接收端,我发现在一定数量的数据包之后,很少有数据包丢失,导致整个图像不完整且无用。我也尝试过其他形式的编码,例如十六进制,结果类似。
有问题的图像是 320x240 像素、24 位深度的 JPG 格式彩色图像(PNG 图像尺寸更大)。
如果有人知道将图像转换为字符串的其他方法或任何允许我将图像转换为 ASCII 流甚至二进制流的开源工具,请告诉我。
编辑: 在更深入地研究了这个问题之后,一个可能的想法是创建一个系统,在该系统中,接收器向发送器发送反馈,表明丢失了特定的数据包。是否有现有的软件或代码可以让我检查它。
谢谢。
【问题讨论】:
-
我不认为解决方案是改变编码格式。最好选择一种能够检测和重传丢失数据包的传输协议(二进制会是最紧凑的)。
-
如第一条评论所述,您的问题与协议有关。如果接收方无法回传任何 ack 或消息,您可以搜索“纠错码”
-
请提及收音机是什么(制造商/型号)。谢谢。
-
非常感谢您的意见,但是关于图像转换的问题仍然存在,有没有更好的方法将图像转换为字符串?由于当前设置导致图像已损坏或完全损坏,有没有办法实现如果某些数据包丢失,图像仍会显示为空格?
-
@MarkSetchell 我正在以 115200 波特率使用 LoRa RYLR869
标签: python image-processing radio file-transfer packet