国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

Windows系統(tǒng)中使用C#編寫藍(lán)牙通信程序的簡單實(shí)例

2019-10-29 21:29:59
字體:
供稿:網(wǎng)友
這篇文章主要介紹了Windows系統(tǒng)中使用C#編寫藍(lán)牙通信程序的簡單實(shí)例,文中的例子使用到了32feet.NET中的InTheHand.Net.Personal類庫,需要的朋友可以參考下
 

現(xiàn)在很多電腦提供了藍(lán)牙支持,很多筆記本網(wǎng)卡也集成了藍(lán)牙功能,也可以采用USB藍(lán)牙方便的連接手機(jī)等藍(lán)牙設(shè)備進(jìn)行通信。
操作藍(lán)牙要使用類庫InTheHand.Net.Personal
首先在項(xiàng)目中引用該類庫;

static void Main(string[] args) {   BluetoothRadio bluetoothRadio = BluetoothRadio.PrimaryRadio;   if (bluetoothRadio == null)   {   Console.WriteLine("沒有找到本機(jī)藍(lán)牙設(shè)備!");   }   else   {   Console.WriteLine("ClassOfDevice: " + bluetoothRadio.ClassOfDevice);   Console.WriteLine("HardwareStatus: " + bluetoothRadio.HardwareStatus);   Console.WriteLine("HciRevision: " + bluetoothRadio.HciRevision);   Console.WriteLine("HciVersion: " + bluetoothRadio.HciVersion);   Console.WriteLine("LmpSubversion: " + bluetoothRadio.LmpSubversion);   Console.WriteLine("LmpVersion: " + bluetoothRadio.LmpVersion);   Console.WriteLine("LocalAddress: " + bluetoothRadio.LocalAddress);   Console.WriteLine("Manufacturer: " + bluetoothRadio.Manufacturer);   Console.WriteLine("Mode: " + bluetoothRadio.Mode);   Console.WriteLine("Name: " + bluetoothRadio.Name);   Console.WriteLine("Remote:" + bluetoothRadio.Remote);   Console.WriteLine("SoftwareManufacturer: " + bluetoothRadio.SoftwareManufacturer);   Console.WriteLine("StackFactory: " + bluetoothRadio.StackFactory);   }   Console.ReadKey(); } 

 如果PC插入了藍(lán)牙適配器,便會顯示藍(lán)牙相關(guān)信息:

C#,藍(lán)牙,通信程序

 然后我們就要利用藍(lán)牙收發(fā)文件了:
前提是藍(lán)牙設(shè)備(如手機(jī))已經(jīng)和PC配對了

public partial class Form1 : Form {   BluetoothRadio radio = null;//藍(lán)牙適配器   string sendFileName = null;//發(fā)送文件名   BluetoothAddress sendAddress = null;//發(fā)送目的地址   ObexListener listener = null;//監(jiān)聽器   string recDir = null;//接受文件存放目錄   Thread listenThread, sendThread;//發(fā)送/接收線程    public Form1()   {     InitializeComponent();     radio = BluetoothRadio.PrimaryRadio;//獲取當(dāng)前PC的藍(lán)牙適配器     CheckForIllegalCrossThreadCalls = false;//不檢查跨線程調(diào)用     if (radio == null)//檢查該電腦藍(lán)牙是否可用     {       MessageBox.Show("這個電腦藍(lán)牙不可用!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);     }     recDir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);     labelRecDir.Text = recDir;   }    private void buttonSelectBluetooth_Click(object sender, EventArgs e)//選擇遠(yuǎn)程藍(lán)牙設(shè)備   {     SelectBluetoothDeviceDialog dialog = new SelectBluetoothDeviceDialog();     dialog.ShowRemembered = true;//顯示已經(jīng)記住的藍(lán)牙設(shè)備     dialog.ShowAuthenticated = true;//顯示認(rèn)證過的藍(lán)牙設(shè)備     dialog.ShowUnknown = true;//顯示位置藍(lán)牙設(shè)備     if (dialog.ShowDialog() == DialogResult.OK)     {       sendAddress = dialog.SelectedDevice.DeviceAddress;//獲取選擇的遠(yuǎn)程藍(lán)牙地址       labelAddress.Text = "地址:" + sendAddress.ToString() + "  設(shè)備名:" + dialog.SelectedDevice.DeviceName;     }   }    private void buttonSelectFile_Click(object sender, EventArgs e)//選擇要發(fā)送的本地文件   {     OpenFileDialog dialog = new OpenFileDialog();     if (dialog.ShowDialog() == DialogResult.OK)     {       sendFileName = dialog.FileName;//設(shè)置文件名       labelPath.Text = Path.GetFileName(sendFileName);     }   }    private void buttonSend_Click(object sender, EventArgs e)//發(fā)送按鈕   {     sendThread = new Thread(sendFile);//開啟發(fā)送文件線程     sendThread.Start();   }    private void sendFile()//發(fā)送文件方法   {     ObexWebRequest request = new ObexWebRequest(sendAddress, Path.GetFileName(sendFileName));//創(chuàng)建網(wǎng)絡(luò)請求     WebResponse response = null;     try     {       buttonSend.Enabled = false;       request.ReadFile(sendFileName);//發(fā)送文件       labelInfo.Text = "開始發(fā)送!";       response = request.GetResponse();//獲取回應(yīng)       labelInfo.Text = "發(fā)送完成!";     }     catch (System.Exception ex)     {       MessageBox.Show("發(fā)送失?。?quot;, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);       labelInfo.Text = "發(fā)送失敗!";     }     finally     {       if (response != null)       {         response.Close();         buttonSend.Enabled = true;       }     }   }    private void buttonselectRecDir_Click(object sender, EventArgs e)//選擇接受目錄   {     FolderBrowserDialog dialog = new FolderBrowserDialog();     dialog.Description = "請選擇藍(lán)牙接收文件的存放路徑";     if (dialog.ShowDialog() == DialogResult.OK)     {       recDir = dialog.SelectedPath;       labelRecDir.Text = recDir;     }   }    private void buttonListen_Click(object sender, EventArgs e)//開始/停止監(jiān)聽   {     if (listener == null || !listener.IsListening)     {       radio.Mode = RadioMode.Discoverable;//設(shè)置本地藍(lán)牙可被檢測       listener = new ObexListener(ObexTransport.Bluetooth);//創(chuàng)建監(jiān)聽       listener.Start();       if (listener.IsListening)       {         buttonListen.Text = "停止";         labelRecInfo.Text = "開始監(jiān)聽";         listenThread = new Thread(receiveFile);//開啟監(jiān)聽線程         listenThread.Start();       }     }     else     {        listener.Stop();       buttonListen.Text = "監(jiān)聽";       labelRecInfo.Text = "停止監(jiān)聽";     }   }    private void receiveFile()//收文件方法   {     ObexListenerContext context = null;     ObexListenerRequest request = null;     while (listener.IsListening)     {       context = listener.GetContext();//獲取監(jiān)聽上下文       if (context == null)       {         break;       }       request = context.Request;//獲取請求       string uriString = Uri.UnescapeDataString(request.RawUrl);//將uri轉(zhuǎn)換成字符串       string recFileName = recDir + uriString;       request.WriteFile(recFileName);//接收文件       labelRecInfo.Text = "收到文件" + uriString.TrimStart(new char[] { '/' });     }   }    private void Form1_FormClosed(object sender, FormClosedEventArgs e)   {     if (sendThread != null)     {       sendThread.Abort();     }     if (listenThread != null)     {       listenThread.Abort();     }     if (listener != null && listener.IsListening)     {       listener.Stop();     }   } } 

程序界面:

C#,藍(lán)牙,通信程序

SelectBluetoothDeviceDialog是一個InTheHand.Net.Personal提供的窗體,用于選擇藍(lán)牙設(shè)備:

C#,藍(lán)牙,通信程序

從手機(jī)往電腦發(fā)送文件需要在電腦上開啟監(jiān)聽ObexListener,才能收到文件。

C#,藍(lán)牙,通信程序

核心代碼:

BluetoothRadio radio = null;//藍(lán)牙適配器 string sendFileName = null;//發(fā)送文件名 BluetoothAddress sendAddress = null;//發(fā)送目的地址 ObexListener listener = null;//監(jiān)聽器 string recDir = null;//接受文件存放目錄 Thread listenThread, sendThread;//發(fā)送/接收線程  radio = BluetoothRadio.PrimaryRadio;//獲取當(dāng)前PC的藍(lán)牙適配器  //關(guān)于藍(lán)牙設(shè)備選擇對話框 SelectBluetoothDeviceDialog dialog = new SelectBluetoothDeviceDialog(); dialog.ShowRemembered = true;//顯示已經(jīng)記住的藍(lán)牙設(shè)備 dialog.ShowAuthenticated = true;//顯示認(rèn)證過的藍(lán)牙設(shè)備 dialog.ShowUnknown = true;//顯示位置藍(lán)牙設(shè)備 sendAddress = dialog.SelectedDevice.DeviceAddress;//獲取選擇的遠(yuǎn)程藍(lán)牙地址  //發(fā)送文件操作 ObexWebRequest request = new ObexWebRequest(sendAddress, Path.GetFileName(sendFileName));//創(chuàng)建網(wǎng)絡(luò)請求 WebResponse response = null; request.ReadFile(sendFileName);//發(fā)送文件 response = request.GetResponse();//獲取回應(yīng) response.Close();  //接收文件 radio.Mode = RadioMode.Discoverable;//設(shè)置本地藍(lán)牙可被檢測 listener = new ObexListener(ObexTransport.Bluetooth);//創(chuàng)建監(jiān)聽 listener.Start(); listener.Stop();  ObexListenerContext context = null; ObexListenerRequest request = null; context = listener.GetContext();//獲取監(jiān)聽上下文 request = context.Request;//獲取請求 string uriString = Uri.UnescapeDataString(request.RawUrl);//將uri轉(zhuǎn)換成字符串 string recFileName = recDir + uriString; request.WriteFile(recFileName);//接收文件 labelRecInfo.Text = "收到文件" + uriString.TrimStart(new char[] { '/' } 

 

PS:關(guān)于InTheHand.Net.Personal
InTheHand.Net.Personal.dll來源于32feet.NET。
32feet.NET是shared-source的項(xiàng)目,支持CF.net 2.0以及桌面版本.NET framework,提供短距離領(lǐng)域(personal area networking technologie)的通信功能,支持bluetooth,Infrared(IrDA)紅外等. 想了解更多的信息可以參考其 官方主頁,其項(xiàng)目的安裝包和源碼是放在微軟的開源工程網(wǎng)站CodePlex上面的,作為.NET開發(fā)人員我們必須要上的網(wǎng)站就是CodePlex~



注:相關(guān)教程知識閱讀請移步到c#教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 玛多县| 金华市| 内江市| 张家港市| 通江县| 德令哈市| 万安县| 马公市| 大余县| 西城区| 濮阳县| 荥经县| 阿勒泰市| 石棉县| 淮安市| 万载县| 潜江市| 揭西县| 乡城县| 梅州市| 闽侯县| 攀枝花市| 荥经县| 绥芬河市| 永丰县| 砚山县| 塔城市| 永顺县| 礼泉县| 太原市| 五大连池市| 锦州市| 绥滨县| 宁乡县| 武宁县| 浦东新区| 彰武县| 新干县| 石楼县| 屏山县| 饶河县|