[an error occurred while processing this directive]
|
//********** Обработка событий **********************
bool Command::GetEvent(Event n,unsigned char x,void *Ptr)
{
switch (n) // тип события
{
case Time_1s: // системные метки времени
if(TimeOutput10) TimeOutput10--;
case Time_1ms:
if(Uart1Time) Uart1Time--; // время между запросами по UART1
else
{
Uart1Time = TimeOut;
flag = 1; // пора посылать запрос по UART1
}
if(TimeLed) TimeLed--;
else
{
TimeLed = 300;
leds ^= 0xff; // мигание светодиодов
}
if(Time) Time--; // подсчет времени для логики переключений вводов
if(TimeAVR) TimeAVR--; // для логики переключений АВР
if(Pause_o16) Pause_o16--; // для условий переключений вводов
if(Pause_o17) Pause_o17--; // для условий переключений вводов
if(Pause_o18) Pause_o18--; // для условий переключений вводов
if(TimeInp4) TimeInp4--; // для DU5
if(TimeInp5) TimeInp5--; // для DU6
if(TimeInp6) TimeInp6--; // для DU7
if(TimeInp14) TimeInp14--; // для KV7
if(TimeInp15) TimeInp15--; // для KV8
return ContinueEvent; // продолжать обработку
case FrameOfUART0:
char *ptr = (char*)Ptr; // ЭТО НАЧАЛО БЛОКА ??????????????
unsigned int temp;
temp = CRC16(ptr,x-2); // в temp контрольная сумма
if(temp!=((*(ptr+x-2))<<8|*(ptr+x-1)))
return StopEvent; // не совпала CRC16
if((*ptr!=ADDR)&&(*ptr!=0)) // не совпал адрес
return StopEvent;
InputUart0 = ptr; // указатель на приемный буфер
FlagUart0 = 1; // пора обрабатывать фрейм Modbus
return StopEvent; // не совпал адрес
}
return ContinueEvent; // продолжать обработку
}
E-mail: info@telesys.ru