Автоматизированное рабочее место оператора радиостанции

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

e = new CFrame(_frame);= true;(_iamAccept.Contains(_Frame.ToDevice))

{

_command = _Frame.Parse();

_command.m_Port = this;

_command.Action = enumAction.Receive;

_command.State = enumState.Receive;

_ThreadToCommand = new Thread(ThreadToCommand);

_ThreadToCommand.Name = "Command " + _ThreadToCommand.ManagedThreadId;

_ThreadToCommand.Start((_command));.Info(string.Format("{0}: Запущен минипоток обработки команды {1}", PortName, _command.Name));= true;(_command);

}

{.Info(PortName + " Пришедший кадр не для меня!");

}

}(Exception innerException)

{.Error(PortName + " Ошибка формирования кадра", innerException);

}(isFrame && !isCommand)

{(_iamAccept.Contains(_Frame.ToDevice))

{

//Отправляем квитанцию только если пришедший кадр для меняticket = CCommand.GetCommand(enumCommand.Ticket);.TimeOutToSend = 0; //не ждать ответа вообще..Action = enumAction.Send;.Send(this, _Frame.FromDevice, _Frame.ToDevice, _Frame.Index, ticket);

}

}(onGetFrame != null)

{(_frame, isFrame, isCommand);

}.Sleep(1);.Info(string.Format("{0}: Поток обработки команды {1} завершен", PortName, _command.Name));

}

}

}(TimeoutException)

{.Warning(PortName + ": Время ожидания истекло!");

}

{.Warning(PortName + ": Ошибка!");

}.Sleep(ReadTimeout);

}.Info(string.Format("{0}: Поток, отвечающий за прием кадров, завершен!\n", PortName));

}

///

/// Метод, работающий в потоке и отсылающий пакетв по очереди

/// void ThreadToSend()

{

//Выходим если порт в состоянии закрытия.(!IsOpen) return;.Info(PortName + ": Поток отвечающий за отправку - запущен.");(IsOpen)

{

0&&IsOpen)">_killFrameToSend = false;(_WriteFrameQueue.Count > 0 && IsOpen)

{

_killFrameToSend = false;_packet = _WriteFrameQueue[0];

{_timeout = 0;(

!_packet.isDead

&& _packet.State != enumState.Error

=_timeout">&& (int)_packet.TimeOutStep >= _timeout

&& IsOpen)

{(_packet.State)

{enumState.Busy:

//Проверяем, следует ли прервать отправку.(_killFrameToSend == true)

{

_killFrameToSend = false;

_packet.isDead = true;

}.Warning(.Format("{1}: Кадр {0}: Устройство занято обработкой данных. Ждем цикл.", _packet.Index, PortName));.Info(.Format("{2}: Кадр {0}: Ожидания подтверждения {1} msec.", _packet.Index, (int)_packet.TimeOutStep,));

_timeout = 0;;enumState.TicketReceived:

//Проверяем, следует ли прервать отправку.(_killFrameToSend == true)

{

_killFrameToSend = false;

_packet.isDead = true;

}.Info(string.Format("{2}: Кадр {0}: Попали в статус TicketReceived.{1} msec.", _packet.Index, (int)_packet.TimeOutStep, PortName));(_packet.State != enumState.DoneReceived)

_packet.onTicketReceived();

_timeout = (int)_packet.TimeOutStep + 10;(_packet.State != enumState.DoneReceived)

_packet.State = enumState.DoneWaiting;;enumState.DoneWaiting:

//Проверяем, следует ли прервать отправку.(_killFrameToSend == true)

{

_killFrameToSend = false;

_packet.isDead = true;

}.Info(string.Format("{2}: Кадр {0}: Попали в статус DoneWaiting. {1} msec.", _packet.Index, (int)_packet.TimeOutStep, PortName));

//TODO: Разкомментарить, когда найду баг, почему не проставляется статус DoneRecieved иногда при приходе "Готово".

/*if ((int)_packet.TimeOutStep == _timeout)

{

_packet.CountTryToSend += 1;(!_packet.isDead && this.IsOpen)

{(_packet.Packet, 0, _packet.Packet.Length);.WriteBytesToLog(PortName + ": Послан фрейм(retry):", _packet.Packet);.Info(string.Format("{2}: Кадр {0}: Послан ожидаем ответ от устройства.(Попытка {1})", _packet.Index,

_packet.CountTryToSend, PortName));

_timeout = 0;

_packet.onDoneWaiting();

}

}*/;enumState.DoneReceived:

//Проверяем, следует ли прервать отправку.(_killFrameToSend == true)

{

_killFrameToSend = false;

_packet.isDead = true;

}.Info(string.Format("Кадр {0}: Попали в статус DoneReceived.", _packet.Index));

_packet.onCompleteReceived();

_timeout = (int)_packet.TimeOutStep + 10;;enumState.Error:

//Проверяем, следует ли прервать отправку.(_killFrameToSend == true)

{

_killFrameToSend = false;

_packet.isDead = true;

}

_packet.onError();

_timeout = (int)_packet.TimeOutStep + 10;;enumState.Sended:

//Проверяем, следует ли прервать отправку.(_killFrameToSend == true)

{

_killFrameToSend = false;

_packet.isDead = true;

}((int)_packet.TimeOutStep == _timeout)

{

_packet.CountTryToSend += 1;(!_packet.isDead && this.IsOpen)

{(_packet.Packet, 0, _packet.Packet.Length);.WriteBytesToLog(PortName + ": Послан фрейм(retry):", _packet.Packet);.Info(string.Format("{2}: Кадр {0}: Послан ожидаем ответ от устройства.(Попытка {1})", _packet.Index,

_packet.CountTryToSend, PortName));

_timeout = 0;

_packet.onSended();

}

};enumState.Send:

//Проверяем, следует ли прервать отправку.(_killFrameToSend == true)

{

_killFrameToSend = false;

_packet.isDead = true;

}

///-------------(!CFrame.isFrame(_cacheBuffer.ToArray()))

{

_packet.CountTryToSend += 1;(!_packet.isDead && this.IsOpen)

{

_packet.onSend();(_packet.Packet, 0, _packet.Packet.Length);

_packet.State = enumState.Sended;.WriteBytesToLog(PortName + ": Послан фрейм(1):", _packet.Packet);.Info(string.Format("{2}: Кадр {0}: Послан ожидаем ответ от устройства.(Попытка {1})", _packet.Index,

_packet.CountTryToSend, PortName));

_timeout = 0;((int)_packet.TimeOutStep == 0)

{

//Говорит о том, что надо выйти из цикла

_timeout = (int)_packet.TimeOutStep + 10;

}

//_packet.onSend();

//_packet.State = enumState.Sended;

}

}

{.Info(string.Format("{1}: Кадр {0}: не послан так как буфер приема не обработан.", _packet.Index, PortName));

}

///--------------;:

//Проверяем, следует ли прервать отправку.(_killFrameToSend == true)

{

_killFrameToSend = false;

_packet.isDead = true;

};

}

_timeout += 10;.Info(string.Format("{1}: Ожидаем {0}, {2}", _timeout, PortName, _packet.Command.Name));

//Проверяем, следует ли прервать отправку.(_killFrameToSend == true)

{

_killFrameToSend = false;

_packet.isDead = true;

}.Sleep(10);

}

}(TimeoutException e)

{.Error(.Format("{1}: Кадр {0}: Время ожидания на посылку кадра истекло. ", _packet.Index, PortName), e);

_packet.State = enumState.Error;

_packet.onError();

}(Exception _ex)

{

//TODO: 1+1ин раз при онлайн смене устройств обмена, сюда пришло packet = null. Проверить, отдебажить..Error(.Format("{1}: Кадр {0}: Возникла неизвестная ошибка при посылке кадра.", _packet.Index, PortName),

_ex);

_packet.State = enumState.Error;

_packet.onError();

}

/*finally

{(_WriteFrameQueue)

0)">{(_WriteFrameQueue.Count > 0)

{.Info(string.Format("{1}: Кадр {0}: Удаляем кадр из очереди", _packet.Index, PortName));

//Гарантирует что удаляется именно тот пакет, который обрабатывали

_WriteFrameQueue.Remove(_packet);

}

}

}*/

}

//Усыпляем поток - состояние ожидания.Sleep(10);

}.Info(string.Format("{0}: Поток, отвечающий за отправку кадров, завершен!\n", PortName));

}

}

}

П1.2. Тек?/p>