- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于掌上终端的蓝牙微微网无线数据采集控制系统
2.3掌上智能控制终端系统
掌上终端代替 PC机、笔记本电脑、工控机等作为现场数据采集系统的上位机,是现场数据采集与控制中心及数据接收中心,主要任务包括:蓝牙数据采集器管理及传感器校正、数据采集器参数设置、数据采集控制、无线数据接收、实时显示与数据存储、回放。
基于掌上智能终端内嵌的蓝牙模块,调用相应的协议栈库函数即可完成蓝牙的相关操作。数据采集器管理模块负责设备查找与设备安全认证;采集参数摄制及控制模块向采集器发送工作控制命令;无线数据接收模块实时接收采集器数据并提供图形化显示;实时采集的数据按照约定格式存放在指定文件中,并根据需要提供历史数据回放。
2.4蓝牙微微网无线数据通信
蓝牙是一种短距离低功耗无线传输技术,工作于 2.4GHz的 ISM频段[2]。蓝牙通信协议栈分为四层,其中核心层为基带协议层( BaseBand)链路管理协议( LMP)、逻辑链接控制和适配协议( L2CAP)以及服务发现协议( SDP),核心层之上为电缆替代协议(RFCOMM)与电话传送控制协议( TCS-Binary)[2]。本系统蓝牙无线传输工作在 RFCOMM协议上,利用 Serial Port Profile将蓝牙设备虚拟成串口设备,数据的传输操作与串口操作相同,开发方便。
3掌上控制系统的工作流程
掌上控制系统的主要功能包括采集参数设置、采集器系统自检、传感器校正、采集控制以及数据回显。参数设置模块设置采样间隔、保存文件路径、工程信息等参数;采集器系统自检模块以预采集的方式启动采集器,检测整个系统软硬件工作状态;传感器校正模块实现各传感器的零漂纠正及系数率定;采集控制模块控制采集器的数据采样启动与结束,接收并处理数据,完成数据的实时显示及保存;数据回显模块从文件读取历史数据并显示。
4 主要功能实现
4.1 数据帧蓝牙数据通信中,命令帧结构与数据帧的约定如下:命令帧由两位命令标识、四位命令参数和两位结束符组成,如 IT0001ZZ,IT代表设置采样间隔命令, 0001约定为采样间隔为 0.01ms,ZZ为统一结束符。数据帧由两位机器识别码、两位数据和两位结束符组成,如 A1HLZZ;其中 H表示 16进制数据的高位 ,L代表低位。
每次采集传输数据时,终端无间隔采集并传送 5组数据,在掌上控制终端进行中值滤波,以减小误差。
4.2蓝牙设备发现与连接实现
4.2.1 基于微软协议栈的蓝牙传输实现基于微软的蓝牙驱动,开发简单。通过使用 Socket实现通信连接。
发现设备需要用到三个 Winsock的 API,分别是 WSALookupServiceBegin、 WSALookupServiceNext和 WSALookupServiceEnd。头文件为 Winsock2.h,库文件为 Ws2_32.lib。
使用 Socket设备发现的代码如下: WSALookupServiceBegin (&querySet, LUP_CONTAINERS, &hLookup); WSALookupServiceNext (hLookup, flags, &dwSize, pwsaResults) WSALookupServiceEnd(hLookup);利用 pwsaResults返回的蓝牙物理地址与 GUID做为 socket连接参数,可与目的设备进行连接。代码如下:
SOCKET m_socketClient = socket (AF_BT, SOCK_STREAM,
BTHPROTO_RFCOMM); connect (m_socketClient, (SOCKADDR *)&sa, sizeof(sa))进行设备连接。连接成功后,可用下列代码进行数据收发:
recv(p->m_socketClient,buf,1024,0); send (m_socketClient, (char *)buf, nSize, 0);
4.2.2 基于 widcomm协议栈的蓝牙传输实现使用如下语句启动查询:
StartInquiry();
Void OnDeviceResponded (BD_ADDR bda, DEV_CLASS devClass, BD_NAME bdName, BOOL bConnected)
bda为返回设备地址, bdName为返回设备名称。当查询时间结束时,响应查询定时器函数,开启服务查找线程:
StartDiscovery(m_BdAddr, m_pServiceGuid) ;
Widcomm提供了各种协议的不同连接方式,基于 RFCOMM协议的 SPP连接代码如下:
CSppClient::CreateConnection(m_BdAddr,m_serviceName);
当设备连接成功,可以返回相关状态:
Void OnClientStateChange(BD_ADDR bda, DEV_CLASS dev_class, BD_NAME name, short com_port, SPP_STATE_CODE state)
使用函数返回的 com_port为串口号建立串口操作
CreateFile (buff, GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0, NULL )。
作者:邢璐 别红霞 来源:21IC电子网
上一篇:无线通信系统中的软基站技术
下一篇:虹信节能减排产品解决方案