📄 startime.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 + -