• <del id="qqie6"><sup id="qqie6"></sup></del>
  • <tfoot id="qqie6"></tfoot>
  • <ul id="qqie6"></ul>
  • 產(chǎn)品推薦:水表|流量計|壓力變送器|熱電偶|液位計|冷熱沖擊試驗箱|水質(zhì)分析|光譜儀|試驗機|試驗箱


    儀表網(wǎng)>技術(shù)中心>使用指南>正文

    歡迎聯(lián)系我

    有什么可以幫您? 在線咨詢

    C++開發(fā)BacnetIP主站程序

    來源:上海迅饒自動化科技有限公司   2013年08月06日 13:38  

    C++開發(fā)BacnetIP主站程序
    這里要說的方法就是調(diào)用Bacnet IP主站快速開發(fā)工具OMBacnetIPMaster.dll。
    步驟1、引用頭文件和LiB文件

    #Include "OM_BacnetIP_API.h"
    #pragma comment (lib, "OMBacnetIPMaster.lib")
    把OMBacnetIPMaster.dll放到新建的VC++工程的同一個文件夾
    步驟2、創(chuàng)建通道,通道管理所有的Bacnet屬性對象
    void CBacnetDemoDlg::OnBtnCreateChannel()
    {
    UpdateData(TRUE);
    m_hChannel = CreateChannel(m_strIP, m_nPort);
    }
    步驟3、創(chuàng)建要訪問的屬性對象。一些是訪問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、關(guān)閉程序釋放創(chuàng)建的資源
    zui后還有幾個輔助的API函數(shù),可以選擇性地使用。

    具體的頭文件申明如下:

    typedef VOID (CALLBACK *ERRORHANDLERPROC)(LPCTSTR lpErrorMsg);
    typedef VOID (CALLBACK *ABORTHANDLERPROC)(LPCTSTR lpAbortMsg);
    typedef VOID (CALLBACK *REJECTHANDLERPROC)(LPCTSTR lpRejectMsg);
    #Ifdef __cplusplus
    extern "C" {
    #Endif
    //通道管理用于創(chuàng)建、修改、刪除通道。創(chuàng)建通道以后,才能創(chuàng)建Bacnet屬性對象
    //創(chuàng)建一個通道對象只要是為了設置不同設備的IP地址和端口號。網(wǎng)絡超時等待時間默認是100毫秒
    //同時管理通道下的Bacnet屬性對象
    //參數(shù) 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對象管理,創(chuàng)建、修改、刪除
    //參數(shù) eObjType 為Bacent屬性對象的類型ID,譬如0表示 Analog Input,1表示Analog Output
    //參數(shù) wInstanceNum 為指明哪一個對象,譬如要訪問Analog Input 1。則 nInstanceNum為1
    //參數(shù) ePropID 為要訪問屬性的ID,譬如當前值的屬性ID是85
    //參數(shù) 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對象屬性值讀寫
    //參數(shù) eTegNumber 為Bacnet對象的Tag Number。也就是要寫的對象屬性的數(shù)據(jù)類型。當操作過ReadBacnet以后,這個參數(shù)可以為空。
    //當只寫操作的時候,則需要用戶自己指明是什么數(shù)據(jù)類型。譬如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);

    //以下是輔助函數(shù),可以選擇性使用

    //設置寫操作的優(yōu)先等級
    BOOL OMOPCSVRAPI WINAPI SetBacnetPriority(HANDLE hBacnetObj, WORD wPriority);
    //返回Bacnet對象屬性的數(shù)據(jù)類型,一般用于寫操作
    VARTYPE OMOPCSVRAPI WINAPI GetBacnetObjType(HANDLE hBacnetObj);
    //通信故障狀況回調(diào)函數(shù)
    BOOL OMOPCSVRAPI WINAPI EnableErrorMsgNofity(ERRORHANDLERPROC fnCallback);

    免責聲明

    • 凡本網(wǎng)注明“來源:儀表網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡有限公司-儀表網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應在授權(quán)范圍內(nèi)使用,并注明“來源:儀表網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責任。
    • 本網(wǎng)轉(zhuǎn)載并注明自其它來源(非儀表網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或和對其真實性負責,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品第一來源,并自負版權(quán)等法律責任。
    • 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
    聯(lián)系我們

    客服熱線: 15024464426

    加盟熱線: 15024464426

    媒體合作: 0571-87759945

    投訴熱線: 0571-87759942

    關(guān)注我們
    • 下載儀表站APP

    • Ybzhan手機版

    • Ybzhan公眾號

    • Ybzhan小程序

    企業(yè)未開通此功能
    詳詢客服 : 0571-87759942
    主站蜘蛛池模板: 久久成人国产精品| 成人精品一区二区三区中文字幕| 亚洲欧美成人一区二区三区| 亚洲欧美日韩国产成人| 欧美成人免费全部观看在线看| 成人性生交大片免费看好| 免费成人在线电影| 成人影片一区免费观看| 免费看的成人yellow视频| 欧美成人精品福利网站| 国产成人精品啪免费视频| 91成人免费观看在线观看| 国产成人精品视频一区二区不卡| 久久精品国产亚洲av成人| 国产成人精品视频一区二区不卡| 日韩国产欧美成人一区二区影院 | 久久伊人成人网| 成人a视频片在线观看免费| 亚洲国产成人久久笫一页| 成人免费激情视频| 香蕉成人伊视频在线观看| 国产成人无码午夜视频在线观看| 麻豆国产成人AV在线| 亚洲国产成人精品无码区在线秒播 | 亚洲欧美精品成人久久91| 在线观看国产精成人品| 日韩国产欧美成人一区二区影院| 亚洲成人免费网站| 国产成人一区二区三区高清| 国产精品成人一区二区三区| 成人精品视频一区二区三区 | 亚洲欧美日韩成人一区在线| 国产成人最新毛片基地| 国产成人精品福利网站在线观看| 成人麻豆日韩在无码视频| 成人试看120秒体验区| 成人在线观看不卡| 国产日韩美国成人| 免费成人在线电影| 一级毛片成人免费看a| 久久亚洲AV成人无码国产|