Автоматизированное рабочее место оператора радиостанции
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?т программы CComand.csSystem;System.Collections.Generic;System.Text;System.Threading;NamotkaLibrary.Classes;NamotkaLibrary.Protocol.Commands;NamotkaLibrary.Protocol
{delegate void CCommandErrorEventHandler(Object sender, string error);delegate void DoneAndOutEventHandler(Object sender, EventArgs e);class CCommand : ICommand
{static event CCommandErrorEventHandler onErrorReceived;virtual string Name
{
{"Нет имени";
}
}virtual void OnErrorReceivedCCommand(string error)
{(onErrorReceived != null)(this, error);
}
//Вычтвыляется если необходимо подтверждение командыbool CompleteRequired { get; set; }
//Время ожидания подтверждения командыuint CompleteRequiredTime { get; set; }_lockFrame = new object();
#region onTicketReceived() Реакция на пришежший тикет для фрейма командыvirtual void onTicketReceived()
{(Global_locks.waitcomplete)
{
//TODO: Именно тут перебивался когда-то статус DoneReceived на TicketReceived.Info(string.Format(m_Port.PortName + ": {0} 4 Выставляем статус TicketReceived", this.Name));(State != enumState.DoneReceived)= enumState.TicketReceived;
{.Info(string.Format(
"{1}: {2} : Кадр {0}: Подтвержден квитанцией",
_Frames[0].Index, m_Port.PortName, _Frames[0].Command.Name));(CompleteRequired)
{
_Frames[0].TimeOutStep = CompleteRequiredTime;
}
{.Info(string.Format("{1}: {2} : Кадр {0}: Удаляем из очереди",_Frames[0].Index, m_Port.PortName, _Frames[0].Command.Name));(_lockFrame)
{
_Frames.RemoveAt(0);_Port.RemoveTargetFrameToSend(0);
0)">}(_Frames.Count > 0)
{(m_Port);
}
};
}(Exception _ex)
{.Error(_ex);
}
}
}
#endregion
#region onCompleteReceived()Реакция на пришедший "Готово" для фрейма командыvirtual void onCompleteReceived()
{(Global_locks.waitcomplete)
{.Info(string.Format(m_Port.PortName + ": {0} 3 Выставляем статус DoneReceived", this.Name));= enumState.DoneReceived;
0)">{(_Frames.Count > 0)
{.Info(string.Format("{1}: {2} :Кадр {0}: Подтвержден командой готово",
_Frames[0].Index, m_Port.PortName, _Frames[0].Command.Name));(_lockFrame)
{.Info(string.Format(m_Port.PortName + ": {0} 4 Выставляем статус DoneReceived", this.Name));
_Frames[0].State = enumState.DoneReceived;.Info(string.Format(m_Port.PortName + ": Удаляем пакет {0}", _Frames[0].ToString()));
_Frames.RemoveAt(0);_Port.RemoveTargetFrameToSend(0);
0)">}(_Frames.Count > 0)
{(m_Port);
}
};
}(Exception _ex)
{.Error(_ex);
}
}
}
#endregion Реакция на пришедший "Готово" для фрейма команды
#region onError()Реакиця на ошибку внутри фрейма командыvirtual void onError()
{.Info(string.Format("{0}: Ошибка - команда не выполнена.", m_Port.PortName));LastState = State;= enumState.Error;
{(_lockFrame)
{.Info(m_Port.PortName + ": Реакиця на ошибку внутри фрейма команды. Очистили лист CFrame 1");
_Frames.Clear();
0)">}(_Frames.Count > 0)
{(string.Format("{0}: Ошибка команды: {1}, статус: {2}", m_Port.PortName, _Frames[0].Command.Name, LastState.ToString(), Code[0].ToString()));new Exception(string.Format("{0}: Ошибка команды: {1}, статус: {2}", m_Port.PortName, _Frames[0].Command.Name, LastState.ToString(), Code[0].ToString()));
}
{(string.Format("{0}: Ошибка команды: {1}, статус: {2}", m_Port.PortName, Name, LastState.ToString(),Code[0].ToString()));new Exception(string.Format("{0}: Ошибка команды: {1}, статус: {2}", m_Port.PortName, Name, LastState.ToString(), Code[0].ToString()));
}
}(Exception _ex)
{.Error(_ex);
}
}
#endregion
#region onSended()Реакция после отправкиvirtual void onSended()
0).Info(.Format("{1}:{0}:.",">{(_Frames.Count > 0).Info(.Format("{1}: Кадр {0}: Кадр отправлен.",
_Frames[0].Index, m_Port.PortName));
}
#endregion
#region onDoneWaiting()virtual void onDoneWaiting()
0).Info(.Format("{1}:{0}:.",">{(_Frames.Count > 0).Info(.Format("{1}: Кадр {0}: Кадр ожидает команду готово.",
_Frames[0].Index, m_Port.PortName));
}
#endregion
#region onSend()Реакция до отправкиvirtual void onSend()
0).Info(.Format("{1}:{0}:.",">{(_Frames.Count > 0).Info(.Format("{1}: Кадр {0}: Кадр готов к отправке.",
_Frames[0].Index, m_Port.PortName));
}
#endregion
//Посылка тикета в ответ на принятую команду.virtual void onCommandReceived()
{(this);.Info(string.Format("Отправили квитанцию на команду: {0}", this.Name));
}
//Посылка готово в ответ на обработанную команду.virtual void onCommandCompleted()
{
//lock (_lockFrame)
//{
// m_Port.RemoveTargetReceivedFrame(0);
//}(this);.Info(string.Format("Отправлена Готово на команду: {0}", this.Name));
}
///
/// Статический список команд и их обработчиков
/// _CommandList
= new Dictionary();
///
/// Действие, которое выполняет комманда
enumAction _Action = enumAction.Unknown;">/// enumAction _Action = enumAction.Unknown;
///
/// Представление тела коммадны
/// byte[] _Body;
///
/// Код команды (смотри документацию)
/// byte[] _Code;
///
/// Блок данных команды
/// _Frames;enumDevices _fromDevice;byte _MaxTryToSend;
///
/// Состояние команды в текущйи момент
enumState _State = enumState.Initialize;UInt32 _TimeOutToSend;enumDevices _toDevice;CCommand()">/// enumState _State = enumState.Initialize;UInt32 _TimeOutToSend;enumDevices _toDevice;CCommand()
{= false;= 0;
}
///
/// Конструктор для экземпляра команды
///
/// CCommand(enumCommand indexCommand)
{= false;= 0;(indexCommand != enumCommand.Ticket)
{
_Code = new byte[1];[0] = (byte) indexCommand;= null;
}
}bool AnyTargetDevice { get; set; }UInt32 TimeOutToSend
{{ _TimeOutToSend = value; }{ return _TimeOutToSend; }
}byte MaxTryToSend
{{ return _MaxTryToSend; }{ _MaxTryToSend = value; }
}enumDevices toDevice
{{ return _toDevice; }{ _toDevice = value; }
}enumDevices fromDevice
{{ return _fromDevice; }{ _fromDevice = value; }
}byte[] Data
{{ return _Data; }
{
_Data = value;
_Body = null;
}
}byte[] Body
{
{(_Body == null)
0)">{_length = (_Code != null ? _Code.Length : 0) + (_Data != null ? _Data.Length : 0);(_length > 0)
{
_Body = new byte[_length];
_Body[0] = _Code[0];(_Data != null)(byte i = 0; i < (byte) _Data.Length; i++)
_Body[i + 1] = _Data[i];
}
}_Body;
}
}object[] Params { get; set; }
#region ICommand MembersCFrame Ticket { get; set; }List Frames
{{ return _Frames; }{ _Frames = value; }
}CRS232Port m_Port { get; set; }enumState State
{{ return _State; }{ _State = value; }
}enumAction Action
{{ return _Action; }{ _Action = value; }
}byte[] Code
{{ return _Code; }
{(_Code == null)
_Code = new byte[1];
_Code = value;
}
}
///
/// Подготовка команды на о?/p>