沈樵综合在线,一区二区三区乱码,免费资源一区二区三区,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://www.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ù)您~
黔南| 安国市| 临汾市| 黄石市| 洛隆县| 沾益县| 洛浦县| 新源县| 井陉县| 昌邑市| 和龙市| 保定市| 凤台县| 集贤县| 乐亭县| 望城县| 百色市| 五家渠市| 安徽省| 牡丹江市| 丰台区| 阜宁县| 常德市| 华蓥市| 晋宁县| 河西区| 康乐县| 邮箱| 扶风县| 克什克腾旗| 西盟| 两当县| 三原县| 岳西县| 区。| 天水市| 平定县| 克拉玛依市| 民勤县| 陵川县| 会昌县|