沈樵综合在线,一区二区三区乱码,免费资源一区二区三区,91超碰碰,av极品一线天,日韩免费高清一区二区,国产蜜尤福利在线,嗯啊91在线观看,精品一区二三

行業(yè)產(chǎn)品

  • 行業(yè)產(chǎn)品

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


當(dāng)前位置:上海迅饒自動化科技有限公司>技術(shù)文章>C++開發(fā)BacnetIP主站程序
技術(shù)文章

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

閱讀:1753發(fā)布時間:2013-8-6

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的當(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)建的資源
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)建一個通道對象只要是為了設(shè)置不同設(shè)備的IP地址和端口號。網(wǎng)絡(luò)超時等待時間默認是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,譬如當(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以后,這個參數(shù)可以為空。
//當(dāng)只寫操作的時候,則需要用戶自己指明是什么數(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ù),可以選擇性使用

//設(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) 設(shè)計制作,未經(jīng)允許翻錄必究 .? ? ? Copyright(C)?2021 http://m.liuyangwu.com,All rights reserved.

以上信息由企業(yè)自行提供,信息內(nèi)容的真實性、準確性和合法性由相關(guān)企業(yè)負責(zé),儀表網(wǎng)對此不承擔(dān)任何保證責(zé)任。 溫馨提示:為規(guī)避購買風(fēng)險,建議您在購買產(chǎn)品前務(wù)必確認供應(yīng)商資質(zhì)及產(chǎn)品質(zhì)量。

會員登錄

×

請輸入賬號

請輸入密碼

=

請輸驗證碼

收藏該商鋪

登錄 后再收藏

提示

您的留言已提交成功!我們將在第一時間回復(fù)您~
五家渠市| 于田县| 奉化市| 疏附县| 永嘉县| 手游| 旬邑县| 富顺县| 宕昌县| 民县| 浦城县| 江山市| 塔城市| 理塘县| 泰和县| 静海县| 青神县| 财经| 乳山市| 和龙市| 普陀区| 安康市| 嘉义县| 霍林郭勒市| 温州市| 嘉祥县| 新津县| 安福县| 行唐县| 宜宾市| 左云县| 石首市| 鹰潭市| 义乌市| 永胜县| 民权县| 应城市| 新干县| 佛山市| 舒城县| 平安县|