文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C/C++使用C#来开发.NET CF 蓝牙通信模块
精品推荐
特别推荐
·C语言编程易犯毛病集合
·C语言编程常见问题解答(目录)
·C#程序开发中的常用函数汇总
·C/C++笔试、面试题目大汇总
·Beej的网络socket编程指南
·socket编程原理
·C语言的常用库函数使用方法分析及用途
·在C语言中如何处理时间和日期
·C++设计模式之Singleton
·VC++动态链接库编程之MFC扩展 DLL
热点TOP10
·进程和线程编程
·C语言编程易犯毛病集合
·打字游戏
·Awk 基础入门:Awk 实例编程
·asp.net中调用javascript函数实现多功能日期控件示例
·C语言编程常见问题解答之常用函数的包含文件(1)
·C# GridView 排序及分页
·C #中的几个线程同步对象方法
·无废话C#设计模式之三:Abstract Factory
·C# DataGridView隔行显示不同的颜色

使用C#来开发.NET CF 蓝牙通信模块

日期:2007年10月17日 作者: 查看:[大字体 中字体 小字体]


  在Windows Mobile软件开发中.Net正扮演着日益重要的角色,我们已经可以看到很多用.Net CF开发的软件,这些软件涉及到了日常应用的方方面面。 在智能设备的软件开发中,无线互联是一个相当重要的一块,我们可以看到,红外几乎是所有智能设备的标配,而蓝牙也日益在越来越多的智能设备上出现,有了硬件,显然要有相应的软件相关的应用。

  我们也知道,用.NET CF开发红外通信应用时相当轻松的,因为.NET CF中有一个命名空间System.Net.IrDA就是用于红外通信的通信模块。但是,.NET CF中还没有关于蓝牙通信的模块,所以目前来讲做这方面的开发还有一定的困难。下面,就谈谈如何用C#开发.NET CF蓝牙通信模块。

  一. 基本要点

  首先明确一点,因为涉及到驱动硬件的问题,所以仅靠了解C#开发的相关知识显然是无法完成开发的,我们必须对C++开发有所了解。但是为了简单起见,我们不希望用C++写半行代码,所有的编码工作全部使用C#,也就是说,使用的开发环境只需要使用Visual Studio.net,不需要用其他的编辑器。

  作为开发这类驱动硬件的程序的知识准备,您需要了解C++的基本知识,知道头文件是怎么一回事,知道托管代码如何与非托管代码交互。因为本文的核心是说明如何开发.net CF蓝牙通信模块,所以前述这些准备知识并不作讲述。

  二. 关于蓝牙

  做蓝牙通信模块开发,自然先要知道蓝牙通信是怎么一回事。在我看来,蓝牙通信应该和红外通信模块类似,当然我是从开发者的角度来讲,抽象化以后应该就是这样,当然蓝牙和红外通信也有很多不一样的地方,这在面向对象设计里面怎么讲,我想一定有很多人理解的比我透彻。好了,这就是我们的基本思路了。我曾经在网上查过关于蓝牙开发的文章,很多人在.net CF开发中把蓝牙通信当作一个串行通信来处理,这也是不错的,但是我不是很喜欢,因为这样做的话,并不是针对蓝牙来开发的,换言之,在使用过程中,需要先手动开启蓝牙,配对,连接,建立串行通道,然后开启应用程序使用,你还要在应用程序中设置串行端口,对最终用户来讲,这是非常麻烦的。我觉得,这样的解决方案冠上蓝牙通信的名头简直就是……不多说了,书归正传。

  在红外通信中,我们知道,设备的DeviceID是一个Byte数组,那么蓝牙设备的DeviceID什么样子呢?我想这个大家都很清楚,是一串以“:”分隔的16进制数字。

  红外通信中,一般而言红外并没有开启、关闭之类的状态,但是蓝牙有开启、关闭、可发现三种状态。

  红外没有安全设置,而蓝牙有安全设置,所以我们需要对蓝牙设备进行配对,而红外通信这部需要。

  我们查看.net的Socket地址族里有IrDA,但是没有蓝牙相关的地址族,这是我们需要解决的问题。

  三. 获取设备ID

  1.获取本地设备的ID

  我们查看Window CE 4.2的SDK文档,得知获取本地设备ID的函数是BthReadLocalAddr,在btdrt.dll中。SDK文档中的英文原文是这样的:“This function retrieves the Bluetooth address of the current device.”好了,知道了这个就好说了:

  首先封装本地托管函数:

[DllImport("Btdrt.dll", SetLastError=true)]
  public static extern int BthReadLocalAddr(byte[] pba);

  这个函数得到的本地DeviceID也是一组byte数组,为了向人们显示出来,我们要把它变为String:

string text1 = "";
  text1 = text1 + pba[5].ToString("X2") + ":";
  text1 = text1 + pba [4].ToString("X2") + ":";
  text1 = text1 + pba [3].ToString("X2") + ":";
  text1 = text1 + pba [2].ToString("X2") + ":";
  text1 = text1 + pba [1].ToString("X2") + ":";
  return (text1 + pba [0].ToString("X2"));

  2.获取远程设备的ID

  其实谈到获取远程设备的ID就涉及到如何去发现远程设备了,所以这里就一并把发现设备的方法也说明了吧。 发现设备需要用到三个Winsock API,分别是WSALookupServiceBegin、WSALookupServiceNext和WSALookupServiceEnd,这三个API到底起什么作用可以去查看Windows CE 4.2的SDK,这里就不详细解释了,只谈一下几个需要注意的地方。

  WSALookupServiceBegin的函数原形是这样的:

INT WSALookupServiceBegin(
  LPWSAQUERYSET lpqsRestrictions,
  DWORD dwControlFlags,
  LPHANDLE lphLookup

[1] [2] [3] [4] 下一页 




上一篇:快速解决SQL Server“安全疑难”相关问题

下一篇:.Net组件开发介绍 开发ajax控件

相关文章:
·为什么iexplore.exe在打开网页时CPU使用会100%?
·溯雪使用说明
·键盘的使用与指法训练
·QQ空间最新大图模块:谁都不是谁的谁
·QQ空间大图模块:性感蔡依林
·GHOST使用方法(图解)
·Firefox 使用常见问题和解决方法
·注册表应用100例—注册表使用全攻略之十一
·Vista系统使用技巧总结
·如何阻止局域网用户使用P2P软件下载
相关软件:
·黑客视频教程 VMware虚拟机的安装和使用
·中国少年儿童智力开发百科全书(上中下)高清PDF全彩图书
·黑客视频教程-灰鸽子远控使用教程
·孙鑫VC++从入门到精通开发详解视频教程FLASH版
·使用GPMC随心所欲管理组策略
·Adobe Photoshop CS 2 简体中文使用指南
·数码相机购买使用宝典 V1.03.29
·FLASH 8中文使用手册
·流光使用
·Windows 程式开发设计指南 中文版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot