产品推荐:水表|流量计|压力变送器|热电偶|液位计|冷热冲击试验箱|水质分析|光谱仪|试验机|试验箱


仪表网>技术中心>使用指南>正文

欢迎联系我

有什么可以帮您? 在线咨询

VB开发BACnetIP主站介绍

来源:上海迅饶自动化科技有限公司   2013年08月06日 13:40  

VB开发BACnetIP主站介绍
Visual Basic开发BACnet IP主站程序方法介绍
这里要说的方法就是调用BACnet IP主站快速开发工具OMBACnetIPMaster.dll。
步骤1、创建通道,而通道管理所有的Bacnet属性对象。参数分别IP地址,端口号和网络超时时间,默认是100毫秒。
Private Sub OpenChannelButton_Click()
StringToByte txtIPAddress, IPAddress()
ChannelHandle(0) = CreateBacnetChannel(IPAddress(0), CLng(txtPort), 100)
End Sub
通道编辑操作的相关API函数声明如下
‘ 通道管理用于创建、修改、删除通道。创建通道以后,才能创建Bacnet属性对象
‘ 创建一个通道对象只要是为了设置不同设备的IP地址和端口号。网络超时等待时间默认是100毫秒
Function CreateBacnetChannel Lib 'OMBacnetIPMaster.dll' Alias '_CreateChannel@12' (ByRef IPAddress As Byte, ByVal nPort As Long, ByVal nTimeOut As Long) As Long
Function ConfigureChannel Lib 'OMBacnetIPMaster.dll' Alias '_ConfigureChannel@16' (ByVal ChannelHandle As Long, ByRef IPAddress As Byte, ByVal nPort As Long, ByVal nTimeOut As Long) As Long
Function RemoveChannel Lib 'OMBacnetIPMaster.dll' Alias '_RemoveChannel@4' (ByVal ChannelHandle As Long) As Long

步骤2、创建Bacnet属性对象。
Private Sub CreateBacnetObjButton_Click()
TagHandle(0) = CreateBacnetObj(ChannelHandle(0), 1, 1, 85)
End Sub
BACnet属性对象编辑相关的API函数申明如下
‘ BACnet对象管理,创建、修改、删除
‘参数 ChannelHandle 为通道对象的句柄
‘参数 nBacnetObjType 为Bacent属性对象的类型ID,譬如0表示 Analog Input,1表示Analog Output
‘参数 nInstanceNum 为指明哪一个对象,譬如要访问Analog Input 1。则 nInstanceNum为1
‘参数 nProperityID 为要访问属性的ID,譬如当前值的属性ID是85
‘参数 TagHandle 为Bacnet对象的句柄
Function CreateBacnetObj Lib 'OMBacnetIPMaster.dll' Alias '_CreateBacnetObject@16' (ByVal ChannelHandle As Long, ByVal nBacnetObjType As Long, ByVal nInstanceNum As Long, ByVal nProperityID As Long) As Long
Function ConfigureObject Lib 'OMBacnetIPMaster.dll' Alias '_ConfigureObject@16' (ByVal ChannelHandle As Long, ByVal nBacnetObjType As Long, ByVal nInstanceNum As Long, ByVal nProperityID As Long) As Long
Function RemoveBacnetObject Lib 'OMBacnetIPMaster.dll' Alias '_RemoveBacnetObject@4' (ByVal TagHandle As Long) As Long

步骤3、BACnet属性对象的读写
Private Sub WriteBacnetObjectButtton_Click()
error = WriteBacnetObj(TagHandle(0), CSng(Tag2.Text), 0)
End Sub
Private Sub ReadBacnetObjButton_Click()
Dim a As Variant
error = ReadBacnetObj(TagHandle(0), a)
Tag1.Text = a
End Sub
‘ BACnet对象属性值读写
‘参数 nTagNum 为Bacnet对象的Tag Number。也就是要写的对象属性的数据类型。当操作过ReadBacnet以后,这个参数可以为空。
‘当只写操作的时候,则需要用户自己指明是什么数据类型。譬如Analog Output为4.也就是单精度浮点型。
Function ReadBacnetObj Lib 'OMBacnetIPMaster.dll' Alias '_ReadBacnetObject@8' (ByVal TagHandle As Long, ByRef Value As Variant) As Long
Function WriteBacnetObj Lib 'OMBacnetIPMaster.dll' Alias '_WriteBacnetObject@12' (ByVal TagHandle As Long, ByRef Value As Variant, ByVal nTagNum As Long) As Long
步骤4、关闭程序时,释放对象资源。

Private Sub RemoveBacnetObjButton_Click()
error = RemoveBacnetObject(ByVal TagHandle(0))
End Sub

Private Sub RemoveChannelButton_Click()
error = RemoveChannel(ByVal ChannelHandle(0))
End Sub
zui后讨论一下辅助函数的作用
‘以下是辅助函数,可以选择性使用
‘设置写操作的优先等级
Function SetBacnetPriority Lib 'OMBacnetIPMaster.dll' Alias '_SetBacnetPriority@8' (ByVal TagHandle As Long, ByVal nPriority As Long) As Long
‘返回Bacnet对象属性的数据类型,一般用于写操作
Function GetBacnetObjType Lib 'OMBacnetIPMaster.dll' Alias '_GetBacnetObjType@4' (ByVal TagHandle As Long) As Long
‘通信故障状况回调函数
Function EnableErrorMsgNofity Lib 'OMBacnetIPMaster.dll' Alias '_EnableErrorMsgNofity@4' (ByVal Callback As Long) As Long
Function EnableAbortMsgNofity Lib 'OMBacnetIPMaster.dll' Alias '_EnableAbortMsgNofity@4' (ByVal Callback As Long) As Long
Function EnableRejectMsgNofity Lib 'OMBacnetIPMaster.dll' Alias '_EnableRejectMsgNofity@4' (ByVal Callback As Long) As Long

免责声明

  • 凡本网注明“来源:仪表网”的所有作品,均为浙江兴旺宝明通网络有限公司-仪表网合法拥有版权或有权使用的作品,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:仪表网”。违反上述声明者,本网将追究其相关法律责任。
  • 本网转载并注明自其它来源(非仪表网)的作品,目的在于传递更多信息,并不代表本网赞同其观点或和对其真实性负责,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品第一来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
联系我们

客服热线: 15267989561

加盟热线: 15267989561

媒体合作: 0571-87759945

投诉热线: 0571-87759942

关注我们
  • 下载仪表站APP

  • Ybzhan手机版

  • Ybzhan公众号

  • Ybzhan小程序

企业未开通此功能
详询客服 : 0571-87759942