<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費(fèi)電子 > 設(shè)計應(yīng)用 > 基于掌上終端的藍(lán)牙微微網(wǎng)無線數(shù)據(jù)采集控制系統(tǒng)

          基于掌上終端的藍(lán)牙微微網(wǎng)無線數(shù)據(jù)采集控制系統(tǒng)

          作者: 時間:2010-07-30 來源:網(wǎng)絡(luò) 收藏

          2.3智能控制系統(tǒng)
          代替 PC機(jī)、筆記本電腦、工控機(jī)等作為現(xiàn)場系統(tǒng)的上位機(jī),是現(xiàn)場與控制中心及數(shù)據(jù)接收中心,主要任務(wù)包括:器管理及傳感器校正、數(shù)據(jù)采集器參數(shù)設(shè)置、數(shù)據(jù)采集控制、數(shù)據(jù)接收、實(shí)時顯示與數(shù)據(jù)存儲、回放。
          智能內(nèi)嵌的模塊,調(diào)用相應(yīng)的協(xié)議棧庫函數(shù)即可完成的相關(guān)操作。數(shù)據(jù)采集器管理模塊負(fù)責(zé)設(shè)備查找與設(shè)備安全認(rèn)證;采集參數(shù)攝制及控制模塊向采集器發(fā)送工作控制命令;數(shù)據(jù)接收模塊實(shí)時接收采集器數(shù)據(jù)并提供圖形化顯示;實(shí)時采集的數(shù)據(jù)按照約定格式存放在指定文件中,并根據(jù)需要提供歷史數(shù)據(jù)回放。
          2.4藍(lán)牙網(wǎng)數(shù)據(jù)通信


          藍(lán)牙是一種短距離低功耗無線傳輸技術(shù),工作于 2.4GHz的 ISM頻段[2]。藍(lán)牙通信協(xié)議棧分為四層,其中核心層為基帶協(xié)議層( BaseBand)鏈路管理協(xié)議( LMP)、邏輯鏈接控制和適配協(xié)議( L2CAP)以及服務(wù)發(fā)現(xiàn)協(xié)議( SDP),核心層之上為電纜替代協(xié)議(RFCOMM)與電話傳送控制協(xié)議( TCS-Binary)[2]。本系統(tǒng)藍(lán)牙無線傳輸工作在 RFCOMM協(xié)議上,利用 Serial Port Profile將藍(lán)牙設(shè)備虛擬成串口設(shè)備,數(shù)據(jù)的傳輸操作與串口操作相同,開發(fā)方便。

          本文引用地址:http://www.ex-cimer.com/article/166660.htm

          3掌上的工作流程
          掌上的主要功能包括采集參數(shù)設(shè)置、采集器系統(tǒng)自檢、傳感器校正、采集控制以及數(shù)據(jù)回顯。參數(shù)設(shè)置模塊設(shè)置采樣間隔、保存文件路徑、工程信息等參數(shù);采集器系統(tǒng)自檢模塊以預(yù)采集的方式啟動采集器,檢測整個系統(tǒng)軟硬件工作狀態(tài);傳感器校正模塊實(shí)現(xiàn)各傳感器的零漂糾正及系數(shù)率定;采集控制模塊控制采集器的數(shù)據(jù)采樣啟動與結(jié)束,接收并處理數(shù)據(jù),完成數(shù)據(jù)的實(shí)時顯示及保存;數(shù)據(jù)回顯模塊從文件讀取歷史數(shù)據(jù)并顯示。

          4 主要功能實(shí)現(xiàn)
          4.1數(shù)據(jù)幀藍(lán)牙數(shù)據(jù)通信中,命令幀結(jié)構(gòu)與數(shù)據(jù)幀的約定如下:命令幀由兩位命令標(biāo)識、四位命令參數(shù)和兩位結(jié)束符組成,如 IT0001ZZ,IT代表設(shè)置采樣間隔命令, 0001約定為采樣間隔為 0.01ms,ZZ為統(tǒng)一結(jié)束符。數(shù)據(jù)幀由兩位機(jī)器識別碼、兩位數(shù)據(jù)和兩位結(jié)束符組成,如 A1HLZZ;其中 H表示 16進(jìn)制數(shù)據(jù)的高位 ,L代表低位。
          每次采集傳輸數(shù)據(jù)時,終端無間隔采集并傳送 5組數(shù)據(jù),在掌上控制終端進(jìn)行中值濾波,以減小誤差。
          4.2藍(lán)牙設(shè)備發(fā)現(xiàn)與連接實(shí)現(xiàn)
          4.2.1 微軟協(xié)議棧的藍(lán)牙傳輸實(shí)現(xiàn)微軟的藍(lán)牙驅(qū)動,開發(fā)簡單。通過使用 Socket實(shí)現(xiàn)通信連接。

          發(fā)現(xiàn)設(shè)備需要用到三個 Winsock的 API,分別是 WSALookupServiceBegin、 WSALookupServiceNext和 WSALookupServiceEnd。頭文件為 Winsock2.h,庫文件為 Ws2_32.lib。
          使用 Socket設(shè)備發(fā)現(xiàn)的代碼如下: WSALookupServiceBegin (querySet, LUP_CONTAINERS, hLookup); WSALookupServiceNext (hLookup, flags, dwSize, pwsaResults) WSALookupServiceEnd(hLookup);利用 pwsaResults返回的藍(lán)牙物理地址與 GUID做為 socket連接參數(shù),可與目的設(shè)備
          進(jìn)行連接。代碼如下:
          SOCKET m_socketClient = socket (AF_BT, SOCK_STREAM,
          BTHPROTO_RFCOMM); connect (m_socketClient, (SOCKADDR *)sa, sizeof(sa))進(jìn)行設(shè)備連接。連接成功后,可用下列代碼進(jìn)行數(shù)據(jù)收發(fā):
          recv(p->m_socketClient,buf,1024,0); send (m_socketClient, (char *)buf, nSize, 0);
          4.2.2 基于 widcomm協(xié)議棧的藍(lán)牙傳輸實(shí)現(xiàn)使用如下語句啟動查詢:
          StartInquiry();
          Void OnDeviceResponded (BD_ADDR bda, DEV_CLASS devClass, BD_NAME bdName, BOOL bConnected)
          bda為返回設(shè)備地址, bdName為返回設(shè)備名稱。當(dāng)查詢時間結(jié)束時,響應(yīng)查詢定時器函數(shù),開啟服務(wù)查找線程:
          StartDiscovery(m_BdAddr, m_pServiceGuid) ;
          Widcomm提供了各種協(xié)議的不同連接方式,基于 RFCOMM協(xié)議的 SPP連接代碼如下:
          CSppClient::CreateConnection(m_BdAddr,m_serviceName);
          當(dāng)設(shè)備連接成功,可以返回相關(guān)狀態(tài):
          Void OnClientStateChange(BD_ADDR bda, DEV_CLASS dev_class, BD_NAME name, short com_port, SPP_STATE_CODE state)
          使用函數(shù)返回的 com_port為串口號建立串口操作
          CreateFile (buff, GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0, NULL )。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();