c语言蓝牙接收6,终于搞定了通过两路蓝牙接收数据
一直想做無(wú)線(xiàn)傳感器,通過(guò)藍(lán)牙來(lái)接收數(shù)據(jù),無(wú)奈因?yàn)閍rduino接收串口數(shù)據(jù)的一些問(wèn)題,一直擱到現(xiàn)在。因?yàn)閷W(xué)校里給學(xué)生開(kāi)了選修課,所以手邊有一些nano和mega可以使用,所以就做了用兩個(gè)nano加上兩個(gè)藍(lán)牙模塊來(lái)發(fā)射數(shù)據(jù),用mega加兩個(gè)藍(lán)牙模塊來(lái)接收數(shù)據(jù)。因?yàn)閙ega可以同時(shí)使用4路串口,所以考慮用mega來(lái)作為主控機(jī),用來(lái)接收來(lái)自傳感器的數(shù)據(jù),每個(gè)傳感器加一個(gè)nano和藍(lán)牙來(lái)無(wú)線(xiàn)發(fā)射數(shù)據(jù)。
因?yàn)槭菧y(cè)試,所以在nano中寫(xiě)了一個(gè)簡(jiǎn)單的發(fā)射信號(hào)的語(yǔ)句。以下四nano中的程序:
————————————————我是分界線(xiàn)——————————————————————
int i=1;
void setup() {
Serial.begin(9600);?? }
void loop(){
Serial.print(i);
Serial.print("$");
delay(50);
i++;
}
————————————————我是分界線(xiàn)——————————————————————
以下是mega中的程序:
——————————————————我是分界線(xiàn)————————————————————————
String comdata = "";
String shuju="";
String shuju2="";
int i;
void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
Serial2.begin(9600);
}
void loop()
{
while (Serial1.available() > 0)
{
shuju += char(Serial1.read());
delay(2);
}
while (Serial2.available() > 0)
{
shuju2 +=char(Serial2.read());
delay(2);
}
if (shuju.length() > 0)
{
i=shuju.indexOf("$");
if(i!=-1){
comdata=shuju.substring(0,i);
Serial.print("#1=");
Serial.print(comdata);
Serial.println("$");
shuju=shuju.substring(i+1,shuju.length());
comdata = "";
i=0;
}
}
if (shuju2.length() > 0)
{
i=shuju2.indexOf("$");
if(i!=-1){
comdata=shuju2.substring(0,i);
Serial.print("#2=");
Serial.print(comdata);
Serial.println("$");
shuju2=shuju2.substring(i+1,shuju2.length());
comdata = "";
i=0;
}??? }?}
——————————————我是分界線(xiàn)————————————————————
上篇忘記介紹藍(lán)牙模塊的設(shè)置了,如果想要利用兩路藍(lán)牙來(lái)接收數(shù)據(jù),那么這兩路藍(lán)牙必須設(shè)置不同的密碼,以下是藍(lán)牙模塊的設(shè)置方法,可以將藍(lán)牙模塊接到串口模塊上,然后里喲你串口軟件發(fā)指令給藍(lán)牙模塊,以下設(shè)置是針對(duì)DFrobot的藍(lán)牙模塊的,它上面有開(kāi)關(guān)可以設(shè)置接收命令狀態(tài)。如果不是DFrobot的藍(lán)牙模塊,只要將KEY針腳接高電平就是可以接受命令狀態(tài)。將兩個(gè)藍(lán)牙模塊設(shè)置為主,然后設(shè)置不同的密碼。再將另外兩個(gè)設(shè)置為從,設(shè)置對(duì)應(yīng)主藍(lán)牙的密碼。以下是具體的命令設(shè)置:
在發(fā)送欄中輸入AT(不分大小寫(xiě)),然后點(diǎn)擊發(fā)送,可看見(jiàn)模塊返回OK,這表示AT指令通訊正常。當(dāng)AT指令設(shè)置完畢后,將2號(hào)開(kāi)關(guān)AT Mode撥到2端退出AT命令模式,重新上電后設(shè)置才生效。
1.AT指令集如下:
指令
響應(yīng)
參數(shù)
AT
OK
無(wú)
2.模塊重啟指令:
指令
響應(yīng)
參數(shù)
AT+RESET
OK
無(wú)
3.設(shè)置和查詢(xún)模塊連接模式:
當(dāng)模塊無(wú)法被適配器、主機(jī)連接時(shí),需配置該參數(shù),配置為AT+CMODE=1。
指令
響應(yīng)
參數(shù)
AT+CMODE=< Param >
OK
Param:
0 —— 指定藍(lán)牙地址連接模式 (指定藍(lán)牙地址由綁定指令設(shè)置)
1 —— 任意藍(lán)牙地址連接模式 (不受綁定指令設(shè)置地址的約束)
默認(rèn)連接模式:0
AT+CMODE?
+CMODE: < Param > OK
4.設(shè)置和查詢(xún)模塊角色:
當(dāng)模塊無(wú)法被適配器、主機(jī)搜索到時(shí),需配置該參數(shù),配置為從角色。
模塊角色說(shuō)明:
Slave(從角色) ——被動(dòng)連接,可以和任意藍(lán)牙適配器配對(duì)使用;
Master (主角色)——查詢(xún)周?chē)鷱脑O(shè)備,并主動(dòng)發(fā)起連接,從而建立主、從藍(lán)牙設(shè)備間的透明數(shù)據(jù)傳輸通道。
Slave-Loop(回環(huán)角色) ———被動(dòng)連接,接收遠(yuǎn)程藍(lán)牙主設(shè)備數(shù)據(jù)并將數(shù)據(jù)原樣返回給遠(yuǎn)程藍(lán)牙主設(shè)備;
5.設(shè)置和查詢(xún)配對(duì)碼:
6.設(shè)置和查詢(xún)串口參數(shù):
舉例:設(shè)置串口波特率:115200,1位停止位,無(wú)校驗(yàn)
AT+ UART=115200,0,0\r\n
OK
AT+ UART?
+UART:115200,0,0
OK
注:在應(yīng)用中,選擇1位停止位,無(wú)校驗(yàn)。
總結(jié)
以上是生活随笔為你收集整理的c语言蓝牙接收6,终于搞定了通过两路蓝牙接收数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 全球三大银行被迫加息!这是金融危机的前奏
- 下一篇: 中美两国央行的资产构成对比,美国60%以