當前位置:自動化網>上海迅饒自動化科技有限公司門戶>應用案例>C++開發BacnetIP主站程序

          C++開發BacnetIP主站程序

          發布時間:2014-03-18 18:19   類型:技術前沿   人瀏覽

          這里要說的方法就是調用Bacnet IP主站快速開發工具OMBacnetIPMaster.dll。
          步驟1、引用頭文件和LiB文件
           
          #include "OM_BacnetIP_API.h"
          #pragma comment (lib, "OMBacnetIPMaster.lib")
          把OMBacnetIPMaster.dll放到新建的VC++工程的同一個文件夾
          步驟2、創建通道,通道管理所有的Bacnet屬性對象
          void CBacnetDemoDlg::OnBtnCreateChannel() 
          { 
          UpdateData(TRUE); 
          m_hChannel = CreateChannel(m_strIP, m_nPort); 
          }
          步驟3、創建要訪問的屬性對象。一些是訪問Analog Output 1的當前值屬性。
          void CBacnetDemoDlg::OnBtnBacnetObject() 
          { 
          if (m_hChannel && !m_hBacnetObj) 
          { 
          m_hBacnetObj = CreateBacnetObject(m_hChannel, OBJECT_ANALOG_OUTPUT, 1, PROP_PRESENT_VALUE); 
          } 
          }
          步驟4、讀寫屬性對象的值
          void CBacnetDemoDlg::OnBtnReadObject() 
          {

          if (m_hBacnetObj && m_hBacnetObj) 
          {

          VARIANT variant; 
          VariantInit(&variant); 
          BOOL bIsOK = ReadBacnetObject(m_hBacnetObj, &variant);

          m_strPV.Format("%f", variant.fltVal); 
          VariantClear(&variant); 
          UpdateData(FALSE); 
          } 
          } 
          寫1000到Analog Output 1
          void CBacnetDemoDlg::OnBtnWriteObject() 
          { 
          if (m_hBacnetObj) 
          { 
          VARIANT variant; 
          VariantInit(&variant); 
          variant.vt = GetBacnetObjType(m_hBacnetObj); 
          variant.fltVal = 1000; 
          BOOL bIsOK = WriteBacnetObject(m_hBacnetObj, &variant); 
          VariantClear(&variant); 
          }

          } 
          步驟4、關閉程序釋放創建的資源
          最后還有幾個輔助的API函數,可以選擇性地使用。
           
          具體的頭文件申明如下:


          typedef VOID (CALLBACK *ERRORHANDLERPROC)(LPCTSTR lpErrorMsg); 
          typedef VOID (CALLBACK *ABORTHANDLERPROC)(LPCTSTR lpAbortMsg); 
          typedef VOID (CALLBACK *REJECTHANDLERPROC)(LPCTSTR lpRejectMsg); 
          #ifdef __cplusplus 
          extern "C" { 
          #endif 
          //通道管理用于創建、修改、刪除通道。創建通道以后,才能創建Bacnet屬性對象 
          //創建一個通道對象只要是為了設置不同設備的IP地址和端口號。網絡超時等待時間默認是100毫秒 
          //同時管理通道下的Bacnet屬性對象 
          //參數 hChannel 為通道對象的句柄 
          HANDLE OMOPCSVRAPI WINAPI CreateChannel(LPCTSTR lpIP, WORD wPort, DWORD dwTimeOut =100); 
          BOOL OMOPCSVRAPI WINAPI ConfigureChannel(HANDLE hChannel, LPCTSTR lpIP, WORD wPort, DWORD dwTimeOut=100); 
          BOOL OMOPCSVRAPI WINAPI RemoveChannel (HANDLE hChannel);

          //Bacnet對象管理,創建、修改、刪除

          //參數 eObjType 為Bacent屬性對象的類型ID,譬如0表示 Analog Input,1表示Analog Output 
          //參數 wInstanceNum 為指明哪一個對象,譬如要訪問Analog Input 1。則 nInstanceNum為1 
          //參數 ePropID 為要訪問屬性的ID,譬如當前值的屬性ID是85 
          //參數 hBacnetObj 為Bacnet對象的句柄 
          HANDLE OMOPCSVRAPI WINAPI CreateBacnetObject(HANDLE hChannel, BACNET_OBJECT_TYPE eObjType, WORD wInstanceNum, BACNET_PROPERTY_ID ePropID = PROP_PRESENT_VALUE ); 
          BOOL OMOPCSVRAPI WINAPI ConfigureBacnetObject(HANDLE hBacnetObj, BACNET_OBJECT_TYPE eObjType, WORD wInstanceNum, BACNET_PROPERTY_ID ePropID); 
          BOOL OMOPCSVRAPI WINAPI RemoveBacnetObject (HANDLE hBacnetObj); 
          // Bacnet對象屬性值讀寫 
          //參數 eTegNumber 為Bacnet對象的Tag Number。也就是要寫的對象屬性的數據類型。當操作過ReadBacnet以后,這個參數可以為空。 
          //當只寫操作的時候,則需要用戶自己指明是什么數據類型。譬如Analog Output為4.也就是單精度浮點型。 
          BOOL OMOPCSVRAPI WINAPI ReadBacnetObject(HANDLE hBacnetObj, VARIANT *pValue); 
          BOOL OMOPCSVRAPI WINAPI WriteBacnetObject(HANDLE hBacnetObj,VARIANT* pValue, BACNET_APPLICATION_TAG eTegNumber = BACNET_APPLICATION_TAG_NULL);


          //以下是輔助函數,可以選擇性使用


          //設置寫操作的優先等級 
          BOOL OMOPCSVRAPI WINAPI SetBacnetPriority(HANDLE hBacnetObj, WORD wPriority); 
          //返回Bacnet對象屬性的數據類型,一般用于寫操作 
          VARTYPE OMOPCSVRAPI WINAPI GetBacnetObjType(HANDLE hBacnetObj);

          //通信故障狀況回調函數 
          BOOL OMOPCSVRAPI WINAPI EnableErrorMsgNofity(ERRORHANDLERPROC fnCallback);

          本文地址:http://m.xznet110.com:8002/apply/d_1nsq78b4sdd21_1.html

          拷貝地址

          版權聲明:版權歸中國自動化網所有,轉載請注明出處!

          留言反饋
          • 評價:

          • 關于:

          • 聯系人:

          • 聯系電話:

          • 聯系郵箱:

          • 需求意向:

          • 驗證碼:

            看不清楚?

          • 在線咨詢
          主站蜘蛛池模板: 亚洲精品人成电影网| 97成人碰碰久久人人超级碰OO| 久久综合久久鬼色| 久久久91精品国产一区二区三区| 久草免费手机视频| 中文字幕无码乱码人妻系列蜜桃| xyx性爽欧美| 一个人hd高清在线观看| 两个美女脱了内裤互摸网沾| 中文字幕水野优香在线网在线| 久久久精品人妻无码专区不卡| 久久精品国产99国产精品| 久热国产在线视频| 两个人看的www高清免费视频| chinesestockings国产| a级毛片高清免费视频就| 伊人影视在线观看日韩区| 热久久这里是精品6免费观看| 韩国午夜情深深免费| 精品免费视频一卡2卡三卡4卡不卡 | 免费福利小视频| 免费观看日本污污ww网站一区| 亚洲日本一区二区一本一道 | 国产一区在线视频| 四虎影视在线影院www| 午夜精品福利视频| 免费看美女扒开腿让男人桶| 亚洲国产三级在线观看| 亚洲av永久青草无码精品| 中国精品一级毛片免费播放| 2021午夜国产精品福利| 91麻豆国产福利精品| 天堂资源在线中文| 老司机久久影院| 男人天堂999| 欧美成人一区二区三区在线视频| 欧洲成人午夜精品无码区久久| 日韩精品第1页| 成人免费大片免费观看网站| 天天看片天天干| 国产免费拔擦拔擦8x高清在线人|