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

📄 diaobiao97.h

📁 一个电度表的通信规约,组态王调用此程序,具体方法代码中有注释.
💻 H
字号:

// The following ifdef block is the standard way of creating macros which make exporting 
// from a DLL simpler. All files within this DLL are compiled with the TESTDLL_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see 
// TESTDLL_API functions as being imported from a DLL, wheras this DLL sees symbols
// defined with this macro as being exported.

#define DLL_EXPORT  __declspec(dllexport)

typedef  int  (CALLBACK * lpReceiveData)(long,char *,int);
typedef  int  (CALLBACK * lpSendData)(long,char *,int);
typedef  void (CALLBACK * lpClearBuff)(BYTE);
typedef  void (CALLBACK * lpOnEventMessage)(char *,DWORD);
typedef  int  (CALLBACK * lpIsExit)(void);

#define TY_FAULT		4
#define TY_EVENT		5
#define TY_TXCLEAR		14
#define TY_RXCLEAR		15
#define TY_TXANDRXCLEAR 16
#define TY_COM			50
#define TY_TCP			51
#define TY_UDP			52

#define CMD_YK              1  //yk type
#define CMD_YT              2
#define CMD_TIME            7
#define CMD_UPDATE_DATA     8
#define CMD_YK_SELECT       9
#define CMD_YK_CANCEL       10
#define CMD_YK_EXEC         11

#define TY_SOE_YX1		    1 //soe type
#define TY_SOE_YX2		    2
#define TY_SOE_BOXCOMM	    3
#define TY_SOE_CHCOMM	    4
#define TY_SOE_YCH		    5  
#define TY_SOE_YCL		    6
#define TY_SOE_FG		    7
#define TY_SOE_GZ		    8


//#pragma pack( push, enter_modbus.h )
#pragma pack(8,push) 

#define BOX_DATA_LEN 8  //装置私有数据长度

#define MAX_ITEM_NAME  50

struct CItem  
{
	WORD        m_BoxID;                     //单元ID
	BYTE        m_GroupID;                    //组ID
	WORD		m_BoxIndexID;	              //单元内序号
	WORD		m_GroupIndexID;	              //组内序号
	CHAR		m_Name[MAX_ITEM_NAME];
	VARIANT		m_Value;
	BYTE		m_Type;
	bool		m_Status;
	bool		m_IsCalcu;//计算量标志
};

struct CallbackStruct
{
	lpReceiveData		fnReceiveData;
	lpSendData			fnSendData;
	lpClearBuff			fnClearBuff;
	lpOnEventMessage	fnOnEventMessage;
	lpIsExit            fnIsExit;
	void *				pThis;
	void *				pPort;
	UINT				PortType;
	WORD				ChannelID;
	WORD                BoxCount;
};

struct BoxPrivateData
{
	long  Addr;
	long  CommErrorCount;
	BYTE  Reserve[BOX_DATA_LEN];
};

struct EventData
{
	BYTE    DataType;                   //数据类型  1-模拟量 2-数字量
	WORD    UnitID;			            //单元号
	WORD    UnitIndex;           		//单元内序号
	BYTE    EventType;                  //事件类型 1-数字量变位(不带扩展数据)  2-数字量变位(带扩展数据)
	                                    //         3-单元通讯状态改变  4-通讯设备状态改变  5-模拟量越上限
	                                    //         6-模拟量越下限  7-模拟量越限复归  8-protect
	short   Year;           			//年
	BYTE    Month;			            //月
	BYTE    Day;			            //日
	BYTE    Hour;			            //时
	BYTE    Minute;		                //分
	BYTE    Second;		                //秒
	short   MSecond;		            //毫秒
	double  Value;			            //事件数据
	BYTE    ExtendData[256]; 	        //额外数据   
};

#pragma pack(pop) 

extern "C"
{
DLL_EXPORT bool  Connect(void *pThis,LPSTR type ,void *lpRD,void *lpSD,void *lpCB,void *lpMsg,void * lpExit,void *pCommPort,WORD ChannelID,int box_count);
DLL_EXPORT bool  Disconnect(void);
DLL_EXPORT void  Initialize(void);
DLL_EXPORT bool  WriteData(long Addr,WORD type,WORD groupID,WORD item_count,CItem * pItem,int write_index,double write_value);
DLL_EXPORT int    ReadData(long Addr,WORD groupID,WORD item_count,CItem * pItem,int * excount,EventData * * pExData,DWORD *errcount,bool * bCommState);
}

// Connect(pChannel,Type,fnReceiveData,fnSendData,&fnClearBuff,fnOnEventMessage,
//         fnIsExit,pCommPort,ChannelID,BoxSize);

//writedata(addr,type,groupid,itemcount,pitem,value);

//ReadData(addr,groupid,itemcount,pitem,&soecount,&psoe,&errcount,&commflag);

⌨️ 快捷键说明

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