Ruby中的AFSK编码和解码

时间:2015-01-26 10:18:46

标签: ruby radio

我正在寻找一个音频频移键控' (AFSK)编码器和解码器,可用于使用无线电/声波发送和接收数据。

贝尔202是AFSK标准我试图通过它将二进制数据编码为两个音调1200hz和2200hz。这两个音调代表二进制的1和0。

我试图在红宝石中使用win32-sound来生成这些音调。问题是,要在一个音调之间切换并移动到另一个音调,它需要大约1秒才能完成,这对于响铃202能够操作的1200波特速度来说太慢了。

我的问题是:有没有其他方法来创建这些音调并在它们之间更快地切换?另外,虽然我在这里有一个宝石可以让我将这些音调解码回二进制数据吗?

1 个答案:

答案 0 :(得分:1)

我曾尝试在Ruby中编写AFSK调制器/解调器。我有一个可以写入和读取WAV文件的工作原型,但实际上并没有接近实时性能(如果我没记错的话,我将它优化到大约8倍实时)。

一些提示:

  • Ruby + Audio非常糟糕,您可能无法找到许多用于解调的Gems
  • 对我来说,只有一个纯C解决方案(带有一个小的Objective-C包装器,所以我可以在iPhone应用程序中使用它)可以提供必要的性能提升
  • 使用连续相位FSK(CPFSK)消除编码信号中的不连续性,有助于批次具有信号质量
  • 我使用了一个相干解调器,然后是状态机,效果非常好https://www.kth.se/polopoly_fs/1.141538!/Menu/general/column-content/attachment/lec9.pdf