服务热线
4006-598-119
甘肃海湾DH-GST-COM电气火灾监控设备集成应用编程接口
目 录
甘肃海湾GSTCOM甘肃火灾报警控制器集成应用软件接口(以下简称接口)是用于第三方进行系统集成的专用编程接口,它可与GST-DH9000电气火灾监控设备(以下简称电气火灾监控设备)进行通讯。本接口为方便用户进行二次开发,附带了VB、VC、C#、Delphi编程样例程序,供用户参考。
Windows XP、Windows 7、Windows 10
软件:本控件使用前需要对GstCom.Dll进行注册,安装程序已经自动将此控件注册。
硬件:需要一块与电气火灾监控设备相适应的标准RS232通讯接口板,标准RS232通讯接口板与计算机用串口线连接。
将安装文件拷贝到任意目录下,运行GstLDCom_Setup.exe 即可。
安装完成后查看用户选择的安装目录下是否有如图1文件。
图1
目录下的GstCom.Dll是GstCom消防通讯接口控件, GstComVbSample.exe是VB应用程序,GstLDCom.doc文件为用户手册,Include目录下为GstCom消防通讯接口控件在VC编程应用环境下所需的头文件,Samples目录下为示例程序的源码。
安装完成后,开始菜单栏“程序”子菜单出现GstCom-> GstCom Test Sample。启动系统能正常运行。
用户 次使用接口时,若该控件未注册,将弹出未注册对话框。若用户希望注册该控件,请将注册对话框中的用户信息通过电话、Email、传真等方式传递给我公司,我们将生成注册码传给用户,填入正确的注册码后,控件注册成功。
OpenGstCom m_nCom, m_nControllerID, m_nProtocol, Resevered,lResult;
m_nCom 串口标识变量的index;
m_nControllerID 电气火灾监控设备地址;
m_nProtocol 协议变量(即:电气火灾监控设备类型,数值如下);
200 表示GstDH9000中文通讯板
Resevered 保留参数(0);
LResult 返回状态(参见返回状态参数说明);
ResetController m_nControllerID, lResult;
m_nControllerID 电气火灾监控设备地址;
lResult 返回状态(参见返回状态参数说明);
MuteController m_nControllerID, lResult;
m_nControllerID 电气火灾监控设备地址;
lResult 返回状态(参见返回状态参数说明);
StartQuery m_nControllerID, nType,Reserved,lResult;
m_nControllerID 电气火灾监控设备地址;
nType 启动类型;(0 停止查询,2 启动查询)
Reserved 保留参数(0);
LResult 返回状态(参见返回状态参数说明);
CloseGstCom m_nControllerID,lResult;
m_nControllerID 电气火灾监控设备地址;
LResult 返回状态(参见返回状态参数说明);
返回状态参数说明如表1.
表1
返回参数 | 说明 |
LResult=0 (RET_Successfu)l | 命令执行成功 |
LResult=1 (RET_Busy) | 电气火灾监控设备忙 |
LResult =2 (RET_ParamInvalide) | 参数非法 |
LResult =3 (RET_ShakeHandFail) | 通讯握手失败 |
LResult =4 (RET_GstComError) | 命令执行内部错误 |
LResult =5 (RET_ReplyError) | 命令执行应答错误 |
LResult =6 (RET_ReplyTimeout) | 命令发送应答超时 |
LResult =10 (RET_Rs232Error) | 串口打开失败 |
LResult =255(RET_NotCommand) | 不支持此命令 |
UpLDDeviceCurrent nControllerID, nLoop, nAddress, lCurrent, pResult
m_nControllerID 电气火灾监控设备地址;
nLoop 回路号;
nAddress 一次码;
lCurrent 返回电流值;
lResult 返回状态(参见返回状态参数说明);
UpLDDeviceTemperature ControllerID, nLoop, nAddress, lCurrent, pResult
m_nControllerID 电气火灾监控设备地址;
nLoop 回路号;
nAddress 一次码;
lCurrent 返回温度值;
lResult 返回状态(参见返回状态参数说明);
GstCom_AlarmEvent(ByVal nControllerID As Long, ByVal nEventType As Long, ByVal
bstrDeviceID As String, ByVal Value As Long)
nControllerID 电气火灾监控设备地址;
nEventType 事件的类型;
bstrDeviceID 相关设备编码(设备二次码);
Value 对应事件类型的相关数据;
参数详细描述如表2。
表2
事件的类型 (nEventType) | 相关设备编码(bstrDeviceID) | 对应事件类型的相关数据(Value ) | 说明 |
AE_CommNormal (0) | --------- | ---------- | 消防系统正常,无报警、故障等信息 |
AE_CommRetryFault (2) | ---------- | --------- | 应答错误 |
AE_CommTimeout (1) | ------------ | ----------- | 超时错误 |
AE_ControllerReset(3) | ------------ | ------------ | 电气火灾监控设备消音复位 |
AE_ControllerStatus(4) | Value=状态代码:(H->L) bit7-自动 (1允许, 0不允许) bit6-手动 (1允许, 0不允许) bit5-喷洒 (1允许, 0不允许) 状态代码低四位值为: 1H 主电故障 2H 主电恢复 3H 备电故障 4H 备电恢复 5H 开机 例如: 67 表示 手动允许,备电故障 | 电气火灾监控设备消音状态置位 | |
AE_ControllerMute (5) | ------------ | ------------ | 电气火灾监控设备消音 |
AE_DeviceRestore (8) | 设备编码 | ------------ | 设备恢复 |
AE_DeviceAlarm (16) | 设备编码
| ------------ | 设备报警 |
AE_DeviceStart (32) | 设备编码 | ------------ | 设备启动 |
AE_DeviceStop (64) | 设备编码 | ------------ | 设备停止 |
AE_DeviceAction (128) | 设备编码 | ------------ | 设备动作 |
AE_DeviceFault (256) | 设备编码
| Value=1:一般故障 Value=2:设备损坏故障 Value=4: 停电故障Value=8: 传感器故障 | 设备故障 |
AE_DeviceIsolate (512) | 设备编码 | ---------- | 设备隔离 |
AE_DeviceRelease (1024) | 设备编码 | ---------- | 设备释放 |
l 在VB编程环境中引用GstCom控件;
l 在应用程序头部定义GstCom,如:Public WithEvents MyGstCom As GstComCtl;
l 在程序初始化阶段,创建GstCom对象,如:Set MyGstCom = New GstComCtl。
l 在应用程序的头文件中加入如下文件
#include "GstCom.h"
#include "GstComDefines.h"
#include "GstComEventSink.h"
l 在应用程序的代码文件中加入如下文件
#include "GstCom_i.c"
l 在应用程序中定义GstCom的引用及相关变量,
IGstComCtl *m_IGstComCtl;
CGstComEventSink* m_pGstComEventSink;
IUnknown* m_pControlUnk;
l 在应用程序中创建接口实例
HRESULT hr;
hr = CoInitialize(0);
hr = CoCreateInstance( CLSID_GstComCtl , NULL, CLSCTX_INPROC_SERVER,
IID_IGstComCtl, (void**) &m_IGstComCtl);
if (!SUCCEEDED(hr))
{
AfxMessageBox("CoCreateInstance Failed.");
return FALSE;
}
m_IGstComCtl->QueryInterface(IID_IGstComCtl, (void**)&m_pControlUnk);
m_pGstComEventSink = new CGstComEventSink();
if (m_pGstComEventSink)
hr = m_pGstComEventSink->DispEventAdvise(m_pControlUnk);
else
AfxMessageBox("Event Creater Failed.");
执行成功后应用程序就会得到GstCom的引用m_IGstComCtl。同时用户将报警事件处理代码添加到GstComEventSink.h文件的“用户代码”处
l 应用程序退出,断开连接释放资源:
m_pIRayRtdb->Release(); //一定要释放,否则退出时,会有内存泄露
m_pIUnknown->Release(); //一定要释放,否则退出时,会有内存泄露
if(m_pRtdbEventSink)
delete m_pRtdbEventSink;
CoUninitialize();
if (m_pGstComEventSink)
{
m_pGstComEventSink->DispEventUnadvise(m_pControlUnk);//断开事件
m_pControlUnk->Release(); //释放查询指针
delete m_pGstComEventSink;//删除事件接收对象
}
if (m_IGstComCtl)
m_IGstComCtl->Release();
l 在C#的“解决方案资源管理器中”引用GstCom.dll控件,在“引用”中可得到GSTCOMLIB库。
l 在应用程序头部定义GstCom,即:using GSTCOMLIB;
l 在程序初始化阶段,创建GstComCtl对象,即:
GstComCtl myGstComCtl=new GstComCtl();
myGstComCtl.OpenGstCom(m_nCom, m_nControllerID, m_nProtocol, 100, out hResult);
用于打开COM接口,在调用方法的时候传进参数的类型必须和要求的一致。
l 在应用程序中创建事件响应
处理COM 接口的事件时需要引入下列代码:
gstComCtl.AlarmEvent +=new
_IGstComCtlEvents_AlarmEventEventHandler(gstComCtl_AlarmEvent);
创建时间处理方法gstComCtl_AlarmEvent,如:
private void gstComCtl_AlarmEvent(byte nCom, int nControllerID, int nEventType, string bstrDeviceID, int Value)
{
//用户代码
}
l 在Delphi的引用GstCom.dll控件,得到GStCOMLib_TLB库。即:注册GstCom.dll—>打开Delphi7—>component—>Impot ActiveX Contrl—>选择GstCom1.0 Type Library—>createUnit。得到GStCOMLib_TLB;
l 在应用程序头部使用GStCOMLib_TLB、,即:uses GStCOMLib_TLB,ComObj;
l 在程序初始化阶段,创建GstComCtl对象,即:
var
GstComCtl : IGstComCtl;
GstComCtl:=CreateComObject(CLASS_GstComCtl) as IGstComCtl;