久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
用Arduino做BP機編碼程序
[打印本頁]
作者:
PLA
時間:
2019-6-4 15:39
標題:
用Arduino做BP機編碼程序
用Arduino做BP機POCSAG編碼程序,配合寶峰5R成功呼響大顧問機,用串口助手發送字符,發送格式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 long calc_addr( unsigned long add,uchar fun ) //地址轉換,第1參數為地址,第2參數為功能
{
unsigned long adr;
unsigned long tem;
Tx_Num=(uchar)(add&0x00000007);//獲取地址發射的幀位次,111位第7幀,后3位地址數據隱藏不發送,接收按幀位還原
adr=0x00;
adr=add&0xFFFFFFF8; //去掉地址碼后3位
adr=adr<<10; //地址左移10位
tem=0x00;
tem=fun; //功能位
tem=tem<<11;//功能位左移11位,功能位為00 01 10 11四種狀態,代表4個地址碼
adr=adr|tem; //地址碼和功能位合成地址碼;
return adr;
}
void Send_start(unsigned long s)
{
uchar i,n;
unsigned long tem;
for(i=0; i<20; i++)//發送576個前導10101010101010
{
tem=s;
for (n=0; n<32; n++)
{
if(tem&0x80000000)
{
digitalWrite(TX,HIGH);
}
else
{
digitalWrite(TX,LOW);
}
delayMicroseconds(ys);//等待延時結束 0.833ms
tem<<=1;
}
}
}
void Send_nill()//發送閑置位
{
uchar n;
unsigned long s=0x7A89C197;
for(n=0; n<32; n++)
{
if(s&0x80000000)
{
digitalWrite(TX,LOW);
}
else
{
digitalWrite(TX,HIGH);
}
delayMicroseconds(ys);//等待延時結束 0.833ms
s<<=1;
}
}
void Send_Num(unsigned long s,char npi) //發送數據
{
uchar n;
int xx0,xx1;
if(npi=='P'){xx1=1;xx0=0;}
if(npi=='N'){xx1=0;xx0=1;}
for (n=0; n<32; n++)
{
if(s&0x80000000)
{
digitalWrite(TX,xx1);
//Serial.print(xx1);
}
else
{
digitalWrite(TX,xx0);
//Serial.print(xx0);
}
delayMicroseconds(ys);//等待延時結束 0.833ms
s<<=1;
}
}
void setup() {
Serial.begin(9600); //設置波特率為9600,一般是這個波特率
pinMode(TX,OUTPUT);
pinMode(PTT,OUTPUT);
}
void loop() {
while (Serial.available() > 0) //讀取串口數據
{
comdata += char(Serial.read());
delay(2);
}
if (comdata.length() > 0) //如果有數據進入處理
{
String np = comdata.substring(0,1);
char npzf=toupper(np[0]);
String ly=comdata.substring(8,9);
int lyi=ly[0];
String dz = comdata.substring(1,8); //獲取地址碼
unsigned long az=dz.toInt(); //地址碼s轉類型
tem=calc_addr(az,lyi-48); //地址碼移位處理
addr=calc_bch_and_parity(tem); //地址碼BCH校驗
String msgdata = comdata.substring(9,200); //截取信息碼內容
int len = msgdata.length()+10; //獲取信息碼字節長度(+4為了讓長度大于1幀,就不用1個漢字還用做判斷了)
byte hui[200]={0};
digitalWrite(PTT,LOW); //對講機ppt
delay(500); //延時500ms
unsigned long mess[200]={0}; //信息碼數組
//信息碼數組元素
unsigned long msg;
int ll=0;
int wz=0;
if(!(msgdata[0]&0x80)){hui[wz]=0x0f;wz++;}
for(int i=0;i<len;i++)
{
if(!(msgdata[i]&0x80) && msgdata[i-1]&0x80 && i>0){hui[wz]=0x0f;wz++;}
hui[wz]=msgdata[i];
wz++;
if(!(msgdata[i]&0x80) && msgdata[i+1]&0x80){hui[wz]=0x0e;wz++;}
}
wz=0;
int k=1;
for(int n=0;n<=len;n++)
{
for(int j=0;j<7;j++)
{
if(hui[wz]&0x01){msg|=0x00000001;}
msg<<=1;
hui[wz]>>=1;
ll++;
if(ll%20==0)
{
msg<<=10;
msg|=0x80000000;
mess[k]=calc_bch_and_parity(msg);
msg=0;
k++;
}
}
wz++;
}
Send_start(0xAAAAAAAA); //發送前言碼
Send_Num(0x7CD215D8,npzf); //發送同步碼
mess[0]=addr; //地址碼放入信息碼第一碼字
for(int j=0;j<120;j++) //循環發送信息碼
{
if(mess[j]!=0){Send_Num(mess[j],npzf);} //數組元素不為0的發送
Serial.println(mess[j],BIN);
if((j+1)%16==0 && j!=0){Send_Num(0x7CD215D8,npzf);} //每隔8幀發送一個同步碼
}
Send_Num(0x7A89C197,npzf); //末尾發送閑置碼
comdata="";
msgdata="";
}
digitalWrite(PTT,HIGH);
}
復制代碼
作者:
51hei團團
時間:
2019-6-5 05:50
好東東啊 家里剛好還有一個bp機,不知道樓主的電路該如何連接啊?
作者:
azi197417
時間:
2019-7-8 16:13
有詳細電路連接就是最好不過了
作者:
cr8526
時間:
2019-10-10 20:30
把壓縮文件下了,,可能在那里有吧
作者:
rgbgirl
時間:
2019-10-13 11:05
這個BP機不是已經淘汰了嗎?做這個有實際用處嗎?
作者:
osthink
時間:
2020-1-25 10:33
樓主,你好,請問怎么配合寶峰5R,有具體的接線圖或說明嗎,非常感謝!
作者:
confessor
時間:
2020-1-29 19:34
看 代碼應該是9腳連對講機輸出 , 10腳連對講機輸出控制
作者:
eruera
時間:
2021-6-8 18:33
請問一下有沒有連線實物圖呢?
作者:
13018573807
時間:
2022-5-31 10:15
請問一下有沒有連線實物圖呢?
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
不卡在线视频
|
国产精品不卡
|
麻豆精品国产91久久久久久
|
超碰人人人人
|
日韩av大片免费看
|
色综合色综合色综合
|
日韩成人免费av
|
男人的天堂在线视频
|
欧美久久一级特黄毛片
|
日韩三
|
丁香婷婷成人
|
天天夜干
|
日本人做爰大片免费观看一老师
|
国产精品日韩欧美一区二区三区
|
国产精品无码专区在线观看
|
中文字幕一区二区三区四区不卡
|
国产三级一区二区三区
|
久草综合在线视频
|
毛片1
|
亚洲精品久久久
|
亚洲一区中文字幕
|
精品欧美一区二区久久久伦
|
日韩欧美一区二区三区免费观看
|
99精品久久
|
欧美在线
|
久久久久国产成人精品亚洲午夜
|
亚洲一区二区国产
|
日韩欧美一区二区三区免费观看
|
午夜视频网
|
aaaaaaa片毛片免费观看
|
久久久久国产精品午夜一区
|
日韩欧美在线不卡
|
欧美激情精品久久久久
|
亚洲成人精品一区
|
久久99精品久久久久
|
亚洲精品国产成人
|
久久99国产精品
|
国产精品视频一区二区三区不卡
|
99色综合
|
日韩中文字幕一区二区
|
国产精品久久久久久亚洲调教
|