私は個人的なプロジェクトに取り組んでいます。古いアマチュア無線でデータを送信したいと思っています。
私の最初のドラフトアプリケーションは次のように機能します:
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 ミリ秒のビープ音()」):
ご覧のとおり、100 ミリ秒のビープ音を鳴らしたい場合は 50 ミリ秒のビープ音の後に 75 ミリ秒の一時停止があり、20 ミリ秒のビープ音を鳴らしたい場合は 10 ミリ秒のビープ音の後に 100 ミリ秒の一時停止が続きます。
Beep() for Windows よりも高速で正確なものはありますか? (最終的なアプリケーションはラズベリーパイで動作するはずなので、Linuxでも動作するものはさらに優れています)
3 ミリ秒のサウンドを使用すると、より高い帯域幅を使用できます (.... 41 バイト/秒.. これは、私のアプリケーションには十分すぎる値です)。
コンパイラ: g++ (mingw)
OS : 7 つの 64 ビット