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

    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++工程的同一個(gè)文件夾
    步驟2、創(chuàng)建通道,通道管理所有的Bacnet屬性對象
    void CBacnetDemoDlg::OnBtnCreateChannel()
    {
    UpdateData(TRUE);
    m_hChannel = CreateChannel(m_strIP, m_nPort);
    }
    步驟3、創(chuàng)建要訪問的屬性對象。一些是訪問Analog Output 1的當(dāng)前值屬性。
    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)建的資源
    最后還有幾個(gè)輔助的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)建一個(gè)通道對象只要是為了設(shè)置不同設(shè)備的IP地址和端口號。網(wǎng)絡(luò)**時(shí)等待時(shí)間默認(rèn)是100毫秒
    //同時(shí)管理通道下的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 為指明哪一個(gè)對象,譬如要訪問Analog Input 1。則 nInstanceNum為1
    //參數(shù) ePropID 為要訪問屬性的ID,譬如當(dāng)前值的屬性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ù)類型。當(dāng)操作過ReadBacnet以后,這個(gè)參數(shù)可以為空。
    //當(dāng)只寫操作的時(shí)候,則需要用戶自己指明是什么數(shù)據(jù)類型。譬如Analog Output為4.也就是單精度浮點(diǎn)型。
    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ù),可以選擇性使用


    //設(shè)置寫操作的**等級
    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);


    上海迅饒自動化科技有限公司專注于BTL認(rèn)證協(xié)議BACnet網(wǎng)關(guān),Modbus轉(zhuǎn)BACnet網(wǎng)關(guān),OPC轉(zhuǎn)BACnet,協(xié)議轉(zhuǎn)換Modbus網(wǎng)關(guān),改造項(xiàng)目協(xié)議轉(zhuǎn)換HUB網(wǎng)關(guān),協(xié)議轉(zhuǎn)換WEB組態(tài)觸摸屏等

  • 詞條

    詞條說明

  • OPCBridge解決方案

    OPCBridge解決方案 一、南京蘇寧物業(yè)火災(zāi)報(bào)警監(jiān)控系統(tǒng)集成 該項(xiàng)目是南京司南科技有限公司分包工程的一部分,里面的火災(zāi)報(bào)警系統(tǒng)用的是北京西門子西伯樂斯電子有限公司的JB-TGZL-FC18R型火災(zāi)報(bào)警控制器通訊協(xié)議,而使用的BA監(jiān)控軟件是霍尼韋爾公司的EBI組態(tài)軟件。由于EBI組態(tài)軟件本身不支持火災(zāi)報(bào)警系統(tǒng)的第三方接口通訊協(xié)議,因此委托我司開發(fā)的支持此通訊協(xié)議OPC服務(wù)器, EBI組態(tài)軟件通

  • 協(xié)議網(wǎng)關(guān)在工廠自動化中的應(yīng)用

    協(xié)議網(wǎng)關(guān)在工廠自動化中的應(yīng)用 條形碼比對系統(tǒng)

  • 客戶需求案例1-OPC bridge

    客戶需求案例1-OPC bridge 客戶需求案例,如果避免DCOM配置,在廣域網(wǎng)進(jìn)行數(shù)據(jù)讀取。 迅饒技術(shù)銷售:請告知一下需求,看我們是否能夠解決? 客戶:我們的需求是在遠(yuǎn)程服務(wù)器上,通過OPC Clint采集工業(yè)現(xiàn)場中所有的OPC server中的OPC點(diǎn)。 迅饒技術(shù)銷售:是局域網(wǎng)內(nèi),還是廣域網(wǎng)內(nèi)? 客戶:局域網(wǎng)和廣域網(wǎng)的情況都有。 迅饒技術(shù)銷售:假如是局域網(wǎng),現(xiàn)在就是想繞過DCOM配置的問題

  • BACnet IP和 Ethernet協(xié)議的異同點(diǎn)

    BACnet IP和 Ethernet協(xié)議的異同點(diǎn) 從工程技術(shù)的角度分析2者的差別,有不對的地方請專業(yè)人士不吝賜教! 1、主要的相同點(diǎn)如下。 a、NPDU的內(nèi)容是一樣的。以讀Binary-output 1的Object-Name屬性為例。 NNPU為:01 04 00 05 01 0c 0c 01 00 00 01 19 4d b、通訊的物理介質(zhì)相同。都是通過網(wǎng)口 2、不同點(diǎn)如下: BACnet

聯(lián)系方式 聯(lián)系我時(shí),請告知來自八方資源網(wǎng)!

公司名: 上海迅饒自動化科技有限公司

聯(lián)系人: 陳沖

電 話: 021-58776098

手 機(jī): 13564889340

微 信: 13564889340

地 址: 上海浦東浦東新區(qū)金海路2588號*科技園428室

郵 編: 201209

網(wǎng) 址: sunfull2013.cn.b2b168.com

八方資源網(wǎng)提醒您:
1、本信息由八方資源網(wǎng)用戶發(fā)布,八方資源網(wǎng)不介入任何交易過程,請自行甄別其真實(shí)性及合法性;
2、跟進(jìn)信息之前,請仔細(xì)核驗(yàn)對方資質(zhì),所有預(yù)付定金或付款至個(gè)人賬戶的行為,均存在詐騙風(fēng)險(xiǎn),請?zhí)岣呔瑁?
    聯(lián)系方式

公司名: 上海迅饒自動化科技有限公司

聯(lián)系人: 陳沖

手 機(jī): 13564889340

電 話: 021-58776098

地 址: 上海浦東浦東新區(qū)金海路2588號*科技園428室

郵 編: 201209

網(wǎng) 址: sunfull2013.cn.b2b168.com

    相關(guān)企業(yè)
    商家產(chǎn)品系列
  • 產(chǎn)品推薦
  • 資訊推薦
關(guān)于八方 | 八方幣 | 招商合作 | 網(wǎng)站地圖 | 免費(fèi)注冊 | 一元廣告 | 友情鏈接 | 聯(lián)系我們 | 八方業(yè)務(wù)| 匯款方式 | 商務(wù)洽談室 | 投訴舉報(bào)
粵ICP備10089450號-8 - 經(jīng)營許可證編號:粵B2-20130562 軟件企業(yè)認(rèn)定:深R-2013-2017 軟件產(chǎn)品登記:深DGY-2013-3594
著作權(quán)登記:2013SR134025
Copyright ? 2004 - 2025 b2b168.com All Rights Reserved