亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

Windows系統中使用C#編寫藍牙通信程序的簡單實例

2020-01-24 01:12:28
字體:
來源:轉載
供稿:網友

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

static void Main(string[] args) {   BluetoothRadio bluetoothRadio = BluetoothRadio.PrimaryRadio;   if (bluetoothRadio == null)   {   Console.WriteLine("沒有找到本機藍牙設備!");   }   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插入了藍牙適配器,便會顯示藍牙相關信息:

201648155454003.jpg (544×265)

 然后我們就要利用藍牙收發文件了:
前提是藍牙設備(如手機)已經和PC配對了

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

程序界面:

201648155559869.jpg (427×270)

SelectBluetoothDeviceDialog是一個InTheHand.Net.Personal提供的窗體,用于選擇藍牙設備:

201648155651467.jpg (650×495)

從手機往電腦發送文件需要在電腦上開啟監聽ObexListener,才能收到文件。

201648155708976.jpg (427×270)

核心代碼:

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲九九九在线观看| 亚洲精品电影网站| 久久久成人精品| 日韩免费观看视频| 欧美人交a欧美精品| 福利一区福利二区微拍刺激| 欧美福利小视频| 欧美性在线观看| 日韩久久精品电影| 日韩精品免费在线播放| 国产噜噜噜噜噜久久久久久久久| 欧美激情综合亚洲一二区| 亚洲视频专区在线| 欧美成人精品在线播放| 国产成人短视频| 揄拍成人国产精品视频| 国产精品一二三在线| 国产成人av在线| 日韩av在线不卡| 久久久久久久一| 国产精品ⅴa在线观看h| 高清欧美性猛交| 日韩中文字幕在线免费观看| 精品视频在线观看日韩| 国产欧美精品日韩| 亚洲欧洲自拍偷拍| 色噜噜国产精品视频一区二区| 精品国产精品三级精品av网址| 欧美性xxxxx极品| 国产成人精品在线| 欧美成人免费播放| 久热精品视频在线免费观看| 2019中文字幕在线免费观看| 成人黄色av网| 久久久久久久久中文字幕| 久久免费国产视频| 久久精品国产2020观看福利| 2020欧美日韩在线视频| 一本一本久久a久久精品综合小说| 成人女保姆的销魂服务| 国产成人激情视频| 欧美在线观看www| 久久久人成影片一区二区三区观看| 免费成人高清视频| 丝袜亚洲欧美日韩综合| 国产精品第三页| 亚洲第一免费网站| 欧美老妇交乱视频| 国产在线观看精品一区二区三区| 亚洲精品电影网在线观看| 欧美色另类天堂2015| 日韩美女在线看| 91精品国产91久久久久久不卡| 欧美一级淫片播放口| 97视频在线观看亚洲| 国产精品视频xxxx| 91黑丝在线观看| 欧美一级免费看| 国产成人久久久| 日韩免费观看av| 国产精品久久久久久久久影视| 国产亚洲精品久久| 国产乱肥老妇国产一区二| 91中文在线视频| 国产精品v片在线观看不卡| 亚洲午夜av电影| 国产精品美女久久久免费| 成人写真福利网| 在线观看国产欧美| 欧美日韩国产精品一区二区三区四区| 日韩av中文字幕在线播放| 国产成人精品一区二区在线| 国产精品久久9| 欧美日韩国产123| 青青青国产精品一区二区| 精品免费在线视频| 亚洲精品乱码久久久久久金桔影视| 日韩欧亚中文在线| 国产亚洲一级高清| 久久精品99无色码中文字幕| 日韩精品免费综合视频在线播放| 欧美日韩中文字幕在线| 国产亚洲精品久久久久久牛牛| 亚洲第一精品夜夜躁人人躁| 精品国产老师黑色丝袜高跟鞋| 中文字幕日韩欧美| 亚洲自拍另类欧美丝袜| 国产精品夜色7777狼人| 精品激情国产视频| 97在线看免费观看视频在线观看| 中文字幕在线成人| 日韩中文视频免费在线观看| 国产精品欧美久久久| 性欧美视频videos6一9| 亚洲福利在线看| 日韩中文在线不卡| 国产精品第七影院| 国产视频自拍一区| 成人h片在线播放免费网站| 色777狠狠综合秋免鲁丝| 国产欧美日韩综合精品| 亚洲国产精品久久久久久| 国产精品久久91| 精品国产成人av| 国产人妖伪娘一区91| 伊人久久综合97精品| 亚洲国产日韩欧美综合久久| 亚洲二区在线播放视频| 久久久精品免费视频| 国产精品成人国产乱一区| 性色av一区二区三区在线观看| 日本道色综合久久影院| 51ⅴ精品国产91久久久久久| 在线观看日韩欧美| 欧美国产日韩精品| 国产精品一久久香蕉国产线看观看| 欧美日韩免费一区| 亚洲成av人片在线观看香蕉| 亚洲性生活视频| 日本不卡高字幕在线2019| 亚洲国产精品99久久| 久久久久久伊人| 亚洲深夜福利视频| 69视频在线播放| 亚洲a中文字幕| 久久久久久久久久久国产| 成人免费视频97| 亚洲欧美中文日韩在线v日本| www日韩中文字幕在线看| 91手机视频在线观看| 成人网址在线观看| 国产精品一香蕉国产线看观看| 亚洲免费精彩视频| 国产精品久久久久久久app| 久久九九全国免费精品观看| 97人人做人人爱| 成人精品久久一区二区三区| 美日韩精品免费视频| 深夜精品寂寞黄网站在线观看| 国产日韩一区在线| 欧美日本黄视频| 亚洲一区二区三区成人在线视频精品| 国产成人精品a视频一区www| 91精品国产高清久久久久久久久| 高清视频欧美一级| 欧美成人国产va精品日本一级| 欧美午夜视频在线观看| 高清亚洲成在人网站天堂| 色综合伊人色综合网| 亚洲美腿欧美激情另类| 久久精品福利视频| 国产成一区二区| 麻豆一区二区在线观看| 久久成人一区二区| 欧美一二三视频| 亚洲色图偷窥自拍| 色婷婷综合久久久久| 国产成人在线播放| 久久精品久久久久久国产 免费| 亚洲欧美另类自拍| 亚洲香蕉av在线一区二区三区| 久久天天躁夜夜躁狠狠躁2022| 欧美日韩中国免费专区在线看| 欧美三级xxx|