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

📄 devdef.h

📁 国家环保总局污染源在线通讯协议的简化版
💻 H
字号:
// Devdef.h
///	无属性页设备驱动模版

///	对于数据类型的定义,有所更改,在此作特作声明如下:
///	以前对于为操作和数据类型用两个属性来表达,现在统一改成
///	用一个属性(数据类型)来表达。但这个值小于80时表示位,
///	当这个值大于等于80时表达数据类型,
///	此时类型值和类型的对应关系如下:
///	80:无符号8位二进制数。
///	81:有符号8位二进制数。
///	82:8位BCD码。
///	83:无符号16位二进制数。
///	84:有符号16位二进制数。
///	85:16位BCD码。
///	86:无符号32位二进制数。
///	87:有符号32位二进制数。
///	88:32位BCD码。
///	89:32位浮点数。
///	100:ASCII表示的浮点数。	

#include "afxtempl.h"

///	DEV驱动程序中用到的属性常量定义

///	帮助ID
const DWORD		DEV_DWORD_HELPID				= 2102072502;
///	帮助文件名
const CString	DEV_STR_HELPFILENAME			= _T("SWA2000");
///	设备名称,即组态搜索设备时显示的名称	
const CString	DEV_STR_NAME					= _T("南京3C");
///	模拟环境调用的驱动名
const CString	DEV_STR_DLLNAMEMU				= _T("SWA2000U.drv");
///	CE运行环境调用的驱动名
const CString	DEV_STR_DLLNAMECE				= _T("SWA2000E.drv");
///	固定字符串,串口通讯设备的固有通道
const CString	DEV_STR_COMMUNICATEFLAG			= _T("通讯状态");
///	固定字符串,MCGS的写通道命令
const CString	DEV_STR_MCGSWRITE				= _T("MCGS_WRITE");
///	MCGS的写设备命令,建议用相同的命令头
const CString	DEV_STR_WRITE					= _T("WRITE");
///	MCGS的读设备命令,建议用相同的命令头
const CString	DEV_STR_READ					= _T("READ");
///	MCGS的设置设备命令,建议用相同的命令头
const CString	DEV_STR_SETINI					= _T("SETINI");
///附加功能设备命令 
const CString	DEV_STR_SETHIDDENPRO	= _T("SetHiddenPro");
const CString	DEV_STR_GETHIDDENPRO	= _T("GetHiddenPro");
///	MCGS的发送历史数据设备命令,建议用相同的命令头
const CString	DEV_STR_SENDMEASDATA			= _T("SENDMEASDATA");
///	MCGS的执行9012设备命令,建议用相同的命令头
const CString	DEV_STR_EXERTN					= _T("EXERTN");
///	十六进制属性值的引导字符
const CString	DEV_STR_PROPERTYHEAD0X			= _T("0X");

const CString	DEV_STR_BITFORMAT				= _T("%.1x");

/// 保存设备信息用的自定义结构,设备编写者在设备初始化中分配,
///	在设备退出时释放,并负责把MCGS_DATA中的对应指针复位为NULL
struct DEV_DATA
{ 
	/// 设备属性数组,每一个元素对应基本属性页中的一个属性
	///	如果是数值型的属性,则这里保存的是属性的值,如果是
	///	具有下拉框的属性则这里保存的是被选中的下拉框索引。
	CArray<int, int> nArProperty;
	///访问密码
	CString strPW;
	///设备标识
	CString strMN;
	CString strST;
	
	///上次上传实时数据时间
	DWORD dwTime;
	///实时数据上传间隔 , 单位秒,登陆时间间隔
	int nRtdInterval;

	///上次发送失败分钟数据
	CString strError;
	DWORD dwErrorTime;
	bool bError;
	int nTimes;
	//////////驱动日志功能所用/////////////////////////////
	BOOL bLog;//日志功能标志,1为开启,0为默认不开启
	DWORD dwLogN;//写日志行数
	CString strLog;//日志字符串
};

///	基本属性常量定义开始

///	基本属性页中自定义属性的数量数量。
///	如果更改基本属性数量请修改这个常量的值。
const DWORD		DEV_DWORD_PROPERTYNUM			= 2;

///	基本属性索引枚举,可用他代替数值索引访问属性数组。
///	如果更改基本属性请修改这个结构,枚举值必须从0开始依次递增。
///	总数量应与属性数量相等。
enum	DEV_ENUM_PROPERTYNAME
{
	DEV_PRO_DELAYTIME = 0,
	DEV_PRO_NUM = 1,
};

///	基本属性初始值数组,元素数量与属性数量相同,
///	如过某个属性有下拉列表则其初值为0。
///	如果更改基本属性请修改这个结构,总数量应与属性数量相等。
const DWORD		DEV_DWORD_PROPERTYINITVALUE[]	= 
{ 
	200,
	3,
};

///	基本属性名称数组,元素数量与属性数量相同。
///	如果更改基本属性请修改这个结构,总数量应与属性数量相等。
const CString	DEV_STR_PROPERTYNAME[]			= 
{	
	{_T("通讯等待时间")},
	{_T("监测因子量")},
};

///	属性下拉列表中元素数量数组,元素数量与属性数量相同,
///	其值是对应属性的下拉列表所具有下拉项的数量。
///	值为0表示该属性没有下拉列表
///	如果更改基本属性请修改这个结构,总数量应与属性数量相等。
const DWORD		DEV_DWORD_PROPERTYLISTNUM[]		= 
{ 	
	0,
	0,
};

///	属性下拉列表中元素数组,元素数量与属性下拉列表中元素数量数组中所有值的和相同,
///	这里的值将被按照顺序添加到属性的下拉列表中
const CString	DEV_STR_PROPERTLIST[]			= 
{ 
	{_T("0 - 不求校验")}, 
	{_T("1 - 求校验")},
};

///	基本属性常量定义结束

/// 协议字符串数据类型枚举,用于发送接受协议,以及字符串的函数参数传递过程。
enum DEV_PROTOCOLTYPE 
{
	DEV_PROTOCOL_ASII = 0,
	DEV_PROTOCOL_HEX = 1,
};

/// 通讯读操作的返回方式枚举。
enum DEV_COMMSTOPTYPE 
{
	DEV_COMM_WAITFORCHAR = 0,
	DEV_COMM_WAITFORLEN = 1,
	DEV_COMM_SLEEP = 2,
	DEV_COMM_WAITFORCORL = 3,
};

/// 读写标志枚举
enum DEV_RWFLAG 
{
	DEV_RWFLAG_READ = 0,
	DEV_RWFLAG_WRITE = 1,
	DEV_RWFLAG_RW = 2,
};

/// 校验方向枚举
enum DEV_CHECKDIR 
{
	DEV_CHECK_OUT = 0,
	DEV_CHECK_IN = 1,
};

// 驱动程序中用到的常量定义
/////
const CString	DEV_STR_SECTION 				= _T("[PARASET]");
///密码
const CString	DEV_STR_ITEMPW 					= _T("PassWord");
///实时上传时间间隔
const CString	DEV_STR_ITEMRT 					= _T("LogTime");
///设备号
const CString	DEV_STR_ITEMMN 					= _T("MN");
///组对象
const CString	DEV_STR_ITEMOBJ 				= _T("ObjName");

///默认实时数据上传间隔, 单位秒
const LONG	DEV_LONG_RTDINTERVAL				= 30;

const CString	DEV_STR_PW						= _T("PW=123456");
const CString	DEV_STR_ST						= _T("ST=32");
const DWORD		DEV_DWORD_BITS                  = 7;



const DWORD		DEV_DWORD_FIXCHLNUM				= 3;
const CString	DEV_STR_FIXCHLNAME[]			=
{
	{_T("实时数据上传次数")},
	{_T("实时数据上传日期")},
	{_T("实时数据上传时间")},
};
const LONG		DEV_LONG_FIXCHLTYPE[]				=
{
	2,
	3,
	3,
};

///测试因子的代码、实时值、状态
const CString	DEV_STR_TESTCHLNAMEFORMAT[]		=
{
	{_T("测量因子%.2X代码")},
	{_T("测量因子%.2XRtd")}
};

const LONG	DEV_LONG_TESTCHLTYPE[]			=
{
	3,
	2,
};

const CString	DEV_STR_ORDER[]				=
{
	{_T("")},
	{_T("#")},
	{_T("$")},
	{_T("6")},
	{_T("?")},
};
//////////////////////////////////////////////////////////////////////////

//校验算法 半查表索引
const DWORD	DEV_DWORD_CRCHALFTABLE[]			=
{
	0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
	0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
};//X16+X12+X5+1 余式半表[CRC16-ITU]标准

const CString	DEV_STR_HEADFORMAT				= _T("##%.4d");
const CString	DEV_STR_HEAD					= _T("##");	
///设备号长度
const LONG		DEV_LONG_MNLENGTH				= 14;
///数据帧最小长度
const LONG		DEV_LONG_MINLEN					= 10;
///提取现场时间
const CString DEV_STR_CN1011					= _T("CN=1011");
///设置现场时间
const CString DEV_STR_CN1012					= _T("CN=1012");
///远程操作下端设备
const CString DEV_STR_CN3012					= _T("CN=3012");
///设置设备采样时间周期
const CString DEV_STR_CN3014					= _T("CN=3014");
///读历史数据
const CString DEV_STR_CN3016					= _T("CN=3016");

///提取实时数据间隔
const CString DEV_STR_CN1061					= _T("CN=1061");
///设置心跳\实时数据间隔
const CString DEV_STR_CN1062					= _T("CN=1062");
///设置访问密码
const CString DEV_STR_CN1072					= _T("CN=1072");
///取实时历史数据
const CString DEV_STR_CN2011					= _T("CN=2011");
///取分钟数据
const CString DEV_STR_CN2051					= _T("CN=2051");
///取小时数据
const CString DEV_STR_CN2061					= _T("CN=2061");

⌨️ 快捷键说明

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