2013-04-22 09:41:06
什么是藍牙?
現在只能手機這么發達,藍牙對我們來說肯定不陌生。我來介紹一下官方概念:
藍牙,是一種支持設備短距離通信(一般10m內)的無線電技術。能在包括移動電話、PDA、無線耳機、筆記本電腦、相關外設等眾多設備之間進行無線信息交換。利用“藍牙”技術,能夠有效地簡化移動通信終端設備之間的通信,也能夠成功地簡化設備與因特網Internet之間的通信,從而數據傳輸變得更加迅速高效,為無線通信拓寬道路。藍牙采用分散式網絡結構以及快跳頻和短包技術,支持點對點及點對多點通信,工作在全球通用的2.4GHz ISM(即工業、科學、醫學)頻段。其數據速率為1Mbps。采用時分雙工傳輸方案實現全雙工傳輸。
我的介紹:通過藍牙我們可以在10m范圍內讓兩個有藍牙的設備進行數據交換。
C#進行藍牙編程
本節我們給大家用源碼的形式給大家介紹如何用C#調用藍牙。下面的源碼是基於destop的C#調用藍牙的程序,也就是使用普通版本的.NET Framework來調用編程,一般是有藍牙的筆記本電腦,或者使用外接藍牙設備的電腦,如何使用外接藍牙設備,請參考:外接USB藍牙設置無法啟動。
好了下面直接上代碼:
odeusing System;
sing System.Collections.Generic;
sing System.Windows.Forms;
sing InTheHand.Net;
sing InTheHand.Net.Bluetooth;
sing InTheHand.Net.Sockets;
amespace BlueTooth
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
BluetoothClient Blueclient = new BluetoothClient();
Dictionary<string, BluetoothAddress> deviceAddresses = new Dictionary<string, BluetoothAddress>();
private void btnFind_Click(object sender, EventArgs e)
{
this.lblMessage.Text = "";
this.lblMessage.Visible = true;
BluetoothRadio BuleRadio = BluetoothRadio.PrimaryRadio;
BuleRadio.Mode = RadioMode.Connectable;
BluetoothDeviceInfo[] Devices = Blueclient.DiscoverDevices();
lsbDevices.Items.Clear();
deviceAddresses.Clear();
foreach (BluetoothDeviceInfo device in Devices)
{
lsbDevices.Items.Add(device.DeviceName);
deviceAddresses[device.DeviceName] = device.DeviceAddress;
}
this.lblMessage.Text = "搜索設備完成,搜索到" + lsbDevices.Items.Count + "個藍牙設備。";
}
private void btnConnect_Click(object sender, EventArgs e)
{
try
{
BluetoothAddress DeviceAddress = deviceAddresses[lsbDevices.SelectedItem.ToString()];
Blueclient.SetPin(DeviceAddress, txtPwd.Text.Trim());
Blueclient.Connect(DeviceAddress, BluetoothService.Handsfree);
MessageBox.Show("配對成功。");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
運行結果:
上圖是點擊finddevices按鈕后的結果。我們選擇其中的一個設備,然后在Password的textbox中輸入配對密碼,點擊Connect,如果成功會彈出對話框提示“配對成功”,如果失敗會出現如下提示:
Note:你只要想在Visual Studio中建立一個winform的默認程序,並把代碼復制過去,然后引用InTheHand.Net.Personal.dll你的程序就可以直接運行了。不過我不建議你直接復制,最好是敲一邊代碼比較好。
上面的示例代碼中還需要特殊注意的就是下面這三個命名空間:
using InTheHand.Net;
using InTheHand.Net.Bluetooth;
using InTheHand.Net.Sockets;
他們是拿來的呢?在上面的程序中我引用了一個外部的DLL:InTheHand.Net.Personal.dll,上面那三個命名空間就是InTheHand.Net.Personal.dll中的。我使用的是桌面版的.NET Framework3.5,如果你想在移動設備,如手機或者手持機等移動設備而上使用,那么你只需要創建一個.NET Compact Framework 3.5的程序,把上面的源碼直接復制過去,並且引用InTheHand.Net.Personal.dll的移動版本就ok了。
總結
本文介紹了藍牙技術以及用C#寫了一個調用藍牙的實例Demo,幫助大家理解,希望對大家有所幫助。我在這里留下一個懸念就是InTheHand.Net.Personal.dll是怎么來的,請參考:.NET藍牙開源庫:32feet.NET。
.NET藍牙開源庫:32feet.NET
2013-04-22 09:42:50
在用C#調用藍牙編程一文中我留個小懸念就是:InTheHand.Net.Personal.dll是怎么來的?這篇文章來解答這個問題,InTheHand.Net.Personal.dll就是來源於今天要介紹的內容32feet.NET。
什么是32feet.NET
32feet.NET是shared-source的項目,支持CF.net 2.0以及桌面版本.NET framework,提供短距離領域(personal area networking technologie)的通信功能,支持bluetooth,Infrared(IrDA)紅外等.
想了解更多的信息可以參考其官方主頁,其項目的安裝包和源碼是放在微軟的開源工程網站CodePlex上面的,作為.NET開發人員我們必須要上的網站就是CodePlex,本文的主要內容是32feet.net,所以就不過多的介紹CodePlexle ,更多CodePlex信息請參考百度百科。
下載32feet.NET的安裝包和源碼
下載32feet.net的安裝包以及實例代碼請點擊這里,下載32feet.net的源碼請點擊這里。對於想了解如何使用32feet.net的人員來說我們直接僅僅下載安裝包即可;如果想了解32feet.net是如何實現的那就必須要下載其源代碼了。我是一個使用者所以僅僅下載了安裝包。
安裝和使用32feet.NET實例
下載下來后怎安裝我就不詳細介紹了,就是傻瓜安裝,安裝過程中需要注意的是安裝目錄在哪里,安裝完畢后就可以直接去找了。我的安裝路徑是:D:\Program Files\32feet.NET,然后進去后打開文件夾發現:
如上圖文件夾所示Help是我們如何使用的官方幫助,NET是桌面版的引用所在位置,NET文件夾下僅僅存放了桌面版的InTheHand.Net.Personal.dll和其對應的xml文件。到這里我也就完全回答了上篇文章所留一下的小懸念。NETCF文件夾下的內容和NET文件夾下的內容是一樣的都是一個InTheHand.Net.Personal.dll文件和其對應的xml文件,但是其平台不同,當我們開發.NET Compact Framework的項目是需要引用NET CF 文件夾下的InTheHand.Net.Personal.dll。
Sample是實例的文件夾,打開后是一些項目源碼,我們可以參考這個來學習32feet.net,我就是根據研究這里的代碼為參考開發出了上篇文章的實例,想查看具體內容請參考:用C#調用藍牙編程。至於其他的文件大家可以去研究,我就不多介紹了。
總結
本文介紹了一個.NET 關於藍牙等技術的開源庫,當我們遇到有關藍牙等有關編程的時候可以利用這個庫,站在巨人的肩膀上編程。希望對大家有幫助。