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 关于蓝牙等技术的开源库,当我们遇到有关蓝牙等有关编程的时候可以利用这个库,站在巨人的肩膀上编程。希望对大家有帮助。

用C#调用蓝牙编程的更多相关文章

  1. C# 蓝牙编程

    C#进行蓝牙编程 本节我们给大家用源码的形式给大家介绍如何用C#调用蓝牙.下面的源码是基于destop的C#调用蓝牙的程序,也就是使用普通版本的.NET Framework来调用编程,一般是有蓝牙的笔 ...

  2. Windows Phone 8 蓝牙编程

    蓝牙是手机的近距离无限传输的技术,在之前的Windows Phone 7系统手机里面仅支持蓝牙耳机功能,并不支持蓝牙文件信息传输,那么在Windows Phone 8手机里面将全面支持蓝牙技术,并且提 ...

  3. android 蓝牙编程重点---如何发送和接收16进制数据

    最近的android蓝牙开发项目也逐渐接近尾声,基本的功能都已经完成,只剩下界面的设计.现在真的是舒了一口气! 作为编程学习经验只有1年的菜鸟,这是我独自完成的商业性产品,而且还是涉及到与单片机蓝牙模 ...

  4. C++调用Lua编程环境搭建及测试代码示例

    C++调用Lua编程环境搭建及测试代码示例 摘要:测试环境是VS2005+LuaForWindows_v5.1.4-45.exe+WIN7 1.安装lua开发环境LuaForWindows_v5.1. ...

  5. android平台蓝牙编程

    Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输. 本文档描述了怎样利用android平台提供的蓝牙API去实现蓝牙设备之间的通信,蓝牙设备之间的通信主要包括了四个步骤:设置蓝牙设 ...

  6. android平台蓝牙编程(转)

    http://blog.csdn.net/pwei007/article/details/6015907 Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输. 本文档描述了怎样利用a ...

  7. Android BLE 蓝牙编程(四)

    接上篇,我们已经实现了短震,长震的功能了- 现在我们需要实现点击后一直震动的功能 开始我的想法是再循环中不断执行write方法,然而这个办法行不通. 系统会报错. 那要如何实现这个想法呢?其实很简单, ...

  8. Android BLE 蓝牙编程(三)

    上节我们已经可以连接上蓝牙设备了. 本节我们就要获取手环的电池电量和计步啦. 在介绍这个之前我们需要先了解下什么是 服务 什么是 UUID 我们记得上节中我们item监听事件的回调的返回值是Bluet ...

  9. Android调用蓝牙打印机

    首先需要一个jar包,bluesdk,请自行百度. 具体排版样式跟网络打印机打印排版样式实现一样,这里不多叙述,只贴一个实现方法代码.蓝牙打印机使用前需要先跟手机配对,可以保存在本地,记录下地址,这里 ...

随机推荐

  1. POJ 2388 Who's in the Middle (快速选择算法:O(N)求数列第K大)

    [题意]求数列中间项. ---这里可以扩展到数列第K项. 第一次做的时候直接排序水过了= =--这一次回头来学O(N)的快速选择算法. 快速选择算法基于快速排序的过程,每个阶段我们选择一个数为基准,并 ...

  2. Java [leetcode 2] Add Two Numbers

    问题描述: You are given two linked lists representing two non-negative numbers. The digits are stored in ...

  3. 《C++ Primer 4th》读书笔记 第6章-语句

    原创文章,转载请注明出处: http://www.cnblogs.com/DayByDay/p/3912407.html

  4. Drawer Layout

    http://developer.android.com/training/implementing-navigation/nav-drawer.html#DrawerLayout <menu ...

  5. POJ 2096-Collecting Bugs(概率dp入门)

    题意: 有n种bug和s种系统bug,每天发现一种bug(可能已经发现过了)所有种bug被发现的概率相同,求所有bug被发现的期望天数. 分析: dp[i][j]发现i种bug,j种系统bug期望天数 ...

  6. HDU5787 K-wolf Number 数位dp

    分析:赛场上也知道是裸的数位dp,但是无奈刷数位dp题刷的太少了,并不能写出来 一点感想:赛后补题,看了题解的map记录状态,一脸蒙逼,也是非常的不爽,然后想看别人写的,不是递归就是写的比较乱 而且我 ...

  7. <转>Python 参数知识(变量前加星号的意义)

    csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的 ...

  8. CSS选择器的兼容性

    CSS 1 CSS2.1 CSS3 :hover 在IE6中只有a元素可用.E:empty 貌似在webkit核心浏览器中有些小bug.如果这个bug依然存在,不太确定如何测试.IE6不支持.clas ...

  9. 关于Windows 7的64位系统不兼容某些控件的问题

    我的问题是vsflex7.ocx 不能在64位系统下运行,导致软件的一个涉及到这个控件的功能出错.如下: 解决的办法基本思路是把这个控件注册一下.然后就可以了.就是这个控件: 目录中没有自己下载个. ...

  10. cadence异型孔

    1:画route path的边框,画在board geometry的ncroute_path层上,可以用zcopy (暂时没用过)      没有的话可能:WARNING: No route path ...