📄 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 + -