📄 yxscantask.h
字号:
// YxscanTask.h: interface for the CYxscanTask class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_YXSCANTASK_H__EC26B8C0_26A2_460D_83C3_7B639EB19581__INCLUDED_)
#define AFX_YXSCANTASK_H__EC26B8C0_26A2_460D_83C3_7B639EB19581__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "stdafx.h"
#ifndef _YXTASKSTRUCT
#define _YXTASKSTRUCT
union ITEMP_ST
{
int Value;
struct VByte
{
unsigned char LowB0,LowB1,HighB0,HighB1;
}VB;
struct VWord
{
unsigned int LowW,HighW;
}VW;
};
union Control_STRUCT_IN
{
unsigned long Value;
struct Control_IN
{
unsigned long type : 3; //0:输入型 1:时间型 2:脉冲型 3:设置型
unsigned long kgbf : 1; //1:取反
unsigned long upm_enable : 1; //1:允许上跳沿计脉冲
unsigned long dnm_enable : 1; //1:允许下跳沿计脉冲
unsigned long soe_enable : 1; //1:允许产生SOE
unsigned long log_enable : 3; //0:与门 与非门
//1:或门 或非门
//2:设置
//3:清零
unsigned long unit_num : 3; //3:允许与(1~7)运算
unsigned long u0_kgbf : 1; //1:或运算1取反 0:不取反
unsigned long u1_kgbf : 1; //1:或运算2取反 0:不取反
unsigned long u2_kgbf : 1; //1:或运算3取反 0:不取反
unsigned long u3_kgbf : 1; //1:或运算4取反 0:不取反
unsigned long u4_kgbf : 1; //1:或运算5取反 0:不取反
unsigned long u5_kgbf : 1; //1:或运算6取反 0:不取反
unsigned long u6_kgbf : 1; //1:或运算7取反 0:不取反
unsigned long u7_kgbf : 1; //1:或运算8取反 0:不取反
unsigned long u_kgbf : 1; //1:或运算取反 0:不取反
unsigned int UDEF : 10;
} B;
};
union Control_STRUCT_OUT
{
unsigned long Value;
struct Control_OUT
{
unsigned long out_enable : 3; //2:允许开关量 0--8输出
unsigned long out0_kgbf : 1; //1:开关量1输出 0:跳闸 1:合闸
unsigned long out1_kgbf : 1; //1:开关量2输出
unsigned long out2_kgbf : 1; //1:开关量3输出
unsigned long out3_kgbf : 1; //1:开关量4输出
unsigned long out4_kgbf : 1; //1:开关量5输出
unsigned long out5_kgbf : 1; //1:开关量6输出
unsigned long out6_kgbf : 1; //1:开关量7输出
unsigned long UDEF : 23;
} B;
};
union KRBUF_STRUCT
{
unsigned char Value;
struct KRBUF
{
unsigned char bit0 : 1;
unsigned char bit1 : 1;
unsigned char bit2 : 1;
unsigned char bit3 : 1;
unsigned char bit4 : 1;
unsigned char bit5 : 1;
unsigned char bit6 : 1;
unsigned char bit7 : 1;
} B;
};
#endif
class CYxscanTask
{
public:
HANDLE YxscanThreadHandle;
DWORD YxscanThreadId;
BOOL YxRun;
union Control_STRUCT_IN con_in[MAXKRNUM];
union Control_STRUCT_OUT con_out[MAXKRNUM];
unsigned int us[MAXKRNUM][8];
unsigned int outs[MAXKRNUM][8];
double etime[MAXKRNUM];
unsigned int up_time[MAXKRNUM];
unsigned int dn_time[MAXKRNUM];
unsigned int ms_count[MAXKRNUM];
union KRBUF_STRUCT krbuf[MAXKRNUM/8];
union KRBUF_STRUCT outbuf[MAXKRNUM/8];
union KRBUF_STRUCT yxbuf[MAXKRNUM/8];
union KRBUF_STRUCT oldkr[MAXKRNUM/8];
union KRBUF_STRUCT newkr[MAXKRNUM/8];
union KRBUF_STRUCT chgkr[MAXKRNUM/8];
union KRBUF_STRUCT ysfg[MAXKRNUM/8];
unsigned int bvtm[MAXKRNUM];
unsigned int jgtm[MAXKRNUM];
unsigned long mulse[MAXKRNUM];
struct Mail *pMail;
struct Mail *MailQueueHead;
struct Mail *MailQueueTail;
unsigned int MailQueueLimit;
unsigned int MailQueueLength;
struct Mail Message[MAXEMPMAIL];
struct PostStationStruct PostStation;
int year[MAXKRNUM];
int month[MAXKRNUM];
int date[MAXKRNUM];
int hour[MAXKRNUM];
int minute[MAXKRNUM];
int second[MAXKRNUM];
int Milliseconds[MAXKRNUM];
int mYear;
int mMonth;
int mDayOfWeek;
int mDay;
int mHour;
int mMinute;
int mSecond;
int mMilliseconds;
int yscon[MAXKRNUM];
CWnd *pWnd;
double dms;
public:
CYxscanTask();
virtual ~CYxscanTask();
BOOL BeginYxscan();
BOOL EndYxscan();
BOOL InitPostStation();
void TFreeAMail(struct Mail *p);
struct Mail *ReceiveAMail(void);
struct Mail *TGetAEnvelope(void);//获取空信箱
BOOL TSendAMail(struct Mail *p);
BOOL TWrite(unsigned char *buf);//将下发报文写入MAIL--p中
BOOL TRead(unsigned char *buf);//读取各从板上报报文到MAIL
BOOL BitTestChar(union KRBUF_STRUCT *p, int num);
void BitSetChar(union KRBUF_STRUCT *p, int num);
void BitClrChar(union KRBUF_STRUCT *p, int num);
void BitXorChar(union KRBUF_STRUCT *p, int num);
BOOL OpenFile();
BOOL SaveFile();
public:
static UINT __cdecl ThreadFunc(LPVOID);
};
#endif // !defined(AFX_YXSCANTASK_H__EC26B8C0_26A2_460D_83C3_7B639EB19581__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -