⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zrsmsdk.h

📁 周立功4050模块的测试软件
💻 H
字号:
#ifndef __ZRSMSDK_H
#define __ZRSMSDK_H

/************************************************************************
主设备属性段的名称定义                                                                    
************************************************************************/
#define DEVICE_MANFT        "DEVICE_MANFT"          //厂商代号
#define DEVICE_TYPE         "DEVICE_TYPE"           //设备类型
#define DEVICE_MODE         "DEVICE_MODE"           //设备型号
#define DEVICE_HARDVER      "DEVICE_HARDVER"        //设备硬件版本号
#define DEVICE_SOFTVER      "DEVICE_SOFTVER"        //设备软件版本号
#define DEVICE_SNCODE       "DEVICE_SNCODE"         //设备SN

#define DEVICE_NAME         "DEVICE_NAME"           //设备名称
#define DEVICE_PASS         "DEVICE_PASS"           //设备密码

#define DEVICE_ID           "DEVICE_ID"             //设备ID
#define DEVICE_MODBUS_OP    "DEVICE_MODBUS_OP"      //串口modbus协议rtu ascii
#define DEVICE_BAUD         "DEVICE_BAUD"           //通讯波特率
#define DEVICE_DATA_B       "DEVICE_DATA_B"         //通讯数据位
#define DEVICE_STOP_B       "DEVICE_STOP_B"         //通讯停止位
#define DEVICE_PARITY       "DEVICE_PARITY"         //通讯校验位

#define DEVICE_CHECK_ENABLE	"DEVICE_CHECK_ENABLE"      //CUSTOM-ASCII模式下“校验和”使能
#define DEVICE_REBOOT_COUNT "DEVICE_REBOOT_COUNT"      //设备复位次数

// 特殊配置项,仅部分模块支持,如RSM-4017
#define CFG_AI_FORMAT	    "CFG_AI_FORMAT"        //CUSTOM-ASCII模式下AI单位

/************************************************************************
子设备数据采集段的名称定义
有后缀"d"的表示有多个,为:0...n个
如:IO_DOUT_0,IO_DOUT_1分别表示数字输出通道0数据,和通道1数据
没有后缀的表示单个,
如:IO_AOUT_SYNC表示同步输出控制数据
************************************************************************/
#define IO_AI_d             "IO_AI_"            //模拟输入数据_d

#define IO_AO_d             "IO_AO_"            //模拟输出数据_d
#define IO_AO_VOLTAGE_d     "IO_AO_VOLTAGE_"	//模拟输出电压
#define IO_AO_ELECTRIC_d    "IO_AO_ELECTRIC_"	//模拟输出电流

#define IO_DI_d             "IO_DI_"            //数字输入数据_d

#define IO_DO_d             "IO_DO_"          //数字输出数据_d

#define	IO_COUNT_d          "IO_COUNT_"         //计数器当前值_d

#define IO_DI_COUNT_d       "IO_DI_COUNT_"      //数字输入计数数据_d

/************************************************************************
设备配置信息属性段的名称定义
有后缀"_d"的表示有多个,为:0...n个
如:CFG_DOUT_MODE_0,IO_DOUT_MODE_1分别表示数字输出通道0和1的输出类型
没有后缀的表示单个,
如:IO_AOUT_SYNC表示同步输出控制数据
************************************************************************/
#define CFG_AI_TYPE_d           "CFG_AI_TYPE_"          //模拟输出类型_d
#define CFG_AI_MAX_d            "CFG_AI_MAX_"           //报警上限_d
#define CFG_AI_MIN_d            "CFG_AI_MIN_"           //报警下限_d 
#define CFG_AI_ENABLE_d         "CFG_AI_ENABLE_"        //模拟输入是否工作
#define CFG_AI_MAX_EX_ON_d      "CFG_AI_MAX_EX_ON_"     //模拟输入超上限是否工作
#define CFG_AI_MIN_EX_ON_d      "CFG_AI_MIN_EX_ON_"     //模拟输入超上限是否工作

#define CFG_AO_SLOPE_d          "CFG_AO_SLOPE_"         //模拟输出通道输出斜率
#define CFG_AO_OUT_MODE_d       "CFG_AO_OUT_MODE_"      //模拟输出通道输出类型
#define CFG_AO_OUT_ENABLE_d     "CFG_AO_OUT_ENABLE_"    //模拟输出通道控制
#define CFG_AO_INIT_SAFE_VAL_d  "CFG_AO_INIT_SAFE_VAL_" //模拟输出通道安全启动值
#define CFG_AO_MATCH_OUT_VAL_d  "CFG_AO_MATCH_OUT_"     //模拟输出通道紧急输出值
#define CFG_AO_SYN_OUT_VAL_d    "CFG_AO_SYN_OUT_VAL_"   //模拟输出通道同步输出值
#define CFG_AO_SYN_ENABLE_d     "CFG_AO_SYN_ENABLE_"    //模拟输出通道同步使能
#define CFG_AO_4MA_ADJUST_d     "CFG_AO_4MA_ADJUST_"    //模拟输出通道4mA校正参数
#define CFG_AO_20MA_ADJUST_d    "CFG_AO_20MA_ADJUST_"   //模拟输出通道20mA校正参数
#define CFG_AO_SEQUENCE_CTL     "CFG_AO_SEQUENCE_CTL"   //模拟输出通道顺序输出使能控制
#define CFG_AO_SEQUENCE_TIMES   "CFG_AO_SEQUENCE_TIMES" //模拟输出通道顺序输出循环次数
#define CFG_AO_OUT_DELAY_d      "CFG_AO_OUT_DELAY_"     //模拟输出通道输出间隔延时
#define CFG_AO_OUT_START_VAL_d  "CFG_AO_OUT_START_VAL_" //模拟输出通道顺序输出通道起始输出值
#define CFG_AO_OUT_END_VAL_d    "CFG_AO_OUT_END_VAL_"   //模拟输出通道顺序输出通道停止输出值
#define CFG_AO_CHNL_SEQUENCE_d  "CFG_AO_CHNL_SEQUENCE_" //模拟输出通道顺序
#define CFG_AO_OUT_ROTATE_d     "CFG_AO_OUT_ROTATE_"    //模拟输出通道循环翻转使能
#define CFG_AO_SYN_OUT_ENABLE   "CFG_AO_SYN_OUT_ENABLE" //模拟输出通道同步输出使能

#define CFG_DO_SCAN             "CFG_DO_SCAN"           //数字输出的时间间隔
#define CFG_DO_MODE_d           "CFG_DO_MODE_"          //数字输出工作模式(关闭或打开)_d
#define CFG_DO_DEFAULT_d        "CFG_DO_DEFAULT_"       //数字输出安全值_d
#define CFG_DO_SHIELD_d         "CFG_DO_SHIELD_"        //数字输出屏蔽_d
#define CFG_DO_SHIELD_PARA_d    "CFG_DO_SHIELD_PARA_"   //数字输出屏蔽参数_d
#define CFG_DO_EX_HIGLOW_d      "CFG_DO_EX_HIGLOW_"     //当输入超限时,输出为高电平或是为低电平
#define CFG_DO_TRIG_OUT_d       "CFG_DO_TRIG_OUT_LEVEL_"// DO端口触发输出电平

#define CFG_DI_TRIG_ENABLE      "CFG_DI_TRIG_ENABLE"    //DI同步触发使能
#define CFG_DI_IN_MODE_d        "CFG_DI_MODE_"          //数字输入类型
#define CFG_DI_SYN_MATCH_VAL_d  "CFG_DI_TRIG_MATCH_"    //DI端口触发匹配电平

#define CFG_DI_EVENT_CTL_d      "CFG_DI_EVENT_CTL_"     //数字输入事件控制_d
#define CFG_DI_EVENT_COUNT_d    "CFG_DI_EVENT_COUNT_"   //数字输入计数_d

//发送广播搜索命令
long __stdcall ZR_EthSearchAll();			

//往指定的IP地址发送搜索命令						
long __stdcall ZR_EthSearchByIP(char* szIP);						

//接收设备对搜索命令的响应
long __stdcall ZR_EthGetSearchDev(	char	*szIP,
									char	*pszMAC,
									int		*pnFrimVer,
									int		*pnDevType,
									int		*pnDveMode,
									int		*pnIPMode,
									int		*pnCmdPort);

//指定ID进行搜索
long __stdcall ZR_RSSearchByID(	int		iID,
								int		iRtuAscii,
								char	*szCom,
  			   					int		iBautRate,
								int		iByteSize ,
								int		iParity, 
								int		iStopBits,
								int		iDtrCtl ,
								int		iRtsCtl,
								int		iCtsCtl,
								int		iDsrCtl,
								int		iResponse	);

//接收对搜索命令的响应
long __stdcall ZR_RSGetSearch(	BYTE	*pnID,
								int		*pnManuFact, 
								int		*pnDevType, 
								int		*pnDevMode, 
								int		*pnHardVer, 
								int		*pnSoftVer,
								BYTE	*pSn);


//设置要操作的设备
HANDLE __stdcall ZR_EthSetOperateDev(	char *szIp,
										char *szMACaddr,
										int nType,
										int nMode);

//设置要操作的设备
HANDLE __stdcall ZR_RSSetOperateDev(	int		iID,
										int		nType,
										int		nMode,
										int		iRtuAscii,
										char	*szCom,
  			   							int		iBautRate,
										int		iByteSize,
										int		iParity, 
										int		iStopBits,
										int		iDtrCtl,
										int		iRtsCtl,
										int		iCtsCtl,
										int		iDsrCtl,
										int		iResponse);

void __stdcall ZR_UnOperateDev(HANDLE hDev);

long __stdcall ZR_LoginDev(HANDLE hDev,	char* szPwd);

long __stdcall ZR_RebootDev(HANDLE hDev);


//读取主设备配置信息
long __stdcall ZR_ReadDevProperty(HANDLE hDev);

//获取主设备配置信息
long __stdcall ZR_GetDevProperty(	HANDLE   hDev, 
									char     *szPropertyName, 
									char     *szPropertyData);

//清空修改的配置,在配置前调用
long  __stdcall ZR_ResetDevProperty(HANDLE hDev);

//设置主模块的某个属性值
long __stdcall ZR_ModifyDevProperty(	HANDLE  hDev, 
										char	*szPropertyName, 
										char    *szPropertyData);

//提交修改
long __stdcall ZR_SubmitDevProperty(HANDLE hDev, char *szPWD);

//读取子模块采集到的数据
long __stdcall ZR_ReadDevData(	HANDLE 	hDev );



//获取子模块的具体某个属性
long __stdcall ZR_GetDevData(	HANDLE 	hDev, 
									char     *szDataName, 
									char     *szDataData);

//重设置子模块要修改的属性,用于修改前
long __stdcall ZR_ResetDevData(HANDLE hDev);

//修改子模块的采集数据,输出模块
long __stdcall ZR_ModifyDevData(	HANDLE 	hDev,
									char 	*szDataName,
									char	*szDataData);

//提交更改
long __stdcall ZR_SubmitDevData(HANDLE hMain);


//下面四个函数在读取中会把返回的协议头去掉
//返回值有所不同
//协议式的,0表示成功,否则为错误码
long __stdcall	ZR_ReadPropByAddr(HANDLE hDev, WORD wAddr, WORD wLen, BYTE* pBuf, DWORD *pReadedLen);
long __stdcall	ZR_WritePropByAddr(HANDLE hDev, WORD wAddr, WORD wLen, BYTE* pBuf);
long __stdcall	ZR_ReadDataByAddr(HANDLE hDev, WORD wAddr, WORD wLen, BYTE* pBuf, DWORD *pReadedLen);
long __stdcall	ZR_WriteDataByAddr(HANDLE hDev, WORD wAddr, WORD wLen, BYTE* pBuf);

//下面这组函数没有把协议的头去掉
//返回值有所不同
//返回的是读或写的字节计数
long __stdcall ZR_SendCmd(HANDLE hDev, BYTE* pBuf, WORD wLen, int iAddCheck=0);
long __stdcall ZR_ReadBuf(HANDLE hDev, BYTE* pBuf, WORD wLen);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -