用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,请自行百度. 具体排版样式跟网络打印机打印排版样式实现一样,这里不多叙述,只贴一个实现方法代码.蓝牙打印机使用前需要先跟手机配对,可以保存在本地,记录下地址,这里 ...
随机推荐
- POJ 2388 Who's in the Middle (快速选择算法:O(N)求数列第K大)
[题意]求数列中间项. ---这里可以扩展到数列第K项. 第一次做的时候直接排序水过了= =--这一次回头来学O(N)的快速选择算法. 快速选择算法基于快速排序的过程,每个阶段我们选择一个数为基准,并 ...
- Java [leetcode 2] Add Two Numbers
问题描述: You are given two linked lists representing two non-negative numbers. The digits are stored in ...
- 《C++ Primer 4th》读书笔记 第6章-语句
原创文章,转载请注明出处: http://www.cnblogs.com/DayByDay/p/3912407.html
- Drawer Layout
http://developer.android.com/training/implementing-navigation/nav-drawer.html#DrawerLayout <menu ...
- POJ 2096-Collecting Bugs(概率dp入门)
题意: 有n种bug和s种系统bug,每天发现一种bug(可能已经发现过了)所有种bug被发现的概率相同,求所有bug被发现的期望天数. 分析: dp[i][j]发现i种bug,j种系统bug期望天数 ...
- HDU5787 K-wolf Number 数位dp
分析:赛场上也知道是裸的数位dp,但是无奈刷数位dp题刷的太少了,并不能写出来 一点感想:赛后补题,看了题解的map记录状态,一脸蒙逼,也是非常的不爽,然后想看别人写的,不是递归就是写的比较乱 而且我 ...
- <转>Python 参数知识(变量前加星号的意义)
csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的 ...
- CSS选择器的兼容性
CSS 1 CSS2.1 CSS3 :hover 在IE6中只有a元素可用.E:empty 貌似在webkit核心浏览器中有些小bug.如果这个bug依然存在,不太确定如何测试.IE6不支持.clas ...
- 关于Windows 7的64位系统不兼容某些控件的问题
我的问题是vsflex7.ocx 不能在64位系统下运行,导致软件的一个涉及到这个控件的功能出错.如下: 解决的办法基本思路是把这个控件注册一下.然后就可以了.就是这个控件: 目录中没有自己下载个. ...
- cadence异型孔
1:画route path的边框,画在board geometry的ncroute_path层上,可以用zcopy (暂时没用过) 没有的话可能:WARNING: No route path ...