void QueryModemConnect(void) { HideCurrTime(0); InitPush(0); PushChar('A'); PushChar('T'); PushChar('D'); PushChar('P'); line ph = mpphPhones[diCurr.ibPhone - 1]; Clear(); strcpy(szLo, ph.szLine); uchar i; for (i=0; i<bLINE_SIZE; i++) { if ( ph.szLine[i] == 0 ) break; PushChar( ph.szLine[i] ); } PushChar('\r'); PushChar('\n'); Query(SERIAL_MODEM, 4+i+2, 1); }
void QueryHeaderS(void) { HideCurrTime(1); ulong dw = DateToHouIndex(tiDigPrev); dw -= wBaseCurr; tiDig = HouIndexToDate(dw); InitPush(0); PushChar(0xC0); PushChar(0x48); PushAddressS(); PushChar(0xD5); PushChar(0x01); PushChar(0x34); PushChar(ToBCD(tiDig.bDay)); PushChar(ToBCD(tiDig.bMonth)); PushChar(ToBCD(tiDig.bYear)); PushChar(tiDig.bHour*2 + tiDig.bMinute/30); PushChar(4); QueryS(100+23, 20); }
void QueryHeaderQ(void) { HideCurrTime(1); ulong dw = DateToHouIndex(tiDigPrev); dw -= wBaseCurr; tiDig = HouIndexToDate(dw); szHi[10] = 'A' + ibLineQ; QueryHeaderQ_22(ibLineQ); }
void RunFlow(void) { if (wProgram == bTEST_FLOW) { ShowHi(szClear); sprintf(szHi,"Порт %u: лимит",ibFlowPortFrom+1); Clear(); HideCurrTime(0); } cbFlowDelay = cbMaxFlowDelay; fFlow = 1; }
void QueryHeaderU_Plc(void) { HideCurrTime(1); ulong dw = DateToHouIndex(tiDigPrev); dw -= wBaseCurr; tiDig = HouIndexToDate(dw); szHi[10] = 'A' + ibMinor; ibMinorMax = 2; QueryHeaderU_Plc_Inner(); }
void ShowResponseCRC(uchar bState) { if (wProgram == bTEST_RESPONSE) { #ifdef MODBUS sprintf(szHi,"Порт %u: Mod%03u %u",ibPort+1,InBuff(3),bState); #else if (InBuff(4) == 0xFF) sprintf(szHi,"Порт %u: CFF%03u %u",ibPort+1,InBuff(5),bState); else if (InBuff(4) == 0xFE) sprintf(szHi,"Порт %u: CFE%03u %u",ibPort+1,InBuff(5),bState); else sprintf(szHi,"Порт %u: CRC%03u %u",ibPort+1,InBuff(4),bState); #endif ibPortActive = ibPort; HideCurrTime(0); } }
bool ReadHeaderBNew(uchar ibBlock, bool fDelay) { HideCurrTime(1); InitPop((uint)(1+(16-ibBlock)*15)); PopChar(); tiDig.bHour = FromBCD(PopChar()); // врем¤/дата часового блока tiDig.bMinute = FromBCD(PopChar()); tiDig.bDay = FromBCD(PopChar()); tiDig.bMonth = FromBCD(PopChar()); tiDig.bYear = FromBCD(PopChar()); if ((tiDig.bHour == 0) && // обрабатываем пустой блок (tiDig.bMinute == 0) && (tiDig.bDay == 0) && (tiDig.bMonth == 0) && (tiDig.bYear == 0)) { if (++iwMajor > GetMaxShutdown()) return(0); sprintf(szLo," выключено: %-4u ",iwMajor); if (fDelay == 1) DelayOff(); if (iwDigHou != 0) { iwDigHou = (wHOURS+iwDigHou-1)%wHOURS; ShowProgressDigHou(); return(MakeStopHou(0)); } else return(1); } if ((tiDig.bDay == tiSummer.bDay) && (tiDig.bMonth == tiSummer.bMonth)) { if ((tiDig.bHour == 3) && (tiDig.bMinute == 0)) { tiDig.bHour = 2; tiDig.bMinute = 0; } } sprintf(szLo," %02u %02u.%02u.%02u", tiDig.bHour, tiDig.bDay,tiDig.bMonth,tiDig.bYear); if ((tiDig.bMinute % 30) != 0) // обрабатываем неполный получасовой блок { tiDig.bMinute = (tiDig.bMinute / 30)*30; if (SearchDefHouIndex(tiDig) == 0) { szLo[4] = '?'; if (fDelay == 1) DelayOff(); return(1); } iwDigHou = (wHOURS+iwDigHou+1)%wHOURS; } else if (SearchDefHouIndex(tiDig) == 0) { szLo[4] = '?'; if (fDelay == 1) DelayOff(); return(1); } iwMajor = 0; // обнул¤ем счЄтчик после получени¤ правильных данных iwDigHou = (wHOURS+iwDigHou-1)%wHOURS; // врем¤ записи должно соответсвовать началу получасового блока ulong dw = DateToHouIndex(tiCurr); dw -= (wHOURS + iwHardHou - iwDigHou) % wHOURS; time ti = HouIndexToDate(dw); ShowProgressDigHou(); if (fDelay == 1) DelayOff(); PopChar(); uchar i; for (i=0; i<4; i++) { uint w = PopChar(); w += PopChar()*0x100; if (w == 0xFFFF) w = 0; mpwChannels[i] = w; } MakeSpecial(ti); return(MakeStopHou(0)); }