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

📄 def.h

📁 这是一个在正实际应用当中运行的电力监控系统软件源代码
💻 H
字号:
#ifndef _DEF_H_
#define _DEF_H_

//--------- BIT DEFINE ---------//
#define bit0    0x1
#define bit1    0x2
#define bit2    0x4
#define bit3    0x8
#define bit4    0x10
#define bit5    0x20
#define bit6    0x40
#define bit7    0x80
#define bit8    0x100
#define bit9    0x200
#define bit10   0x400
#define bit11   0x800
#define bit12   0x1000
#define bit13   0x2000
#define bit14   0x4000
#define bit15   0x8000

#define bit16   0x10000l
#define bit17   0x20000l 
#define bit18   0x40000l
#define bit19   0x80000l 
#define bit20   0x100000l
#define bit21   0x200000l 
#define bit22   0x400000l
#define bit23   0x800000l 
#define bit24   0x1000000l
#define bit25   0x2000000l 
#define bit26   0x4000000l
#define bit27   0x8000000l 
#define bit28   0x10000000l
#define bit29   0x20000000l 
#define bit30   0x40000000l
#define bit31   0x80000000l

//define Max Number
#define     CHANNELMAXNUM    64    // 最多通道数
#define     PROTOMAXNUM      32    // 最多规约数
#define     STATIONMAXNUM    64    // 最多站数

#define     HARDWAREMAXNUM   4     // 硬件总数

//define Hardware Type for communication
#define     CTKBOARD    0     // CTK板
#define     STANDRS232  1     // 标准RS232串行口
#define     MULTIRS232  2     // 多串口板
#define     OTHERSIO    3     // 其它

//define Type of Display Window
#define     WNDTYPEMAXNUM    12   // 窗口总数

#define     RXBUFFWINDOW    0    // 串行接收缓冲区
#define     TXBUFFWINDOW    1    // 串行发送缓冲区
#define     CHSTATUSWINDOW  2    // 通道状态图
#define     REALYXWINDOW    3    // 实时遥信
#define     REALYCWINDOW    4    // 实时遥测
#define     REALKWHWINDOW   5    // 实时电度
#define     EVENTWINDOW     6    // 事项缓冲区
#define     RECCMDWINDOW    7    // 网络接收命令区
#define     RECDATAWINDOW   8    // 网络接收数据区
#define     SENDCMDWINDOW   9    // 网络发送命令区
#define     SENDDATAWINDOW  10   // 网络发送数据区
#define     OTHERWINDOW     11   // 其它

//define

#define     MULTISTANO      0xffff

#define     ChOpen          bit0     // 通道开启
#define     ChInit          bit1     // 通道初始化
#define     SyncR           bit2     // 收到同步字
#define     CtrlW           bit3     // 收到控制字
#define     InforW          bit4     // 收到信息字
#define     CommBreakFlag   bit5     // 通讯中断
#define     CharInvFlag     bit6     // 字符无效
#define     NoSyncFlag      bit7     // 失步
#define     OnlySyncFlag    bit8     // 只有同步字
#define     ErrDataFlag     bit9     // 误码率高
#define     NoTxFlag        bit10    // 空发
#define     CommBreakFlag1   bit11     // 通讯中断
#define     CharInvFlag1     bit12     // 字符无效
#define     NoSyncFlag1      bit13     // 失步
#define     OnlySyncFlag1    bit14     // 只有同步字
#define     ErrDataFlag1     bit15     // 误码率高
#define     NoTxFlag1        bit16     // 空发

//define Down Command Type to RTU
#define     DCMDSST         1     // 向RTU对钟
#define     DCMDYK0         2     // 遥控预置
#define     DCMDYK1         3     // 遥控执行
#define     DCMDYK2         4     // 遥控撤消
#define     DCMDSJ0         5     // 升降选择
#define     DCMDSJ1         6     // 升降执行
#define     DCMDSJ2         7     // 升降撤消
#define     DCMDGB          8     // 广播命令(冻结电度读数)
#define     DCMDFG          9     // 复归命令

//------------------------------------------------------------
// 下行命令缓冲区字节定义

// 1. 向 RTU 对钟
/*
   Cmd[0] = DCMDSST;
   Cmd[1] = RTU序号低字节;
   Cmd[2] = RTU序号高字节;
*/
// 2. 遥控预置   3. 遥控执行   4. 遥控撤消
/*
   Cmd[0] = DCMDYK0 / DCMDYK1 / DCMDYK2;
   Cmd[1] = RTU序号低字节;
   Cmd[2] = RTU序号高字节;
   Cmd[3] = 遥控序号低字节;
   Cmd[4] = 遥控序号高字节;
   Cmd[5] = 遥控状态 (合0xcc/分0x33);
*/
// 5. 升降选择   6. 升降执行   7. 升降撤消
/*
   Cmd[0] = DCMDSJ0 / DCMDSJ1 / DCMDSJ2;
   Cmd[1] = RTU序号低字节;
   Cmd[2] = RTU序号高字节;
   Cmd[3] = 升降序号低字节;
   Cmd[4] = 升降序号高字节;
   Cmd[5] = 性质 (升0xcc/降0x33);
*/
// 8. 广播命令
/*
   Cmd[0] = DCMDGB;
*/
// 9. 复归命令
/*
   Cmd[0] = DCMDFG;
   Cmd[1] = RTU序号低字节;
   Cmd[2] = RTU序号高字节;
*/
typedef struct
{
    BYTE     HiBaud;    //波特率高位
    BYTE     LoBaud;    //波特率低位
    WORD     SyncWord;  //同步字
    BYTE     MultiUse;  //信道复用
    BYTE     StopBits;  //停止位
    BYTE     Datas;     //数据位
    BYTE     Verafys;   //校验位
    BYTE     HiFreqTURE;        //“1”频高位
    BYTE     LoFreqTURE;        //“1”频低位
    BYTE     HiFreqFALSE;       //“0”频高位 
    BYTE     LoFreqFALSE;       //“0”频低位
    BYTE     RadioDelay;        //无线通讯电台延时
    BYTE     CommType;          //通讯方式(同步0,异步非0)
    BYTE     CommMode;          //通讯模式(有线0,无线1)
    BYTE     ModemStatus;
}COMMPARAMESSAGE;
//------------------------------------------------------------
typedef struct{
    WORD CommBreakNum;      //通讯中断计数(写指针不变)
    WORD InvalidCharNum;    //字符无效计数(硬件读状态不正确,数据无法读出)
    WORD NoSyncNum;         //失步(找不到同步字)计数
    WORD OnlySyncNum;       //只有同步字计数
    WORD ErrDataNum;        //误码率计数
    WORD NoTxNum;           //空发(有发送任务,但硬件发状态不正确无法发送)
	LONG CHErr;
    float ErrRate;
	LONG CHWorkTime;
	LONG CHStopTime;
}RUNFLAG;

typedef struct {
	BYTE CHValidFlag;
	BYTE CHCheckFlag;
	BYTE CHType;
	BYTE SIOOrd;
    BYTE ChNoInComm;
    COMMPARAMESSAGE TczPara;
    WORD StaNo;
    WORD DownCmdSta;
	LONG CHStatus;
	LONG CHProcessFlag;
    HGLOBAL hChRxBuff;
    BYTE FAR *RecBuff;
	WORD RxBuffLen;
	WORD RxReadP;
	WORD RxWriteP;
    HGLOBAL hChTxBuff;
    BYTE FAR *SendBuff;
    WORD TxBuffLen;
	WORD TxReadP;
	WORD TxWriteP;
    BYTE SyncWord[2];
	WORD READTONETP;
//    WORD WRITETONETP;
    WORD CommBreakNum;      //通讯中断计数(写指针不变)
    WORD InvalidCharNum;    //字符无效计数(硬件读状态不正确,数据无法读出)
    WORD NoSyncNum;         //失步(找不到同步字)计数
    WORD OnlySyncNum;       //只有同步字计数
	WORD ErrDataNum;        //误码率计数
    WORD NoTxNum;           //空发(有发送任务,但硬件发状态不正确无法发送)
	LONG CHErr;
    float ErrRate;
	LONG CHWorkTime;
	LONG CHStopTime;
	char yktemp[6];
	BYTE MultiStation;
    BYTE PolCdt;
	WORD ChangFlag;
	char Reserved[256];
} CHANNELPARAM;

typedef struct {
    char Cmd[16];
} DOWNCMD;
typedef struct
{
	WORD ORDER;
	BYTE DATE;
	BYTE TIME;
	BYTE MINUTE;
	BYTE SECOND;
	BYTE MSH;
	BYTE MSL;
    BYTE STATUS;
} TEMPSOE;
typedef struct {
    BYTE CurrUsedCh;
    BYTE RotateFlag;
    BYTE ProtoType;
    char BackCh[4];
	BYTE SetClockTimer;
    DOWNCMD DownCmd[4];
    BYTE DownCmdRP;  //下行命令读指针
	BYTE DownCmdWP;  //下行命令写指针
	BYTE SoeNum;
    BYTE DataToHost;
	BYTE STATIONNO;		//Polling 站号
//	BYTE Poll;			//Polling 规约任务计数
//	WORD PollOver;		//Polling 规约超时
//	BYTE RANDOM[3];		//Polling 规约的初始化
    WORD DeadValue;
	BYTE SLOT[16];
	BYTE RTUSTATUS;
	BYTE YCNUM;
	BYTE YXNUM;
	BYTE KWHNUM;
	BYTE KZNUM;
	BYTE YCB[16];//polling
	BYTE YXB[16];//polling
	BYTE KWHB[16];//polling
	TEMPSOE Soe[1];
//    BYTE TIME;
	DWORD TIMES;			//RTU当前时间
	WORD TIMEM;
	BYTE HOUR;
	BYTE MIN;
	BYTE SEC;
	BYTE MS;
//	BYTE PAFFLAG;
//	DWORD KwhCount;
    BYTE SwitchNo;
	WORD YKMESSAGE;
	BYTE LastCode;
	BYTE LastCodeType;
    BYTE LastDataType;
	BYTE KwhDealFlag;
	BYTE RepeatTimes;//for polling
	BYTE ConStartBoard;//for polling
	BYTE Interval;//for polling 5~200
	BYTE PollCdt;//for polling  监听
	WORD ProcCount;//=Interval*10;polling
} STATIONPARAM;
typedef struct
{
BYTE    COMMBAUD;
BYTE    Used;
BYTE    CHANEL1;   //本串行口对应的第一通道
BYTE    CHANEL2;   //本串行口对应的第二通道
}COMMPARA;
#ifdef __cplusplus
extern "C" {
     int FAR PASCAL RxProc(HWND, WORD, CHANNELPARAM FAR *, STATIONPARAM FAR *);
     int FAR PASCAL TxProc(HWND, CHANNELPARAM FAR *, STATIONPARAM FAR *,int);
     };
#endif

typedef int (FAR PASCAL *RXPROC)(HWND, WORD, CHANNELPARAM FAR *, STATIONPARAM FAR *);
typedef int (FAR PASCAL *TXPROC)(HWND, CHANNELPARAM FAR *, STATIONPARAM FAR *,int);

typedef struct {
 HINSTANCE hDLLInst;
 RXPROC    RxProc;
 TXPROC    TxProc;
 char      ProtoName[32];
 char      DllName[32];
} PROTOCAL;

typedef struct {
   BYTE SIONum;   //SIO口数目
   BYTE DataRSIrqNo;
   WORD IntTimer1;
   BYTE DataProcIrqNo;
   WORD IntTimer2;
   WORD BaudRate[64];
   WORD SIOWriteReg[64][8];
   BYTE StopDataBits[64];
} CTKSIO;
#endif

⌨️ 快捷键说明

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