最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2016年04月08日 16:07:42   作者:hzy3774  
這篇文章主要介紹了Windows系統(tǒng)中使用C#編寫(xiě)藍(lán)牙通信程序的簡(jiǎn)單實(shí)例,文中的例子使用到了32feet.NET中的InTheHand.Net.Personal類(lèi)庫(kù),需要的朋友可以參考下

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

static void Main(string[] args) 
{ 
  BluetoothRadio bluetoothRadio = BluetoothRadio.PrimaryRadio; 
  if (bluetoothRadio == null) 
  { 
  Console.WriteLine("沒(méi)有找到本機(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)牙適配器,便會(huì)顯示藍(lán)牙相關(guān)信息:

201648155454003.jpg (544×265)

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

public partial class Form1 : Form 
{ 
  BluetoothRadio radio = null;//藍(lán)牙適配器 
  string sendFileName = null;//發(fā)送文件名 
  BluetoothAddress sendAddress = null;//發(fā)送目的地址 
  ObexListener listener = null;//監(jiān)聽(tīng)器 
  string recDir = null;//接受文件存放目錄 
  Thread listenThread, sendThread;//發(fā)送/接收線(xiàn)程 
 
  public Form1() 
  { 
    InitializeComponent(); 
    radio = BluetoothRadio.PrimaryRadio;//獲取當(dāng)前PC的藍(lán)牙適配器 
    CheckForIllegalCrossThreadCalls = false;//不檢查跨線(xiàn)程調(diào)用 
    if (radio == null)//檢查該電腦藍(lán)牙是否可用 
    { 
      MessageBox.Show("這個(gè)電腦藍(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)證過(guò)的藍(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);//開(kāi)啟發(fā)送文件線(xiàn)程 
    sendThread.Start(); 
  } 
 
  private void sendFile()//發(fā)送文件方法 
  { 
    ObexWebRequest request = new ObexWebRequest(sendAddress, Path.GetFileName(sendFileName));//創(chuàng)建網(wǎng)絡(luò)請(qǐng)求 
    WebResponse response = null; 
    try 
    { 
      buttonSend.Enabled = false; 
      request.ReadFile(sendFileName);//發(fā)送文件 
      labelInfo.Text = "開(kāi)始發(fā)送!"; 
      response = request.GetResponse();//獲取回應(yīng) 
      labelInfo.Text = "發(fā)送完成!"; 
    } 
    catch (System.Exception ex) 
    { 
      MessageBox.Show("發(fā)送失??!", "提示", 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 = "請(qǐng)選擇藍(lán)牙接收文件的存放路徑"; 
    if (dialog.ShowDialog() == DialogResult.OK) 
    { 
      recDir = dialog.SelectedPath; 
      labelRecDir.Text = recDir; 
    } 
  } 
 
  private void buttonListen_Click(object sender, EventArgs e)//開(kāi)始/停止監(jiān)聽(tīng) 
  { 
    if (listener == null || !listener.IsListening) 
    { 
      radio.Mode = RadioMode.Discoverable;//設(shè)置本地藍(lán)牙可被檢測(cè) 
      listener = new ObexListener(ObexTransport.Bluetooth);//創(chuàng)建監(jiān)聽(tīng) 
      listener.Start(); 
      if (listener.IsListening) 
      { 
        buttonListen.Text = "停止"; 
        labelRecInfo.Text = "開(kāi)始監(jiān)聽(tīng)"; 
        listenThread = new Thread(receiveFile);//開(kāi)啟監(jiān)聽(tīng)線(xiàn)程 
        listenThread.Start(); 
      } 
    } 
    else 
    {  
      listener.Stop(); 
      buttonListen.Text = "監(jiān)聽(tīng)"; 
      labelRecInfo.Text = "停止監(jiān)聽(tīng)"; 
    } 
  } 
 
  private void receiveFile()//收文件方法 
  { 
    ObexListenerContext context = null; 
    ObexListenerRequest request = null; 
    while (listener.IsListening) 
    { 
      context = listener.GetContext();//獲取監(jiān)聽(tīng)上下文 
      if (context == null) 
      { 
        break; 
      } 
      request = context.Request;//獲取請(qǐng)求 
      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(); 
    } 
  } 
} 

程序界面:

201648155559869.jpg (427×270)

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

201648155651467.jpg (650×495)

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

201648155708976.jpg (427×270)

核心代碼:

BluetoothRadio radio = null;//藍(lán)牙適配器 
string sendFileName = null;//發(fā)送文件名 
BluetoothAddress sendAddress = null;//發(fā)送目的地址 
ObexListener listener = null;//監(jiān)聽(tīng)器 
string recDir = null;//接受文件存放目錄 
Thread listenThread, sendThread;//發(fā)送/接收線(xiàn)程 
 
radio = BluetoothRadio.PrimaryRadio;//獲取當(dāng)前PC的藍(lán)牙適配器 
 
//關(guān)于藍(lán)牙設(shè)備選擇對(duì)話(huà)框 
SelectBluetoothDeviceDialog dialog = new SelectBluetoothDeviceDialog(); 
dialog.ShowRemembered = true;//顯示已經(jīng)記住的藍(lán)牙設(shè)備 
dialog.ShowAuthenticated = true;//顯示認(rèn)證過(guò)的藍(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ò)請(qǐng)求 
WebResponse response = null; 
request.ReadFile(sendFileName);//發(fā)送文件 
response = request.GetResponse();//獲取回應(yīng) 
response.Close(); 
 
//接收文件 
radio.Mode = RadioMode.Discoverable;//設(shè)置本地藍(lán)牙可被檢測(cè) 
listener = new ObexListener(ObexTransport.Bluetooth);//創(chuàng)建監(jiān)聽(tīng) 
listener.Start(); 
listener.Stop(); 
 
ObexListenerContext context = null; 
ObexListenerRequest request = null; 
context = listener.GetContext();//獲取監(jiān)聽(tīng)上下文 
request = context.Request;//獲取請(qǐng)求 
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來(lái)源于32feet.NET。
32feet.NET是shared-source的項(xiàng)目,支持CF.net 2.0以及桌面版本.NET framework,提供短距離領(lǐng)域(personal area networking technologie)的通信功能,支持bluetooth,Infrared(IrDA)紅外等. 想了解更多的信息可以參考其 官方主頁(yè),其項(xiàng)目的安裝包和源碼是放在微軟的開(kāi)源工程網(wǎng)站CodePlex上面的,作為.NET開(kāi)發(fā)人員我們必須要上的網(wǎng)站就是CodePlex~

相關(guān)文章

最新評(píng)論

临湘市| 赤城县| 兴义市| 长顺县| 台南县| 勃利县| 桑日县| 西昌市| 南投县| 大同县| 新泰市| 依兰县| 呼伦贝尔市| 莆田市| 长宁区| 迁西县| 喜德县| 长沙县| 南京市| 秦安县| 信阳市| 临颍县| 抚州市| 北票市| 达孜县| 黄山市| 平罗县| 米脂县| 寻乌县| 杂多县| 松江区| 蓬溪县| 盱眙县| 自治县| 安新县| 英山县| 肇东市| 双桥区| 玉门市| 朝阳市| 黄山市|