我正在尝试开发一款使用手机上的相机闪光灯传输摩尔斯电码的应用程序。我的传输部分工作正常。我根据 DOT 或 DASH 打开闪光灯,根据 GAP、LETTER_GAP 和 WORD_GAP 关闭闪光灯。所有 DOT、DASH、GAP、LETTER_GAP 和 WORD_GAP 都有不同的持续时间,它们将打开或关闭。
我很难弄清楚如何在接收器端对此进行解码...我正在使用 opencp 二进制阈值来查看图像中是否存在亮点。基于相机 fps,我可以计算出有多少帧连续打开或关闭闪光灯,这决定了点/破折号/间隙。这是例子。
从发射器电话说我正在发送“abc xyz”作为字符串。在接收电话上我得到这些字符串
.-#-.*..#-.*-。 -.*.-#-.*--#--*.*.在哪里,
“。” - 点 “-”-破折号 “*“- 差距 "#"- 字母间隙 ""- 单词间隙
这个字符串正好代表“abc xyz”。问题是我想不出一种方法让接收电话从哪里开始寻找新消息以及何时停止,因为一切都是使用光信号发送的。发送和接收之间没有同步。我的意思是接收器无法识别开始和结束信号,因为我只处理 opencv 提供的原始相机帧。 有什么办法可以强加这些吗?或进行检测/解码的替代解决方案?
如果我不清楚,请告诉我。谢谢!
最佳答案
嗯,可以有多个答案。首先,您可以要求接收器手动输入并分析前几秒的所有帧。或许您可以随时监控并设置光图案强度的阈值。您还可以制作一个重新同步序列,在该序列中,发送方将光亮一秒钟并开始传输。这将是握手,其余的是消息。
干得好,希望你能用它制作一个应用程序。
关于使用相机闪光灯获取摩尔斯电码的 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15576613/