用C#调用蓝牙编程
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#调用蓝牙编程的更多相关文章
- C# 蓝牙编程
C#进行蓝牙编程 本节我们给大家用源码的形式给大家介绍如何用C#调用蓝牙.下面的源码是基于destop的C#调用蓝牙的程序,也就是使用普通版本的.NET Framework来调用编程,一般是有蓝牙的笔 ...
- Windows Phone 8 蓝牙编程
蓝牙是手机的近距离无限传输的技术,在之前的Windows Phone 7系统手机里面仅支持蓝牙耳机功能,并不支持蓝牙文件信息传输,那么在Windows Phone 8手机里面将全面支持蓝牙技术,并且提 ...
- android 蓝牙编程重点---如何发送和接收16进制数据
最近的android蓝牙开发项目也逐渐接近尾声,基本的功能都已经完成,只剩下界面的设计.现在真的是舒了一口气! 作为编程学习经验只有1年的菜鸟,这是我独自完成的商业性产品,而且还是涉及到与单片机蓝牙模 ...
- C++调用Lua编程环境搭建及测试代码示例
C++调用Lua编程环境搭建及测试代码示例 摘要:测试环境是VS2005+LuaForWindows_v5.1.4-45.exe+WIN7 1.安装lua开发环境LuaForWindows_v5.1. ...
- android平台蓝牙编程
Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输. 本文档描述了怎样利用android平台提供的蓝牙API去实现蓝牙设备之间的通信,蓝牙设备之间的通信主要包括了四个步骤:设置蓝牙设 ...
- android平台蓝牙编程(转)
http://blog.csdn.net/pwei007/article/details/6015907 Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输. 本文档描述了怎样利用a ...
- Android BLE 蓝牙编程(四)
接上篇,我们已经实现了短震,长震的功能了- 现在我们需要实现点击后一直震动的功能 开始我的想法是再循环中不断执行write方法,然而这个办法行不通. 系统会报错. 那要如何实现这个想法呢?其实很简单, ...
- Android BLE 蓝牙编程(三)
上节我们已经可以连接上蓝牙设备了. 本节我们就要获取手环的电池电量和计步啦. 在介绍这个之前我们需要先了解下什么是 服务 什么是 UUID 我们记得上节中我们item监听事件的回调的返回值是Bluet ...
- Android调用蓝牙打印机
首先需要一个jar包,bluesdk,请自行百度. 具体排版样式跟网络打印机打印排版样式实现一样,这里不多叙述,只贴一个实现方法代码.蓝牙打印机使用前需要先跟手机配对,可以保存在本地,记录下地址,这里 ...
随机推荐
- LA 3641 (置换 循环的分解) Leonardo's Notebook
给出一个26个大写字母的置换B,是否存在A2 = B 每个置换可以看做若干个循环的乘积.我们可以把这些循环看成中UVa 10294的项链, 循环中的数就相当于项链中的珠子. A2就相当于将项链旋转了两 ...
- LA 4123 (计数 递推) Glenbow Museum
题意: 这种所有边都是垂直或水平的多边形,可以用一个字符串来表示,一个270°的内角记作O,一个90°的内角记作R. 如果多边形内存在一个点,能看到该多边形所有的点,则这个多边形对应的序列是合法的.这 ...
- UVa 1262 (第k字典序) Password
题意: 给出两个6行5列的字母矩阵,一个密码满足:密码的第i个字母在两个字母矩阵的第i列均出现. 然后找出字典序为k的密码,如果不存在输出NO 分析: 我们先统计分别在每一列均在两个矩阵出现的字母,然 ...
- TIOBE 2015年5月编程语言排行榜 Visual Studio系列在上升
TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网上有经验的程序员. 课程和第三方厂商的数量.排名使用著名的搜索引擎(诸如 Google.MSN.Yahoo ...
- WordPress数据库研究 (转)
该系列文章将会详细介绍WordPress数据总体的设计思路.详细介绍WordPress10个数据表的设计.并对WordPress系统中涉及的用户信息.分类信息.链接信息.文章信息.文章评论信息.基本设 ...
- Sourcetree add Submodule
LMXMN041:ximalaya will.wei$ git submodule add https://github.com/willbin/WeLib02.git Submodule Cloni ...
- curl命令访问域名
1.前言 curl是利用URL语法在命令行方式下工作的开源文件传输工具(来自百度百科).cURL 是一种简单有效的工具,可以使用cURL工具进行WEB相关的调试开发工具,相对于Yeelink这样的云平 ...
- 【转】.. Android应用内存泄露分析、改善经验总结
原文网址:http://wetest.qq.com/lab/view/107.html?from=ads_test2_qqtips&sessionUserType=BFT.PARAMS.194 ...
- window.history
作者:zccst 旧版: forword() backword() go(number) HTML5中新增了 onhashchange 浏览器兼容性较好,用得较多 pushState / repla ...
- Android 使用Instrumentation进行界面的单元测试
如果我们要对一个Activity界面上的一个按钮的点击事件进行单元测试,则可使用ActivityInstrumentationTestCase2类来进行测试. 首先我们定义一个测试类: public ...