中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
[C#] 編程控制筆記本藍(lán)牙與外部藍(lán)牙設(shè)備通信

一、藍(lán)牙模塊XLBT232‐D01介紹(外部設(shè)備藍(lán)牙)

1.1、藍(lán)牙模塊簡(jiǎn)介

XLBT232-D0101藍(lán)牙模塊采用CSR BlueCore 芯片,配置6-8Mbit 的軟件存儲(chǔ)空間,
支持AT 指令,用戶可根據(jù)需要更改SPP 角色(主、從模式)以及串口波特率、
設(shè)備名稱、配對(duì)密碼等參數(shù),使用靈活。

 

1.2、模塊功能介紹

1.2.1、特性

  •  藍(lán)牙協(xié)議:Bluetooth Specification V2.1+EDR、V2.0+EDR、V2.1、V2.0 V1.2
  • ? 工作頻率:2.4GHz ISM band
  • ? 調(diào)制方式:GFSK(Gaussian Frequency Shift Keying)
  • ? 發(fā)射 率:≤4dBm, Class 2
  • ? 靈 敏 度:≤-84dBm at 0.1% BER
  • ? 傳輸速率:Asynchronous: 2.1Mbps(Max) / 160 kbpsSynchronous: 1Mbps/1Mbps
  • ? 安全特性:Authentication and encryption
  • ? 支持服務(wù):Bluetooth SPP(主模式& 從模式)
  • ? 供電電源:+3.3VDC 50mA
  • ? 工作溫度:-5 ~ +65 Centigrade
  • ? 外觀尺寸:26.9mm x 13mm x 2.2 mm

1.2.2、模塊接線原理圖

PS:當(dāng)然也能用USB轉(zhuǎn)TTL模塊進(jìn)行連接在電腦上調(diào)試,畢竟大多數(shù)筆記本已經(jīng)沒(méi)有串口啦!

 

1.3、使用說(shuō)明

[圖:藍(lán)牙模塊]

>_<" KEY為輸入管腳,短按控制,或者輸入約100ms 的高電平單次脈沖,可以
實(shí)現(xiàn)以下功能:

  • 模塊設(shè)置為SPP 主機(jī)模式時(shí):

    未連接狀態(tài)時(shí):清除配對(duì)信息(若存在配對(duì)設(shè)備信息)

    已連接狀態(tài)時(shí):主動(dòng)發(fā)起斷開(kāi)連接,延時(shí)150ms 后重啟,重新搜索
  連接從設(shè)備; 在斷開(kāi)連接時(shí):重新搜索連接從設(shè)備。

  • 模塊設(shè)置為SPP 從機(jī)時(shí):

    在已連接狀態(tài)時(shí):主動(dòng)發(fā)起斷開(kāi)連接,延時(shí)150ms 后重啟,重新進(jìn)入被搜
     索狀態(tài),等待主機(jī)配對(duì)和連接

    在斷開(kāi)連接時(shí):延時(shí)150ms 后重啟,重新進(jìn)入被搜索狀態(tài),等待主機(jī)配對(duì)
     和連接。

>_<" 顯示模塊當(dāng)前工作狀態(tài):

  • 待機(jī)狀態(tài)慢閃——重復(fù)2s 脈沖;
  • 連接狀態(tài)長(zhǎng)亮——高電平。

 

1.4、AT指令集

藍(lán)牙模塊出廠默認(rèn)的串口配置為:波特率9600,無(wú)校驗(yàn),數(shù)據(jù)位8,停止位1。
PS:接下來(lái)說(shuō)明以上位機(jī)為電腦,模塊參數(shù)為出廠設(shè)置時(shí)進(jìn)行配置說(shuō)明。
>_<" 將模塊通過(guò)USB電平轉(zhuǎn)換板連接到電腦USB口(USB轉(zhuǎn)TTL),使用串口調(diào)試助手,按
照 9600,N,8,1 進(jìn)行配置,打開(kāi)串口后,發(fā)送 AT(無(wú)\r\n),若返回 OK,說(shuō)明配置
成功。
PS:設(shè)置 AT 指令必須在藍(lán)牙模塊未連接或斷開(kāi) SPP 鏈接時(shí)才可以(上電或配對(duì)
后都可以,如果連接 SPP,串口輸入的數(shù)據(jù)將會(huì)直接發(fā)送到遠(yuǎn)端藍(lán)牙設(shè)備串口)

1.4.1、測(cè)試指令:

1.4.2、查詢\設(shè)置波特率指令:

1.4.3、查詢\設(shè)置設(shè)備名稱指令:

1.4.4、恢復(fù)默認(rèn)設(shè)置指令:

1.4.5、模塊復(fù)位\重啟指令:

1.4.6、查詢\設(shè)置主從模式:

1.4.7、查詢\設(shè)置配對(duì)密碼:

1.4.8、查詢\設(shè)置是否需要密碼鑒權(quán):

PS:為方便使用,默認(rèn)為不用密碼鑒權(quán)連接,搜索到藍(lán)牙串口之后,直接連接
可。有安全考慮的客戶請(qǐng)選擇需要密碼鑒權(quán)。
PS:此指令只有在從設(shè)備時(shí)才有效;主設(shè)備時(shí)不接受此指令,發(fā)送此指令沒(méi)
有回復(fù),也不執(zhí)行

1.4.9、清除主設(shè)備配對(duì)信息指令:

PS:此指令只有在主設(shè)備時(shí)才有效;從設(shè)備時(shí)不接受此指令,發(fā)送此指令
沒(méi)有回復(fù),也不執(zhí)行。

1.4.10、搜索并連接新的藍(lán)牙串口從設(shè)備(*)指令:

PS:此指令只有在主設(shè)備時(shí)才有效;從設(shè)備時(shí)不接受此指令,發(fā)送此指令沒(méi)
有回復(fù),也不執(zhí)行。

1.4.11、連接最后一次連接的藍(lán)牙串口從設(shè)備(*)指令:

PS:此指令只有在主設(shè)備時(shí)才有效;從設(shè)備時(shí)不接受此指令,發(fā)送此指令沒(méi)
有回復(fù),也不執(zhí)行。

1.4.12、連接指定藍(lán)牙地址的從設(shè)備(*)指令:

PS:此指令只有在主設(shè)備時(shí)才有效;從設(shè)備時(shí)不接受此指令,發(fā)送此指令沒(méi)
有回復(fù),也不執(zhí)行。

1.4.13、查詢、設(shè)置軟件版本指令:

1.4.14、系統(tǒng)幫助指令:

1.4.15、查詢本機(jī)MAC 地址指令:

>_<: 1:所有參數(shù)設(shè)置后存儲(chǔ)在模塊內(nèi),下次啟動(dòng)時(shí)無(wú)需再次設(shè)置
         2:AT 指令后標(biāo)注*號(hào)的,表示目前未應(yīng)用的AT 指令

 

 

二、藍(lán)牙模塊配置與筆記本電腦相連

2.1.1、藍(lán)牙初始化配置:

將藍(lán)牙模塊通過(guò)TTL轉(zhuǎn)USB模塊連接到筆記本,打開(kāi)串口助手,通過(guò)上述AT指令設(shè)置為從設(shè)備,波特率為9600,然后重啟

[圖:USB轉(zhuǎn)TTL模塊]

[圖:串口助手]

2.1.2、電腦為主設(shè)備搜索建立連接:

點(diǎn)擊筆記本藍(lán)牙標(biāo)志的小圖標(biāo),添加藍(lán)牙設(shè)備:

然后要等一會(huì),筆記本正在裝驅(qū)動(dòng):

然后右擊藍(lán)牙圖標(biāo),查看藍(lán)牙設(shè)備,可見(jiàn)我們的設(shè)備已經(jīng)被電腦發(fā)現(xiàn)并添加:

查看該設(shè)備屬性,此時(shí)筆記本為該設(shè)備提供一個(gè)串口,就是筆記本藍(lán)牙和設(shè)備藍(lán)牙通信的通道,要記住這個(gè)一會(huì)編程的時(shí)候會(huì)用到:

PS:這個(gè)COM15也可以在設(shè)備管理器中修改為其他通道

 

 

三、C#編程使筆記本藍(lán)牙和外部設(shè)備藍(lán)牙通信:

其實(shí)配對(duì)以后,藍(lán)牙就被模擬成了一個(gè)端口,我們可以用最簡(jiǎn)單的端口通訊來(lái)收發(fā)信息。首先,在每次啟動(dòng)時(shí),需要連接端口:

[FORM初始化時(shí)獲取所有的COM口,并加入下拉列表]

 1 public Form1() 2 { 3     InitializeComponent(); 4  5     //Get all port list for selection 6     //獲得所有的端口列表,并顯示在列表內(nèi) 7     PortList.Items.Clear(); 8     string[] Ports = SerialPort.GetPortNames(); 9 10     for (int i = 0; i < Ports.Length; i++)11     {12         string s = Ports[i].ToUpper();13         Regex reg = new Regex("[^COM\\d]", RegexOptions.IgnoreCase | RegexOptions.Multiline);14         s = reg.Replace(s, "");15 16         PortList.Items.Add(s);17     }18     if (Ports.Length > 1) PortList.SelectedIndex = 1;19 }

[連接按鈕事件:選中l(wèi)ist中的被選中的COM口進(jìn)行連接,如果連接成功就在狀態(tài)欄顯示藍(lán)牙連接成功]

 1 private void ConnectButton_Click(object sender, EventArgs e) 2 { 3     if (!BluetoothConnection.IsOpen) 4     { 5         //Start 6         Status = "正在連接藍(lán)牙設(shè)備"; 7         BluetoothConnection = new SerialPort(); 8         ConnectButton.Enabled = false; 9         BluetoothConnection.PortName = PortList.SelectedItem.ToString();10         BluetoothConnection.Open();11         BluetoothConnection.ReadTimeout = 10000;12         BluetoothConnection.DataReceived += new SerialDataReceivedEventHandler(BlueToothDataReceived);13         Status = "藍(lán)牙連接成功";14     }15 }

[藍(lán)牙接收數(shù)據(jù)事件響應(yīng)函數(shù),在按鈕連接事件中聲明的該事件,用于響應(yīng)藍(lán)牙數(shù)據(jù)接收]

 1 private void BlueToothDataReceived(object o, SerialDataReceivedEventArgs e) 2 { 3     //int length = BluetoothConnection.ReadByte(); 4     Thread.Sleep(1000); 5     int length = 13; 6     BlueToothReceivedData = DateTime.Now.ToLongTimeString() + "\r\n"; 7     BlueToothReceivedData += "收到字節(jié)數(shù):" + length + "\r\n"; 8  9     byte[] data = new byte[length];10     BluetoothConnection.Read(data,0,length);11     for (int i = 0; i < length; i++)12     {13         BlueToothReceivedData += string.Format("data[{0}] = {1}\r\n", i, data[i]);14     }15     //receive close message16     if (length == 3 && data[0] == 255 && data[1] == 255 && data[2] == 255)17     {18         //Stop19         Status = "正在斷開(kāi)藍(lán)牙設(shè)備";20         BluetoothConnection.Close();21         BluetoothConnection.Dispose();22         BluetoothConnection = null;23         ConnectButton.Enabled = true;24         Status = "藍(lán)牙斷開(kāi)成功";25     }26 }
  • 這里第4行讓程序休息1是因?yàn)檠訒r(shí)等待從設(shè)備把數(shù)據(jù)發(fā)送完全。
  • 這里為了方便我嚴(yán)格控制讓發(fā)送數(shù)據(jù)為13Byte。
  • 從設(shè)備發(fā)送的13Byte數(shù)據(jù)送至緩沖區(qū),PC端C#程序通過(guò)read()函數(shù)將緩沖區(qū)數(shù)據(jù)接收到data中,下面是格式輸出一下數(shù)據(jù)。

[發(fā)送數(shù)據(jù)函數(shù)]

 1 private void BlueToothDataSend(byte[] data) 2 { 3     //int length = data.Length; 4     //byte[] readData = new byte[length + 2]; 5     //readData[0] = (byte)(length % 255); 6     //readData[1] = (byte)(length / 255); 7     //for (int i = 0; i < length; i++) 8     //{ 9     //    readData[i + 2] = data[i];10     //}11     //BluetoothConnection.Write(readData, 0, length + 2);12     BluetoothConnection.Write(data, 0, 1);13     //Status = "發(fā)送數(shù)據(jù)字節(jié)數(shù):" + length;14 }
  • 本來(lái)是將data[]數(shù)據(jù)發(fā)送出去,因?yàn)槲覐脑O(shè)備設(shè)置為只要有數(shù)據(jù)發(fā)送過(guò)來(lái)就做出響應(yīng)發(fā)送13Byte數(shù)據(jù),所以就直接將data的第一byte發(fā)送出去了。

[定時(shí)器函數(shù):用于刷新?tīng)顟B(tài)欄,和接收數(shù)據(jù)顯示]

1 private void MonitorTimer_Tick(object sender, EventArgs e)2 {3     StatusMessage.Text = Status;4     BlueToothMessage.Text = BlueToothReceivedData;5 }

[發(fā)送數(shù)據(jù)按鈕:將SendMessage中的數(shù)據(jù)獲得發(fā)送出去]

1 private void SendButton_Click(object sender, EventArgs e)2 {3     byte n;4     byte.TryParse(SendMessage.Text, out n);5 6     BlueToothDataSend(new byte[] { n });7 }

 

 

四、PC和51單片機(jī)通過(guò)藍(lán)牙連接展示

4.1.1、51單片機(jī)部分程序

一定要用11.0952Mhz的晶振,我用12Mhz結(jié)果出現(xiàn)幀丟失!其實(shí)這里采用的是52單片機(jī),在此處區(qū)別不是很大~

將藍(lán)牙模塊的RXD連接單片機(jī)的RXD(P3.0),TXD連接單片機(jī)的TXD(P3.1),然后就像以前操作串口一樣操作就行啦~

I2C.c
main.c

因?yàn)槲疫€在P1.0和P1.1連接一個(gè)陀螺儀MPU6050所以上面的代碼有點(diǎn)煩,其實(shí)可以參考一下我以前發(fā)的51單片機(jī)串口通信~

http://www.cnblogs.com/zjutlitao/p/3788696.htm

l

 

4.1.2、沒(méi)有51單片機(jī)的情況

可以將藍(lán)牙模塊連接在USB轉(zhuǎn)TTL上,用串口助手和你寫的C#程序相互通信。

4.1.3、運(yùn)行C#程序進(jìn)行連接通信

[選擇剛才的那個(gè)藍(lán)牙端口點(diǎn)擊連接]

[第一次藍(lán)牙圖標(biāo)會(huì)給出一個(gè)驗(yàn)證提示:在驗(yàn)證框內(nèi)輸入AT指令配置時(shí)的你設(shè)置的驗(yàn)證碼]

[然后就可以通信啦,如下:]

 

PS:相關(guān)代碼及資料

C#藍(lán)牙工程代碼:http://pan.baidu.com/s/1hqHwG4W

51藍(lán)牙工程代碼:http://pan.baidu.com/s/1dDqywVZ

藍(lán)牙模塊說(shuō)明書:http://pan.baidu.com/s/1kT61nx1

C#藍(lán)牙相關(guān)博客鏈接:http://www.diy-robots.com/?p=410%20%E8%93%9D%E7%89%99

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
HC05藍(lán)牙模塊的使用
從零開(kāi)始DIY一輛藍(lán)牙遙控小車
低功耗藍(lán)牙串口透?jìng)鲄f(xié)議和AT指令說(shuō)明
【藍(lán)牙5.0模塊】藍(lán)牙包長(zhǎng)可調(diào) 動(dòng)態(tài)發(fā)射功率 高速連傳
win7通過(guò)藍(lán)牙手機(jī)GPRS連接到Internet
藍(lán)牙技術(shù)架起LabVIEW和Arduino之間無(wú)線溝通的橋梁
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服