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

📄 yxscantask.h

📁 波峰焊后台控制软件-中文版
💻 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 + -