Arduino做BP机POCSAG编码程序,大顾问机,用串口助手发送字符,发送格式a+1234567+b+信息(a=N或P向位,1234567为呼机在7位地址码,b=1-4,为铃声)如:N12345671测试!
Arduino源程序如下:
#define uchar unsigned char
#define uint unsigned int
String comdata = "";
unsigned long addr;
int PTT = 10; //PTT控制端
int TX=9;//数据输出端
int ys=819;//延时
unsigned long tem;
uchar Tx_Num;
unsigned long calc_bch_and_parity(unsigned long cw_e) //BCH校验和奇偶校验函数
{
uchar i;
uchar parity = 0; //奇偶校验计数
unsigned long local_cw; //临时存放数
local_cw=cw_e;//保存cw_e参数值
for(i=1;i<=21; i++,cw_e<<=1)
if (cw_e & 0x80000000) cw_e ^= 0xED200000;
cw_e=cw_e&0xFFC00000;//保留前10位,BCH校验值共11位,只保留前10位有效数据
local_cw |= (cw_e >> 21); //BCH校验数移至第22位到31位,BCH共10位,并和原始数据相加
cw_e=local_cw;
for(i=0; i<31; i++, cw_e<<=1) if(cw_e&0x80000000) parity++;
if(parity%2) local_cw+=1;//从1至31位判断为奇数则后面加1补充为偶数
return local_cw;
}
unsigned lo