Beispiel #1
0
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);
}
Beispiel #2
0
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);
}
Beispiel #3
0
void    QueryHeaderQ(void)
{
  HideCurrTime(1);

  ulong dw = DateToHouIndex(tiDigPrev);
  dw -= wBaseCurr;
  tiDig = HouIndexToDate(dw);


  szHi[10] = 'A' + ibLineQ;


  QueryHeaderQ_22(ibLineQ);
}
Beispiel #4
0
void    RunFlow(void)
{
  if (wProgram == bTEST_FLOW)
  {
    ShowHi(szClear);
    sprintf(szHi,"Порт %u: лимит",ibFlowPortFrom+1);

    Clear();
    HideCurrTime(0);
  }

  cbFlowDelay = cbMaxFlowDelay;
  fFlow = 1;
}
Beispiel #5
0
void    QueryHeaderU_Plc(void)
{
	HideCurrTime(1);

  ulong dw = DateToHouIndex(tiDigPrev);
  dw -= wBaseCurr;
  tiDig = HouIndexToDate(dw);
  

  szHi[10] = 'A' + ibMinor;       
     
  ibMinorMax = 2;
  QueryHeaderU_Plc_Inner();
}
Beispiel #6
0
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);
  }
}
Beispiel #7
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));
}