?? readme.txt
字號:
一個軟件無線電的函數庫,它實現了調制、解調等操作,用戶只要給它一些ASCII碼(漢字也可),它就可以產生一幀幀的數據,這些數據經DA后可直接發射。用戶也可以將實際接收到的一幀幀數據通過AD后傳給函數,它就能解出原始的信息。可以參見例子。
當然,AD、DA的工作是由用戶負責的,函數庫和硬件操作是隔離的。
建議選用計算機聲卡作AD、DA。
特點是抗干擾能力強。
僅是個展現軟件無線電能力的東東,用戶可試用于任意方面。
免費。
說明
(1)計算機的速度要足夠快否則可能無法實時解碼。
(2)庫并沒有限定AD、DA的采樣頻率,只是假定采樣頻率是工作頻率的4倍,例如如果采集設備工作在24000Hz,則系統的中心頻率為6000Hz。
(3)函數說明
__declspec(dllimport)int CHYEncode(char*iin,float*out)//編碼
iin!=NULL,初始化,返回信號的幀數,iin長度應小于1000
iin==NULL,編碼,返回剩余的幀數,out為編碼后的一幀信號
發射例子示意
char msg[]="1234567890";
float dat[NLEN];
n=CHYEncode(msg,0);//初始化,返回信號的幀數
while(CHYEncode(0,dat))
{
doDA(dat);
}
__declspec(dllexport) DWORD CHYDecode(int cmd,float*iin)//解碼
cmd 0:終止解碼
1:初始化
2:初始化后繼續解碼
iin A/D采集的一幀信號
返回值wd的最高4bit(wd>>28)代表16種信息,
0:非有效報文內容,無需處理
1:正式有效報文內容,最低10bit代表
3:報文結束
5:該信息是報文頭
6:該信息是報文尾
8:error
接收例子示意
char buf[1024];
int n=0,GoOnFlag=1;
DWORD inf;
float dat[NLEN];
CHYDecode(1,0);
while(GoOnFlag)
{
GetAD(dat);
inf=CHYDecode(2,dat);//用時約800ms
switch(inf>>28)
{
case 8:errordo();break;
case 3:CHYDecode(0,0);//關閉
break;
case 1:buf[n]=(inf&0xff);n++;break;
default:break;
}
}
以上只是最簡單的示意例子,如果真要做到實時處理則必須根據硬件特性用雙緩沖區的方式進行。
(4)頭文件
#define NLEN 8176 /*一幀信號含有的采樣點數*/
__declspec(dllexport) DWORD CHYDecode(int cmd,float*iin);
__declspec(dllexport) int CHYEncode(char*iin,float*out);
(5)包含文件
qcode.dll,qcode.lib,readme.txt
詳細請看vc_ex.zip中的例子
可以用cooledit軟件將數據轉化為音頻文件進行發射接收的測試
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -