安全带厂家
免费服务热线

Free service

hotline

010-00000000
安全带厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

基于WindowsCENET实现蓝牙通讯模块的几种方法

发布时间:2020-07-01 02:09:29 阅读: 来源:安全带厂家

[摘要]: 蓝牙通讯技术在嵌入式产品中的应用具有极为广阔的前景,微软公司的WindowsCE.NET已经成为了主流的嵌入式操作系统之一。论文给出了在 VisualStudio2005中利用托管码并分别采用P/Invoke技术、微软蓝牙嵌入式工具包、OpenNETCF类库和利用本机码来开发 WindowsCE.NET操作系统下蓝牙通讯模块的几种方法,并在其中对P/Invoke技术、托管码开发、本机码开发等几个关键技术进行了阐述。最 后给出了利用托管码和本机码开发蓝牙通讯模块这几种方法的优劣比较和分析。其内容对于在Windowsmobile平台下开发蓝牙设备间的通讯具有一定 实用价值。关键词:蓝牙WindowsmobileP/Invoke托管码本机码0引言 自1998年,世界九大电子产业巨头共同发起蓝牙特殊利益集团SIG后,在短短不到十年之内,蓝牙技术已经被应用到如信息家电、电子商务、汽车、航空、医 疗、交通等多个领域。在移动计算方面,蓝牙技术采用了一种极为经济的形式解决了无线通讯“最后10m”的问题,从而替代了各种移动信息电子设备之间的电 缆。因此,蓝牙技术在移动计算领域的应用将十分广阔,它的应用开发也就有很大的实际意义。 微软公司从1996年起开发了嵌入式操作系统WindowsCE1.0开始,凭借着其在PC市场上的成功经验和WindowsCE类似于PC机上操作系统的作者简介:白炜(1980-),男,硕士研究生,研究方向为嵌入式系统。导师简介:白万民,教授,研究方向为嵌入式系统、计算机应用。 友好熟悉的界面逐渐扩大着自己在嵌入式操作系统市场的份额。Windowsmobile平台是微软公司针对嵌入式环境下开发的一套嵌入式操作系统,其主要 是指WindowsCE.NET,WindowsCE.NET的最新版本为WindowsCE5.0,其中包括3个版本:以数据为中心的掌上电脑 PocketPC;以语音为中心的智能手机SmartPhone;以娱乐为中心的便携式媒体中心PortableMediaCenters。而在 这3个版本中都可能涉及到蓝牙应用的开发。 在WindowsCE.NET的开发上,目前采用微软公司2005年年底推出的VisualStudio2005是最理想的选择。用 VisualStudio2005可以进行利用C#,或VB.NET等语言开发基于.NETCompactFramework2.0或1.0的 托管码WinCE程序,也可以利用C++语言来开发基于MFC,ATL或Win32API的本机码WinCE程序。 因为在微软最新的.NETCompactFramework2.0的类库中还未包含针对蓝牙通讯模块的类库,而且目前关于在WindowsCE中开发蓝牙通讯模块应用程序的介绍还很少,同时开发蓝牙通讯技术的应用需要十分广泛,所以本文将就此进行一些讨论。1基于托管码开发蓝牙通讯模块 基于托管码的开发就是使用一套运行时环境(run-timeenvironment)的应用程序接口来开发。一般情况下,托管码应用程序的开发会比较简单和快速,并且可跨软件平台和处理器来运行,所以开发出的托管码也能重新使用并有较高的可移植性。另外,内存管理、资源管理、资源收集、安全性管理等琐碎工作都由运行时环境来处理。应用程序开发工程师不必费心处理。托管应用程序在目标机器上运行,是通过目标机器端的实时编译器来实时把托管码编译成目标机器码后在目标机器上执行。由于在.NET平台下,采用CLR(公共语言运行时)可以用不同的语言来调用.NETCompactFramework来开发相同功能的应用程序,所以本文托管码部分仅采用C#语言为例来介绍蓝牙通讯模块开发。1.1利用P/Invoke方法编写蓝牙通讯模块 蓝牙通讯模块是一个涉及到驱动硬件的应用程序开发,而.NETCompactFramework并不是一个对Win32API进行了完整封装的类库。 所以在基于托管码开发蓝牙通讯模块中必须利用到托管代码如何与非托管代码交互技术。P/Invoke全称为PlatformInvoke,是.NET开 发平台下允许托管代码调用DLL库的本地代码函数的服务,类似于JA-VA中的GNI的概念。图1说明了P/Invoke方法的工作原理。首先用相应语言 的编译器将托管的源代码编译成Assembly的形式,其中包括元数据和中间语言代码。而此时P/Invoke的声明会以元数据的形式存在于 Assembly中,当Assembly被CLR调用的时候,CLR会根据元数据的声明在对应的DLL函数中查找DLL的实现。如果找到,就将其加载到内 存中,并定位此DLL函数的人口点。将托管的参数人栈,并将函数的人口点指向对应的nativedll,从而完成了托管代码调用非托管代码的DLL。

本文引用地址: linux操作系统文章专题:linux操作系统详解(linux不再难懂)c++相关文章:c++教程

吉林防静电工作服制作

沈阳工作服定制

天津工服订做