65,201
社区成员




#ifndef _RTUAPI_H
#define _RTUAPI_H
#include <list>
#include <string>
using std::list;
using std::string;
//=================================================================================================================================
typedef unsigned long long u64; //uint8
typedef long long s64; //sint8
typedef unsigned int u32; //uint4
typedef int s32; //sint4
typedef unsigned short u16; //uint2
typedef short s16; //sint2
typedef unsigned char u8; //uint1
typedef char s8; //sint1
/*************************
功能:获取注册信息
strSIM:手机号
strIMEI:无线模块编号
strVer:程序版本号
strModule:模块型号
*************************/
typedef struct _logonInfo
{
CString strSIM;
CString strIMEI;
CString strVer;
CString strModule;
}LogonInfo;
#include "stdafx.h"
#include "CommStruts.h"
#include <windows.h>
#include "RtuApi.h"
int _tmain(int argc, _TCHAR* argv[])
{
//2 调用 rtu的 dll文件
HINSTANCE hInstance2 = LoadLibrary(_T("RtuApi.dll"));
// 定义显示学生信息的方法
if (hInstance2!=NULL)
{
//定义函数指针
typedef int (* Rtu_StopServer)(void );
// 取得DLL中先生学生信息的方法,并映射成本地的方法
Rtu_StopServer rtu_StopServer = (Rtu_StopServer)GetProcAddress(hInstance2, "Rtu_StopServer");
// 创建学生信息
if (!rtu_StopServer)
{
printf("get address fail\n");
return 0;
}
else
{
printf("get address sucess\n");
}
if (rtu_StopServer()>=0)
{
printf("sucess\n ");
}
}
return 0;
}
#ifndef _RTUAPI_H
#define _RTUAPI_H
#include <list>
#include <string>
using std::list;
using std::string;
//=================================================================================================================================
typedef unsigned long long u64; //uint8
typedef long long s64; //sint8
typedef unsigned int u32; //uint4
typedef int s32; //sint4
typedef unsigned short u16; //uint2
typedef short s16; //sint2
typedef unsigned char u8; //uint1
typedef char s8; //sint1
/*************************
功能:获取注册信息
strSIM:手机号
strIMEI:无线模块编号
strVer:程序版本号
strModule:模块型号
*************************/
typedef struct _logonInfo
{
CString strSIM;
CString strIMEI;
CString strVer;
CString strModule;
}LogonInfo;
/*************************
功能:数字输出
state:数字输出的接口状态 (取值:1-高电平 2-低电平3-方波)
cycle:周期 (毫秒 0-65535)
*************************/
typedef struct _digital_out_
{
int state;
int cycle;
}DIGITAL_OUT;
/*************************
功能:PWM输出
cycle:周期 (毫秒 0-65535) 字节数 - 2
duty: 频率 (毫秒 0-100 ) 字节数 - 2
*************************/
typedef struct _pwm_
{
int cycle; //65535
int duty; //0 - 100
}PWM;
/*************************
功能:计数器
val:计数当前值 字节数 - 8
*************************/
typedef struct _counter_
{
__int64 val;
}COUNTER;
/*************************
功能:
val:
*************************/
typedef struct _common_
{
int val;
}COMMON;
/*************************
功能:接口
digitalOut:数字输出
pwm:PWM输出
counter:计数器
common:
*************************/
typedef union _interface_value_
{
DIGITAL_OUT digitalOut;
PWM pwm;
COUNTER counter;
COMMON common;
}INTERFACE_VAL;
/*************************
功能:RDV格式接口
type: 接口类型 用于指定是哪种接口 (1-数字输出 2-继电器 3-数字输入 4-PWM 5-AD 6-计数器)
number: 接口编号 用于指定该接口的第几路 (数字输出:0-3 继电器:0-3 数字输入:0-7 PWM:0-1 AD:0-7 计数器:0-5)
valueUnit: 该接口当前的状态值
*************************/
typedef struct _interface_rdv_
{
int type;
int number;
INTERFACE_VAL valueUnit;
}INTERFACE_RDV;
/*************************
功能:ctl格式接口
type: 接口类型 用于指定是哪种接口 (1-数字输出 2-继电器 3-数字输入 4-PWM 5-AD 6-计数器)
number: 接口编号 用于指定该接口的第几路 (数字输出:0-3 继电器:0-3 数字输入:0-7 PWM:0-1 AD:0-7 计数器:0-5)
val: 该接口当前的状态值
*************************/
typedef struct _interface_ctl_
{
int type;
int number;
int val;
}INTERFACE_CTL;
/*************************
功能:类型
STRINGTYPE:字符串
INTTYPE: 整型
*************************/
enum ValueType
{
STRINGTYPE,
INTTYPE,
};
typedef struct _config_item_
{
int id;
ValueType type;
int intVal;
CString strVal;
}CONFIG_ITEM;
/*************************
功能:报警接口
type:接口类型
number: 接口编号
strAlarm:字段
*************************/
typedef struct _interface_alarm_
{
int type;
int number;
string strAlarm;
}INTERFACE_ALARM;
//设备上下线回调
/*@pThiz: 回调对象*/
/*@devAddr: 设备地址*/
/*@bLogon: 1是上线 0是下线*/
/*@info: 注册信息*/
typedef void (WINAPI *RtuLogonCallBack) (const void *pThiz, const u32 devAddr,const u8 bLogon, const LogonInfo info);
//接口状态获取的回调
/*@pThiz: 回调对象*/
/*@devAddr: 设备地址*/
/*@nRequestID: 通信包标识号*/
/*@nResult: >=0则表示成功,否则失败*/
/*@pList: 接口状态链表(具体格式参照协议)*/
typedef void (WINAPI *RtuInterfaceGetCallBack)(const void *pThiz, const u32 devAddr, const u32 nRequestID, const s32 nResult,
const list<INTERFACE_RDV> *pList);
//接口设置的回调
/*@pFailedList: 返回设置失败的链表(具体格式参照协议)*/
typedef void (WINAPI *RtuInterfaceSetCallBack)(const void *pThiz, const u32 devAddr, const u32 nRequestID, const s32 nResult,
const list<INTERFACE_CTL> *pFailedList);
//配置获取的回调
/*@pList: 配置参数的链表(具体格式参照协议)*/
typedef void (WINAPI *RtuConfigGetCallBack)(const void *pThiz, const u32 devAddr, const u32 nRequestID, const s32 nResult,
const list<CONFIG_ITEM> *pList);
//配置设置的回调
/*@pFailedList: 返回设置失败的链表(具体格式参照协议)*/
typedef void (WINAPI *RtuConfigSetCallBack)(const void *pThiz, const u32 devAddr, const u32 nRequestID, const s32 nResult,
const list<CONFIG_ITEM> *pFailedList);
//gps重启的回调
typedef void (WINAPI *RtuGpsRebootCallBack)(const void *pThiz, const u32 devAddr, const u32 nRequestID, const s32 nResult);
//接口状态主动上报的回调: @pList 接口状态链表(具体格式参照协议)
typedef void (WINAPI *RtuInterfaceReport)(const void *pThiz, const u32 devAddr, const list<INTERFACE_RDV> *pList);
//接口报警主动上报的回调: @pList 接口报警链表(具体格式参照协议)
typedef void (WINAPI *RtuInterfaceAlarm)(const void *pThiz, const u32 devAddr, const list<INTERFACE_ALARM> *pList);
//短信报警主动上报的回调: @strAlarm 报警内容
typedef void (WINAPI *RtuSmsAlarm)(const void *pThiz, const u32 devAddr, const CString &strAlarm);
//=================================================================================================================================
extern "C"
{
//启动服务器:@Port 端口号;@fun 上下线回调函数; @pThiz 回调对象;@handle1 接口状态主动上报回调函数;@handle2 接口状态报警回调函数;@handle3 短信报警回调函数 ;
//返回值>0表示调用成功,否则失败
s32 WINAPI Rtu_StartServer(u16 Port, RtuLogonCallBack fun, void *pThiz, RtuInterfaceReport handle1=0, RtuInterfaceAlarm handle2=0, RtuSmsAlarm handle3=0);
//停止服务器
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_StopServer();
//设置超时参数(单位 秒):@PackTimeOut 通信包超时时间;@ConnectTimeOut 心跳超时时间;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_SetServerParam(u16 PackTimeOut, u16 ConnectTimeOut);
//获取接口状态:@devAddr 设备地址;@fun 回调函数;@pThiz 回调对象;@RequestID 通信包标识号;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_InterfaceGet(u32 devAddr, RtuInterfaceGetCallBack fun, void *pThiz, u32 &RequestID);
//设置接口状态:@devAddr 设备地址;@fun 回调函数;@pThiz 回调对象;@RequestID 通信包标识号;@pList 要设置的接口状态列表;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_InterfaceSet(u32 devAddr, RtuInterfaceSetCallBack fun, void *pThiz, u32 &RequestID, const list<INTERFACE_CTL> *pList);
//获取配置参数:@devAddr 设备地址;@fun 回调函数;@pThiz 回调对象;@RequestID 通信包标识号;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_ConfigGet(u32 devAddr, RtuConfigGetCallBack fun, void *pThiz, u32 &RequestID);
//设置接口状态:@devAddr 设备地址;@fun 回调函数;@pThiz 回调对象;@RequestID 通信包标识号;@pList 要设置的配置参数列表;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_ConfigSet(u32 devAddr, RtuConfigSetCallBack fun, void *pThiz, u32 &RequestID, const list<CONFIG_ITEM> *pList);
//Gps重启:@devAddr 设备地址;@fun 回调函数;@pThiz 回调对象;@RequestID 通信包标识号;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_GpsReboot(u32 devAddr, RtuGpsRebootCallBack fun, void *pThiz, u32 &RequestID);
};
#endif
#ifndef _RTUAPI_H
#define _RTUAPI_H
#include <list>
#include <string>
using std::list;
using std::string;
//=================================================================================================================================
typedef unsigned long long u64; //uint8
typedef long long s64; //sint8
typedef unsigned int u32; //uint4
typedef int s32; //sint4
typedef unsigned short u16; //uint2
typedef short s16; //sint2
typedef unsigned char u8; //uint1
typedef char s8; //sint1
/*************************
功能:获取注册信息
strSIM:手机号
strIMEI:无线模块编号
strVer:程序版本号
strModule:模块型号
*************************/
typedef struct _logonInfo
{
CString strSIM;
CString strIMEI;
CString strVer;
CString strModule;
}LogonInfo;
/*************************
功能:数字输出
state:数字输出的接口状态 (取值:1-高电平 2-低电平3-方波)
cycle:周期 (毫秒 0-65535)
*************************/
typedef struct _digital_out_
{
int state;
int cycle;
}DIGITAL_OUT;
/*************************
功能:PWM输出
cycle:周期 (毫秒 0-65535) 字节数 - 2
duty: 频率 (毫秒 0-100 ) 字节数 - 2
*************************/
typedef struct _pwm_
{
int cycle; //65535
int duty; //0 - 100
}PWM;
/*************************
功能:计数器
val:计数当前值 字节数 - 8
*************************/
typedef struct _counter_
{
__int64 val;
}COUNTER;
/*************************
功能:
val:
*************************/
typedef struct _common_
{
int val;
}COMMON;
/*************************
功能:接口
digitalOut:数字输出
pwm:PWM输出
counter:计数器
common:
*************************/
typedef union _interface_value_
{
DIGITAL_OUT digitalOut;
PWM pwm;
COUNTER counter;
COMMON common;
}INTERFACE_VAL;
/*************************
功能:RDV格式接口
type: 接口类型 用于指定是哪种接口 (1-数字输出 2-继电器 3-数字输入 4-PWM 5-AD 6-计数器)
number: 接口编号 用于指定该接口的第几路 (数字输出:0-3 继电器:0-3 数字输入:0-7 PWM:0-1 AD:0-7 计数器:0-5)
valueUnit: 该接口当前的状态值
*************************/
typedef struct _interface_rdv_
{
int type;
int number;
INTERFACE_VAL valueUnit;
}INTERFACE_RDV;
/*************************
功能:ctl格式接口
type: 接口类型 用于指定是哪种接口 (1-数字输出 2-继电器 3-数字输入 4-PWM 5-AD 6-计数器)
number: 接口编号 用于指定该接口的第几路 (数字输出:0-3 继电器:0-3 数字输入:0-7 PWM:0-1 AD:0-7 计数器:0-5)
val: 该接口当前的状态值
*************************/
typedef struct _interface_ctl_
{
int type;
int number;
int val;
}INTERFACE_CTL;
/*************************
功能:类型
STRINGTYPE:字符串
INTTYPE: 整型
*************************/
enum ValueType
{
STRINGTYPE,
INTTYPE,
};
typedef struct _config_item_
{
int id;
ValueType type;
int intVal;
CString strVal;
}CONFIG_ITEM;
/*************************
功能:报警接口
type:接口类型
number: 接口编号
strAlarm:字段
*************************/
typedef struct _interface_alarm_
{
int type;
int number;
string strAlarm;
}INTERFACE_ALARM;
//设备上下线回调
/*@pThiz: 回调对象*/
/*@devAddr: 设备地址*/
/*@bLogon: 1是上线 0是下线*/
/*@info: 注册信息*/
typedef void (WINAPI *RtuLogonCallBack) (const void *pThiz, const u32 devAddr,const u8 bLogon, const LogonInfo info);
//接口状态获取的回调
/*@pThiz: 回调对象*/
/*@devAddr: 设备地址*/
/*@nRequestID: 通信包标识号*/
/*@nResult: >=0则表示成功,否则失败*/
/*@pList: 接口状态链表(具体格式参照协议)*/
typedef void (WINAPI *RtuInterfaceGetCallBack)(const void *pThiz, const u32 devAddr, const u32 nRequestID, const s32 nResult,
const list<INTERFACE_RDV> *pList);
//接口设置的回调
/*@pFailedList: 返回设置失败的链表(具体格式参照协议)*/
typedef void (WINAPI *RtuInterfaceSetCallBack)(const void *pThiz, const u32 devAddr, const u32 nRequestID, const s32 nResult,
const list<INTERFACE_CTL> *pFailedList);
//配置获取的回调
/*@pList: 配置参数的链表(具体格式参照协议)*/
typedef void (WINAPI *RtuConfigGetCallBack)(const void *pThiz, const u32 devAddr, const u32 nRequestID, const s32 nResult,
const list<CONFIG_ITEM> *pList);
//配置设置的回调
/*@pFailedList: 返回设置失败的链表(具体格式参照协议)*/
typedef void (WINAPI *RtuConfigSetCallBack)(const void *pThiz, const u32 devAddr, const u32 nRequestID, const s32 nResult,
const list<CONFIG_ITEM> *pFailedList);
//gps重启的回调
typedef void (WINAPI *RtuGpsRebootCallBack)(const void *pThiz, const u32 devAddr, const u32 nRequestID, const s32 nResult);
//接口状态主动上报的回调: @pList 接口状态链表(具体格式参照协议)
typedef void (WINAPI *RtuInterfaceReport)(const void *pThiz, const u32 devAddr, const list<INTERFACE_RDV> *pList);
//接口报警主动上报的回调: @pList 接口报警链表(具体格式参照协议)
typedef void (WINAPI *RtuInterfaceAlarm)(const void *pThiz, const u32 devAddr, const list<INTERFACE_ALARM> *pList);
//短信报警主动上报的回调: @strAlarm 报警内容
typedef void (WINAPI *RtuSmsAlarm)(const void *pThiz, const u32 devAddr, const CString &strAlarm);
//=================================================================================================================================
extern "C"
{
//启动服务器:@Port 端口号;@fun 上下线回调函数; @pThiz 回调对象;@handle1 接口状态主动上报回调函数;@handle2 接口状态报警回调函数;@handle3 短信报警回调函数 ;
//返回值>0表示调用成功,否则失败
s32 WINAPI Rtu_StartServer(u16 Port, RtuLogonCallBack fun, void *pThiz, RtuInterfaceReport handle1=0, RtuInterfaceAlarm handle2=0, RtuSmsAlarm handle3=0);
//停止服务器
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_StopServer();
//设置超时参数(单位 秒):@PackTimeOut 通信包超时时间;@ConnectTimeOut 心跳超时时间;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_SetServerParam(u16 PackTimeOut, u16 ConnectTimeOut);
//获取接口状态:@devAddr 设备地址;@fun 回调函数;@pThiz 回调对象;@RequestID 通信包标识号;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_InterfaceGet(u32 devAddr, RtuInterfaceGetCallBack fun, void *pThiz, u32 &RequestID);
//设置接口状态:@devAddr 设备地址;@fun 回调函数;@pThiz 回调对象;@RequestID 通信包标识号;@pList 要设置的接口状态列表;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_InterfaceSet(u32 devAddr, RtuInterfaceSetCallBack fun, void *pThiz, u32 &RequestID, const list<INTERFACE_CTL> *pList);
//获取配置参数:@devAddr 设备地址;@fun 回调函数;@pThiz 回调对象;@RequestID 通信包标识号;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_ConfigGet(u32 devAddr, RtuConfigGetCallBack fun, void *pThiz, u32 &RequestID);
//设置接口状态:@devAddr 设备地址;@fun 回调函数;@pThiz 回调对象;@RequestID 通信包标识号;@pList 要设置的配置参数列表;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_ConfigSet(u32 devAddr, RtuConfigSetCallBack fun, void *pThiz, u32 &RequestID, const list<CONFIG_ITEM> *pList);
//Gps重启:@devAddr 设备地址;@fun 回调函数;@pThiz 回调对象;@RequestID 通信包标识号;
//返回值>=0表示调用成功,否则失败
s32 WINAPI Rtu_GpsReboot(u32 devAddr, RtuGpsRebootCallBack fun, void *pThiz, u32 &RequestID);
};
#endif