7

私は個人的なプロジェクトに取り組んでいます。古いアマチュア無線でデータを送信したいと思っています。

私の最初のドラフトアプリケーションは次のように機能します:

4 つの「シグナル」で 1 バイトを構成します。

  • 5000hzは「00」を意味します

  • 6khzは「01」を意味します

  • 7khzは「10」を意味します

  • 8khzは「11」を意味します

  • 9khzは前のものと同じことを意味します

次に、これらの 4 つのビットをマージして、次のビットからやり直します。

復調はうまく機能し、十分に高速であるはずですが、サウンドの生成に問題があります...遅いです...

ここに私のデバッグコードがあります:

#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
Beep( 5000, 100 );
Beep( 6000, 100 );
Beep( 7000, 100 );
Beep( 8000, 100 );
Beep( 9000, 100 );
return 0;
}

ビープ音が 5 回、それぞれ 100 ミリ秒間隔で近接していると予想していますが、次のようになります (上に 5 つの「100 ミリ秒のビープ音()」、下に 5 つの「20 ミリ秒のビープ音()」): a

ご覧のとおり、100 ミリ秒のビープ音を鳴らしたい場合は 50 ミリ秒のビープ音の後に 75 ミリ秒の一時停止があり、20 ミリ秒のビープ音を鳴らしたい場合は 10 ミリ秒のビープ音の後に 100 ミリ秒の一時停止が続きます。

Beep() for Windows よりも高速で正確なものはありますか? (最終的なアプリケーションはラズベリーパイで動作するはずなので、Linuxでも動作するものはさらに優れています)

3 ミリ秒のサウンドを使用すると、より高い帯域幅を使用できます (.... 41 バイト/秒.. これは、私のアプリケーションには十分すぎる値です)。

コンパイラ: g++ (mingw)

OS : 7 つの 64 ビット

4

1 に答える 1