/// <summary> /// Read ECU Part Number /// </summary> /// <returns></returns> public ConsultECUPartNumber GetECUInfo() { ConsultCommand cmd = _consultData.GetCommand(ConsultTypeOfCommand.ECU_INFO); for (int i = 0; i < _cCountRetry; i++) { try { ConsultECUPartNumber ecuInfo = new ConsultECUPartNumber(base.RequestECUData(cmd)); return(ecuInfo); } catch (ConsultException ex) { _log.WriteEntry(this, ex); continue; } } throw new ConsultException("Количество попыток запросов к устройству истекло"); }
private void ConsultConnect(COMPortName comPort = null) { StatusLabel(StatusCommunications.Search, lblStatusConsult); StatusLabel(StatusCommunications.Search, cbConsultPort); string port = comPort == null ? "" : comPort.PortName; _consultECUInfo = null; //Если Класса не существует - внештатная ситуация if (_consult == null) { throw new NullReferenceException("Не создан экземпляр класса Consult!"); } //Порт пуст. будем искать консульт на всех свободных портах if (String.IsNullOrEmpty(port)) { if (!_consult.IsOnline) { List <COMPortName> lstAccesiblePorts = COMPortName.GetPortNames(true); using (IProgressBar progressCOMSearch = FormProgressBar.GetInstance("Initialize consult on ")) { progressCOMSearch.ShowProgressBar(delegate() { foreach (COMPortName i in lstAccesiblePorts) { progressCOMSearch.SetCurrentState(i.PortName); try { _consult.Initialise(i.PortName, true); _consultECUInfo = _consult.GetECUInfo(); break; } catch (ConsultException) { continue; } } }); } if (_consult.IsOnline) { StatusLabel(StatusCommunications.Found, lblStatusConsult, _consultECUInfo.ToString()); StatusLabel(StatusCommunications.Found, cbConsultPort, _consultECUInfo.ToString()); port = _consult.COMPort; _consult.Disconnect(); ComboBoxSelectedIndexUpdate(new COMPortName(_consult.COMPort), cbConsultPort); } else { StatusLabel(StatusCommunications.NotFound, lblStatusConsult); StatusLabel(StatusCommunications.NotFound, cbConsultPort); } } } //выбран конкретный порт else { try { //выбранный порт отличается от того по которому сейчас работает консульт //выбранный порт новый и consult уже подключен, отключимся if (port != _consult.COMPort && _consult.IsOnline) { _consult.Disconnect(); } using (IProgressBar progress = FormProgressBar.GetInstance("Consult initialization on " + port)) { progress.ShowProgressBar(delegate() { try { _consult.Initialise(port); _consultECUInfo = _consult.GetECUInfo(); StatusLabel(StatusCommunications.Found, lblStatusConsult, _consultECUInfo.ToString()); StatusLabel(StatusCommunications.Found, cbConsultPort, _consultECUInfo.ToString()); } catch (ConsultException ex) { StatusLabel(StatusCommunications.NotFound, lblStatusConsult, ex.Message); StatusLabel(StatusCommunications.NotFound, cbConsultPort, ex.Message); } }); } } catch (ConsultException ex) { StatusLabel(ex.Message, Color.Red, lblStatusConsult); StatusLabel(ex.Message, Color.Red, cbConsultPort); return; } } }