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

📄 startime.cpp

📁 这是一个在正实际应用当中运行的电力监控系统软件源代码
💻 CPP
字号:
#include <owl.h>
#include <windows.h>
#include <time.h>
#include	<stdio.h>
#include "def.h"

#include "db.h"
#include "dbfile.h"
#include "cmdefs.h"
typedef struct {
  RUNFLAG rf;
  WORD    RecWPBak;
} CHFLAG;
//---------------------------------------------------------------------------------
CHANNELPARAM FAR *lpChP=NULL;
STATIONPARAM FAR *lpStaP=NULL;
WORD rxbuflen = 256;
WORD txbuflen = 256;
WORD ChNo;
static HINSTANCE hLib;

int FAR PASCAL _export RxProc(HWND, WORD, CHANNELPARAM FAR *, STATIONPARAM FAR *);
int FAR PASCAL _export TxProc(HWND, CHANNELPARAM FAR *, STATIONPARAM FAR *,int);

extern BYTE FAR PASCAL _export CDT_BCH(BYTE *);
extern BYTE FAR PASCAL _export ByteRotate(BYTE srcbyte);

WORD ProcCtrlW(WORD);
BYTE ProcInfoW(WORD);
BYTE Pyc(WORD);
BYTE Pyx(WORD);
BYTE Pkwh(WORD);
BYTE Pyk(WORD);
BYTE Psj(WORD);
BYTE Psoe(WORD);
WORD xbfxstart(WORD);
WORD xbfxcalldata(WORD);
WORD iTime(WORD);
WORD msYk(WORD);
WORD msSj(WORD);
WORD msGb(WORD);
WORD msFg(WORD);
//----------------------------------------------------------------//
int FAR PASCAL LibMain(HANDLE hInstance, WORD wDataSeg, WORD wHeapSize, LPSTR lpszCmdLine)
{
  if (wHeapSize >0 ) UnlockData(0);
  return 1;
}

int FAR PASCAL WEP (int nParameter)
{
  FreeLibrary (hLib);
  return 1;
}

//=============================================================================================================
int FAR PASCAL _export RxProc(HWND hWnd, WORD chno, CHANNELPARAM FAR *lpChannelP, STATIONPARAM FAR *lpStationP)
{
  WORD rdp;
  char FAR *rxb;
  BYTE bchdata[6];

  lpStaP = lpStationP;
  if (!lpStaP) return 0;  
  lpChP = lpChannelP;
  if (!lpChP) return 0;
  ChNo = chno;
  lpChP += ChNo;
  rxb = lpChP->RecBuff;
  if (!rxb) return 0;
  rxbuflen = lpChP->RxBuffLen;

  CHFLAG *chf = (CHFLAG *)lpChP->Reserved;
  while ((lpChP->RxWriteP+rxbuflen - lpChP->RxReadP)%rxbuflen >=9)
		{
		BYTE tt ;
		rdp = lpChP->RxReadP;
		if(*(rxb+(rdp)%rxbuflen)==1)
		  {
			  tt = *(rxb+(rdp+1)%rxbuflen);
			  for (int i=2;i<7;i++)
				   tt = tt^(*(rxb+(rdp+i)%rxbuflen));

			  if (tt == *(rxb+(rdp + 7)%rxbuflen))
               { 
			    int flag =1;
                int X;
				if(*(rxb+(rdp+8)%rxbuflen) == 0x0d)
                 {
	              struct date day;
			      struct time tim;
//				  tt = *(rxb+(rdp+4)%rxbuflen);
//			      day.da_year = 1900 + (int)((tt>>4)*10) + (int)(tt&0x0f);
//			 	  if (day.da_year<1997 || day.da_year>2005)
//			 		  flag =0;
			      tt = *(rxb+(rdp+4)%rxbuflen);
                  if (tt>0x90) X=1900;
                  else X=2000;
	              day.da_year = X + (int)((tt>>4)*10) + (int)(tt&0x0f);
	              if (day.da_year<1990 || day.da_year>3000)
	              flag =0;
				  tt = *(rxb+(rdp+5)%rxbuflen);
			      day.da_mon = (int)((tt>>4)*10) + (int)(tt&0x0f);
		   		  if (day.da_mon >12 || day.da_mon<1)
                      flag =0;
				  tt = *(rxb+(rdp+6)%rxbuflen);
			      day.da_day = (int)((tt>>4)*10) + (int)(tt&0x0f);
		   		  if (day.da_day>31 || day.da_day<1)
                      flag =0;
				  tt = *(rxb+(rdp+1)%rxbuflen);
			      tim.ti_hour = (int)((tt>>4)*10) + (int)(tt&0x0f);
				  if (tim.ti_hour>23 || tim.ti_hour<0)
					 flag =0;
				  tt = *(rxb+(rdp+2)%rxbuflen);
				  tim.ti_min = (int)((tt>>4)*10) + (int)(tt&0x0f);
				  if (tim.ti_min>59 || tim.ti_min<0)
                     flag =0;
				  tt = *(rxb+(rdp+3)%rxbuflen);
				  tim.ti_sec = (int)((tt>>4)*10) + (int)(tt&0x0f);
				  if (tim.ti_sec>59 || tim.ti_sec<0)
                     flag =0;
				  tim.ti_sec+=1;
				  if(tim.ti_sec==60)flag=0;
				  tim.ti_sec=tim.ti_sec%60;
				  tim.ti_hund =0;       //50ms    ==32
				  if (flag ==1 &&((tim.ti_min)%10 ==2)&&tim.ti_sec<5)  //5
				  {
				  settime(&tim);
				  setdate(&day);
				  }
				}
			  }
		  lpChP->RxReadP=lpChP->RxWriteP;
		  }
		  else
          	{
				lpChP->RxReadP++;
				lpChP->RxReadP=lpChP->RxReadP%rxbuflen;
            }
		}
  return 1;
}

int FAR PASCAL _export TxProc(HWND, CHANNELPARAM FAR *lpChannelP, STATIONPARAM FAR *lpStationP,int Station)
{
	return 1;
}

⌨️ 快捷键说明

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