6ES7511-1CK01-0AB0参数详细
1 VXI—跨世纪的仪器总线
VXI总线是VMEbus Extension for Instrumentation的缩写,即VME总线在测量仪器领域的扩展。这是一种新型测量仪器的标准总线,其总线标准是一种在世界范围内完全开放的、适用于各国不同的厂家、不同应用领域的行业标准。由于它是电子仪器发展史上一个重要的里程碑,因此被国内外专家誉为“跨世纪的仪器总线”、“划时代的技术成果”,并被认为是电子仪器和自动测试领域的“第三次革命”。VXI总线系统自80年代末问世以来,对国际仪器仪表自动化测控技术的发展产生了重大的影响,已成为国内外关注的“热点”。
VXI总线系统具有标准化、通用化、系列化、模块化的显著优点,集测量、计算、通信功能于一体,是国际90年代一项高、新科技。它不仅继承了GPIB智能仪器和VME总线的特点,还有高速、模块化、易于使用等优势。其主要优点如下:
(1)它是国际上新推出的开放式仪器系统。该系统主要由主机箱、“0槽”控制器、具有各种功能的模块化仪器和驱动软件、软面板(SFP)、软件开发平台以及系统应用软件等组成。
(2)它采用了当代多项高、新技术,包括微电子技术、计算机技术、自动测试技术、图形处理技术(虚拟仪器,软面板)、智能化仪器仪表等光、电、机技术。
(3)其核心思想是使VXI产品成为开放式结构的总线系统。标准统一,使用灵活。用户购买VXI总线产品之后,在组建系统时能真正做到“即插即用”(Plug & Play),立竿见影。人机界面良好,接近于“傻瓜”照相机的灵活程度。
(4)采用背板结构,数据传输速率快(40MB/s),吞吐量大,系统组建灵活方便,易于同其他总线兼容。
(5)仪器系统由传统的“多机箱堆放式”发展成“单机箱多模块式”。它具有安装密度高、体积小、重量轻、易于携带等优点。因其外形尺寸小,故可提高被测信号的保真度,能减小仪器与被测装置的引线长度,降低系统噪声和改善屏蔽效果。
(6)测试性能优良,技术指标**,是对传统测试系统更新换代的理想产品。
(7)采用模块化的严密设计与工艺保证,使之具有很高的可靠性,良好的电磁兼容性和很强的抗干扰能力,具有有效的自检与自诊断能力和良好的可维修性,大大延长了使用寿命。其平均故障间隔时间(MTBF)一般能达到10万小时,高可达70万小时(折合80年使用期!)
(8)资源利用率高,很容易实现系统集成,大大缩短研制周期。能实现系统资源共享,系统易于升级和扩展,易于根据各种现场的需要方便地快速地更换模块,重新组合系统。因此,即使若干年后老机型被淘汰,其主体部分(如计算机、VXI机箱、VXI模块等)还可用于新机型,资源的重复使用率高达75%~85%,能将设备的成本及投资风险降至低。
(9)VXI总线系统有着丰富的软件开发工具。测试人员只需调出代表仪器的图标,输入相关的条件和参数,利用鼠标器按测试流程将有关仪器连接起来,即可完成全部编程工作,自动生成测试程序,并以用户指定方式显示测量结果。
(10)便于用户自行开发“虚拟仪器”。虚拟仪器(VI)是测量仪器、计算机与软件这三者的有机结合。它将仪器硬件(例如A/D、D/A转换器,数字I/O)、计算机资源(如微处理器,存储器,显示器)、软件(例如软面板,图形界面,数据处理,信息交换等)有效地结合起来,构成软硬结合、虚实共体的新一代电子仪器。
2 VXI总线系统的发展史
2.1 国际发展动态
1987年,由美国的惠普(HP)、泰克(TEK)、雷卡(Racal)等5家公司在国际上率先成立了VXI总线联合体,开创了VXI的新纪元。1988年美国制定了VXI总线军用标准,1992年又制定了IEEE—1155标准。1993年制定了VXI“即插即用”(又译为“插入即用”)标准,并成立了VXI“即插即用”系统联盟。1996年,VXI总线系统已实现全球标准化。与此同时,VXI市场已形成一定的规模。目前,全世界已有数百家工厂生产上千种产品。VXI模块和系统的销售额正以每年递增30%~40%的高速度发展,这远远超过其他仪器的增长率。预计到2000年,大约有50%的测试系统将使用VXI。VXI正在高新技术领域显示出强大的生命力。例如,美国将在2002年建成距地球380公里高空、有两个足球场大的性空间站,Maxsys公司近已研制出基于VXI的能够模拟空间站上敏感器与执行机构的SES系统,它包括温度及压力传感器、继电器、开关、电压源、电流源、程控负荷。目前,一方面正在制定与完善各种VXI总线技术规范,另一方面则加速VXI总线平台的开发与推广工作。VXI总线必将在21世纪发挥更大作用。
2.2 VXI总线系统在我国的发展应用
近年来VXI总线系统在国际上获得迅速发展和广泛应用,立即引起国内测量仪器和自动测试领域专家们的极大兴趣与高度重视。1990年,我国与VXI总线联合体建立了正式联系,1993年航天部门首先开始引进VXI产品。在94~95年期间我国多次举办过国际VXI产品展览会,1995年中国计算机自动测量与控制技术协会和中国计量测试学会还先后组建“VXI技术委员会”和“VXI应用技术服务中心”。此后,VXI总线系统开始全面进入国内各个领域。如果说“八五”初期国内对该项新技术尚为“隔岸观火”,“八五”后期开始“跃跃欲试”,那么“九五”规划期间则是“竞相快上,大展宏图”的全面起动阶段,这正是历史的机遇。近几年来,我国对VXI总线系统经历了从“技术跟踪——产品引进——开发研制——推广应用”四个阶段,已在该技术领域获得长足发展,并取得一批重要科研成果。由航天测控公司承担的国家“八五”重点科技攻关项目VXI总线C尺寸系列功能模块(包括5位半DVM、A/D模块、D/A模块、I/O模块、计数模块等10余种)早已通过鉴定。由航天工业总公司三十五所研制成功的“智能化VXI总线目标模拟器控制和驱动模块”、由二院研制的“某型飞行器自动测控系统”、由中国科技大学等单位研制的“通讯产品自动测试系统”等等,标志着我国电子仪器及自动测控技术已跨入国际**领域。我国航空航天系统已决定从战斗机到干线飞机均采用VXI总线系统;长征三号、长征四号B、长征二号丁等大型运载火箭的测控系统也以VXI总线作为今后更新换代的目标。
3 VXI总线仪器系统集成
3.1 VXI总线系统的结构特点
3.1.1 标准模块
分A尺寸(3.9×6.3英寸)、B尺寸(9.2×6.3英寸)、C尺寸(9.2×13.4英寸)、D尺寸(14.4×13.4英寸)四种。其中,C尺寸约占85%。VXI的电气结构是在0槽控制器的控制下,各仪器模块可通过高速通信通道联络,同步工作,仪器之间经局部总线进行数据交换。机箱分5槽、13槽等规格。
3.1.2 系统的结构
VXI总线系统可简化为资源管理器和组态寄存器两种。资源管理器用于完成下述软件功能:识别所有的仪器,对管理器进行自检,分配存储器,分配中断线,分配通信等级。资源管理器可管理0~255共计256个VXI总线仪器。
VXI总线组态寄存器用于存储仪器模块的各种信息。每个VXI总线仪器都包含以下信息:仪器型号及装置类型,通信能力,状态信息,存储器的需求。VXI总线的通信又分两种类型:消息基,寄存器基。前者支持的标准VXI总线通信协议,例如字串行协议;后者不支持通信协议,仅支持VXI总线的配置寄存器,因此不能通用。
3.1.3 控制器结构
常用的控制器有以下几种:
a.IEEE-488控制器。它可以接几个主机箱,亦可同时接IEEE-488仪器。其特点是具有普通的仪器界面,容易将VXI总线仪器与IEEE-488仪器混合使用,高传输速率为1MB/s,速度慢,多可控制168个标准模块,价格低。
b.嵌入式(亦称内置式)VXI总线控制器。它能直接放入主机箱中,并具有一台通用计算机(486或586微机)的全部功能。其主要特点是外形尺寸小,能直接控制VXI总线及12个标准模块,传输速率达40MB/s,速度快。
c.MXI控制器。其价格与IEEE-488控制器相当,传输速率可达(20~33)MB/s。
3.1.4 VXI即插即用系统的结构
采用VXI即插即用标准能够降低成本并完全支持对VXI仪器、控制器和软件的操作,便于实现系统集成与软件编程。该系统是通过一个被称作“框架”的特殊部分,用作联接VXI总线仪器与系统软件的桥梁。此框架能提供可操作的软件,并规定了一个良好的软、硬件环境。目前通用的框架就是由bbbbbbs所支持的,称为WIN框架。它是基于bbbbbbs软件,采用Inbbb PC技术支持广泛的编程语言,并可移植到视窗98环境中。
从技术上讲,WIN框架采用bbbbbbs的图形用户界面,通过动态联接库(DLL)和虚拟仪器软件结构(VISA)通信I/O来控制VXI仪器。WIN框架包括仪器驱动器、软面板、在线文件、基本结构数据、VISA通信I/O和标准安装程序。VXI即插即用系统的应用程序必须通过VISA通信I/O之后,才能经硬件I/O去控制VXI总线仪器。
3.2 系统集成
3.2.1 系统组成
系统集成由硬件(主机箱、控制器和仪器模块)和软件所组成。下面给出由HP公司提供的系统集成典型实例:
●E1401B型C尺寸13槽主机箱
●E1406A型0槽控制器
●外部控制器(586微机)
●E2073型HPIB总线接口卡
●E1411B型5位半数字多用表模块
●E1428A型数字示波器模块
●E1340A型函数发生器模块
●E1413B型64通道A/D模块
●E1328A型4通道D/A模块
●E1330B型32通道数字I/O模块
●E1469A型4×16继电器开关模块
●HP/VEE5.0软件
3.2.2 软件的安装
首先要安装VISA通信I/O,再装入所需的编程语言,后装仪器的软件。仪器软件包含软面板、驱动程序、在线文件、基本结构数据和标准的目录结构。
3.2.3 系统检验
在系统集成之后应操作仪器的软面板,检查仪器的通信是否正常。
蓝牙通讯技术在嵌入式产品中的应用具有极为广阔的前景,微软公司的bbbbbbs CE.NET已经成为了主流的嵌入式操作系统之一。论文给出了在Visual Studio 2005中利用托管码并分别采用P/Invoke技术、微软蓝牙嵌入式工具包、OpenNETCF类库和利用本机码来开发bbbbbbs CE.NET操作系统下蓝牙通讯模块的几种方法,并在其中对P/Invoke技术、托管码开发、本机码开发等几个关键技术进行了阐述。后给出了利用托管码和本机码开发蓝牙通讯模块这几种方法的优劣比较和分析。其内容对于在bbbbbbs mobile平台下开发蓝牙设备间的通讯具有一定实用价值。
关键词:蓝牙bbbbbbs mobile P/Invoke 托管码 本机码
0 引 言
自1998年,世界九大电子产业巨头共同发起蓝牙特殊利益集团SIG后,在短短不到十年之内,蓝牙技术已经被应用到如信息家电、电子商务、汽车、航空、医疗、交通等多个领域。在移动计算方面,蓝牙技术采用了一种极为经济的形式解决了无线通讯“后10m”的问题,从而替代了各种移动信息电子设备之间的电缆。因此,蓝牙技术在移动计算领域的应用将十分广阔,它的应用开发也就有很大的实际意义。
微软公司从1996年起开发了嵌入式操作系统bbbbbbs CE 1.0开始,凭借着其在PC市场上的成功经验和bbbbbbs CE类似于PC机上操作系统的作者简介:白 炜(1980-),男,硕士研究生,研究方向为嵌入式系统。
导师简介:白万民,教授,研究方向为嵌入式系统、计算机应用。
友好熟悉的界面逐渐扩大着自己在嵌入式操作系统市场的份额。bbbbbbsmobile平台是微软公司针对嵌入式环境下开发的一套嵌入式操作系统,其主要是指bbbbbbs CE.NET,bbbbbbs CE.NET的新版本为bbbbbbs CE 5.0,其中包括3个版本:以数据为中心的掌上电脑Pocket PC;以语音为中心的智能手机Smart Phone;以娱乐为中心的便携式媒体中心Portable Media Centers。而在这3个版本中都可能涉及到蓝牙应用的开发。
在bbbbbbs CE.NET的开发上,目前采用微软公司2005年年底推出的Visual Studio 2005是理想的选择。用Visual Studio 2005可以进行利用C#,或VB.NET等语言开发基于.NET Compact framework 2.0或1.0的托管码WinCE程序,也可以利用C++语言来开发基于MFC,ATL或Win32API的本机码WinCE程序。
因为在微软新的.NET Compact framework 2.0的类库中还未包含针对蓝牙通讯模块的类库,而且目前关于在bbbbbbs CE中开发蓝牙通讯模块应用程序的介绍还很少,同时开发蓝牙通讯技术的应用需要十分广泛,所以本文将就此进行一些讨论。
1 基于托管码开发蓝牙通讯模块
基于托管码的开发就是使用一套运行时环境(run-time environment)的应用程序接口来开发。
一般情况下,托管码应用程序的开发会比较简单和快速,并且可跨软件平台和处理器来运行,所以开发出的托管码也能重新使用并有较高的可移植性。
另外,内存管理、资源管理、资源收集、安全性管理等琐碎工作都由运行时环境来处理。应用程序开发工程师不必费心处理。托管应用程序在目标机器上运行,是通过目标机器端的实时编译器来实时把托管码编译成目标机器码后在目标机器上执行。
由于在.NET平台下,采用CLR(公共语言运行时)可以用不同的语言来调用.NET Compact framework来开发相同功能的应用程序,所以本文托管码部分仅采用C#语言为例来介绍蓝牙通讯模块开发。
1.1 利用P/Invoke方法编写蓝牙通讯模块
蓝牙通讯模块是一个涉及到驱动硬件的应用程序开发,而.NET Compact framework并不是一个对Win32API进行了完整封装的类库。所以在基于托管码开发蓝牙通讯模块中必须利用到托管代码如何与非托管代码交互技术。P/Invoke全称为Platbbbb Invoke,是.NET开发平台下允许托管代码调用DLL库的本地代码函数的服务,类似于JA-VA中的GNI的概念。图1说明了P/Invoke方法的工作原理。首先用相应语言的编译器将托管的源代码编译成Assembly的形式,其中包括元数据和中间语言代码。而此时P/Invoke的声明会以元数据的形式存在于Assembly中,当Assembly被CLR调用的时候,CLR会根据元数据的声明在对应的DLL函数中查找DLL的实现。如果找到,就将其加载到内存中,并定位此DLL函数的人口点。将托管的参数人栈,并将函数的人口点指向对应的native dll,从而完成了托管代码调用非托管代码的DLL。
利用P/Invoke方法编写蓝牙通讯模块,DllI-port属性非常有用。下面的代码将用例子说明此通用方案,例中托管程序将调用MessageBox(位于User32.lib中):
using
using namespace System:: Runtime::InteropSer-vices;
namespace SysWin32
{
[Dllimport ( "user32. dll", EntryPoint = "MessageBox", CharSet = Unicode)]
int MessageBox(void * hWnd, wchar_t * lpText,wchar_t * lpCaption, unsigned int uType);
}
int main()
SysWin32 :: MessageBox(0, L" Hello world ! ", L"Greetings", 0)
}
注意包含Dllimport的代码行。此代码行根据参数值通知编译器,使之声明位于User32.dll中的函数,并将签名中出现的所有字符串(如参数或返回值)视为Unicode字符串。如果缺少EntryPoint参数,则默认值为函数名。另外,由于CharSet参数指定Unicode,因此公共语言运行库将首先查找称为MessageBoxW的函数。如果运行库未找到此函数,它将根据调用约定查找MessageBox以及相应的修饰名。
当调用用户定义的DLL中所包含的函数时,有必要将extern"C"添加在DLL函数声明之前,如下所示:extern"C"SAMPLEDLL_API int fnSam-pleDLL(void);
在调用非本机码时,需要注意的是要将非结构化参数由托管封送处理为本机码形式。可以利用CharSet参数值的作用,将参数中字符串(bbbbbb*类型)都自动转换为wchar_t*。同样,所有Int32参数类型转换为非托管int,UInt32参数类型转换为非托管unsignedint,而Intl6参数类型转换为了short int。char*用于[in]参数的为bbbbbb*(CharSet=Ansi),用于[out]参数或返回值的为Text::bbbbbbBuilder*。wchar-t*用于[in]参数为bbbbbb*(CharSet=Unicode),用于[out]参数或返回值的为Text::bbbbbbBuilder*。需要注意的是函数指针必须具有_stdcall调用约定,这是因为这是Dllimport支持的唯一类型。对于数组来说数组(如wchar_t*[ ]),CharSet参数仅应用于函数参数的根类型。因此,无论CharSet的值是什么,bbbbbb*_ _gc[ ]将被封送处理为wchar_t*[]。除简单类型外,运行库还提供了一种机制,可以将简单结构由托管上下文封送处理为非托管上下文。简单结构不包含任何内部数据成员指针、结构化类型的成员
或其他元素。
在做一个关于蓝牙通讯程序前,还需要一些关于蓝牙的基础知识。一个蓝牙模块程序需要包含开启蓝牙,配对,连接,建立串行通道,然后开启通讯过程,还需要在应用程序中设置串行端口。因为蓝牙技术有安全方面的设置,所以需要对蓝牙设备进行配对。蓝牙的工作状态总共有3种,分别为开启、关闭、可发现。并且所有的通讯设备都必须有一个对应的DeviceID,蓝牙也不例外,蓝牙的DeviceID是一串以“:”分隔的16进制的数字。有了上
述知识,就可以在托管码中利用P/Invoke方法开始编写蓝牙通讯模块了。
对应的每一步需要调用的基本函数如下:
•获取本地设备的ID
[Dllimport ( "Btdrt. dll", SetLastError = true) ]
public static extern int BthReadLocalAddr (byte[]PBa)
•获取远程设备的ID
[Dllimport( "ws2. dll", EntryPoint = "WSALook-upServiceBegin", SetLastError= true)]
public static extern int CeLookupServiceBegin(byte[ ] pQuerySet, LookupFlags dwFlags, ref intlphLookup)
•监听服务
[Dllimport (" ws2. dll", EntryPoint = "WSASetSer-vice", SetLastError= true)]
public static extern int CeSetService
(byte[ ] pQuerySet, RNRSERVICE_REGISTER,LookupFlags dwFlags)
•连接
[Dllimport ( "mscoree", EntryPoint = "@ 339" )]
public static extern int connect (int s, byte []name, int namelen)
•蓝牙的安全设置
获取配对码请求
[Dllimport("Btdrt. dll", SetLastError= true)]
public static extern int BthGetPINRequest(byte[]pba)
设置配对码
[Dllimport( "btdrt. dll", SetLastError= true)
public static extern int BthSetPIN(byte[] pba, intcPinLength, byte [] ppin)
创建ACL连接:
[Dllimport("Btdrt. dll", SetLastError= true)
public static extern int BthCreateACLConnection (byte[] pbt, ref ushort phandle);
然后是配对码验证:
[Dllimport("Btdrt. dll", SetLastError= true)]
public static extern int BthAuthenticate (byte []pbt);
然后一定要关闭连接:
[Dllimport("Btdrt. dll", SetLastError= true)]
public static extern int BthCloseConnection(ushorthandle);
•设置蓝牙无线电状态
[Dllimport("BthUtil. dll", SetLastError= true)]public static extern int BthSetMode (RadioModedwMode)
在建立好蓝牙设备的连接后,就可以进行两个蓝牙设备之间的通讯了。由于可以将蓝牙通信当作一个虚拟的串行通信来处理,所以在建立通讯的过程中可以采用类似于串口之间的通讯方式。而关于串口通讯这方面资料很多,本文就不具体详述了。
1.2 利用微软蓝牙嵌入式工具包编写蓝牙通讯模块
微软蓝牙嵌入式工具包是微软公司新推出来基于.NET Compact framework 2.0的一款专门用来快速开发蓝牙应用程序的工具包,直接在.NET平台下直接调用其中类库,可以快速,简单的开发一般的蓝牙应用程序。不过该工具包只能在bbbbbbs CE 5.0下使用。利用工具包可以完成:启动一个蓝牙服务,寻找周边蓝牙设备,连接已存在的蓝牙设备或者服务。工具包可以在微软网站下载。
利用此工具做两个蓝牙设备间进行简单文本传输的程序部分代码如下:
Server 端:
Guid serviceGuid = new Guid (" { 81553B2B-FFOB-4415-86C9-22B799058B81 } ");
ServerHandle sh = btseore. CreateService (ser-viceGuid);
NetworkStream ns= sh. AceeptConnection()Sting dataToSend= " Hello";
Byte [] dataBuffer = System. Text. ASCIIEncoding. ASCII. GetBytes(dataToSend);
ns. Write(dataBuffer, 0, dataBuffer. Length);
ns. Flush();
ns. Close();
Client 端:
PairedDevices= btsCore. GetPairedDevices();
Foreach (BluetoothDevice device in pairedDevices)
{pairedDevicesListBox. Item. Add (device. deviceName) ;}
Guid serviceGuid = new Guid (" { 01550D2D-FF0D-4415-86C9-22B799058B81 } ");
If (pairedDevicesListBox. SelectedIndex﹥=0);
{ BluetoothDevice deviceToConnect= ( BluetoothDevice ) pairedDevices [ pairedDevicesListBox. Selected];
NetworkStream ns = btsCore. Connect (deviceTo-Connect, serviceGuid);
byte[ ] buffer=new byte[2000]
ns. Read(buffer, 0,50);
char[ ] bufferAsChars= System. Text. ASCII. GetChars(buffer)
System. bbbbbb s= System. Text. Encoding. ASCIIGetbbbbbb(buffer, 0, buffer, length);
Message. Show(s)
ns. Close(); }
1.3 利用OpenNETCF编写蓝牙通讯模块
OpenNETCF是一个可以有效提高bbbbbbs Mobile开发效率的第三方开源类库。是一帮bbbbbbs Mobile爱好者共同编写的,里面提供了很多在.NET Compact framework 2.0中未能包含的类库。有两种方式可以来使用它:一种是可以将其当作一个组件安装在Visual Studio2005中;另一种是可以将其原代码编辑拿来使用。在OpenNETCF开源类库中就包括有蓝牙方面的,所以也可以利用OpenNETCF来编写蓝牙通讯模块。对应类库可在WWW.opennetcf.com网站下载。在类库中,可以利用命名空间OpenNETCF.IO.Ports下的Blue-toothSerialPort来建立蓝牙连接,利用命名空间OpenNETCF.IO.Serial中内容进行蓝牙程序的通讯。
2 基于本机码开发蓝牙通讯模块
本机码应用程序是使用一套特定软件平台的应用程序开发接口来开发,并且被编译成一个特定处理器的目的码或机器码。一般情况下,本机码提供较高的效能和小的资源要求,但是被编译好的本机码或是可执行文件却只能在此软件平台或特定处理器上运行。此外,本机码应用程序常需要应用开发者自行处理类似内存管理、资源管理、安全性管理等。在Visual Studio 2005中已经可以利用C++语言来开发基于MFC,ATL或Win32API的本机码WinCE程序。这就提供了类似于用bbbbbded Visual C++来开发bbbbbbs mobile设备的方法。而本文在利用P/Invoke方法编写蓝牙通讯模块时介绍的就是调用本机码开发蓝牙应用程序,方
法类似,所以此处就不再进行具体的分析了。
3 结束语
本文讨论了在Visual Studio 2005里分别利用托管码和本机码来开发bbbbbbs mobile设备蓝牙通讯模块的几种方法。文中介绍的蓝牙通讯模块各种开发方法都有各自的优点和缺点,如果用户开发的蓝牙通讯设备需要较高的效能和小的资源要求,一定是采用本机码的方法来开发是好的。因为采用本机码开发的程序是直接被编译成机器码来执行的,从而可以获得更高的性能。但是采用本机码来开发程序的大缺点就是开发难度大,开发周期长,所以并不适用于一般要求的用户。而在对效能和资源要求并不是很高的产品中采用文中所述的托管码中的几种方法来开发蓝牙通讯模块则是更好的选择,用托管码开发的程序会比较的简单和快速,同时又由于其并不直接生成终的机器代码,而是生成了中间代码来执行,所以用托管码开发的程序可以跨平台和处理器来运行,但是这是以牺牲一定的访问速度为代价的。在基于托管码开发蓝牙通讯设备中本文共介绍了3种方法,因为到.NET frameWORK 2.0的时候微软公司都没有开发针对蓝牙通讯模块的类库,所以利用P/Invoke方法编写蓝牙通讯模块是在托管码下开发蓝牙通讯模块比较常见的选择。而微软蓝牙嵌入式工具包和OpenNETCF类库编写蓝牙通讯模块方法比较类似,其都是类库对底层API的类封装,所以开发起来较为简单和快速,更适合于一般要求的蓝牙通讯模块的开发。
蓝牙设备在嵌入式环境下的应用有着十分广阔的前景,目前还有很多工作尚需研究。解决如何在bbbbbbs mobile平台下开发更好更高效的蓝牙应用程序能够推动蓝牙技术在嵌入式产品上的更好利用。这一方面的开发将具有极强的实用性,将成为以后研究工作的重点。