/// <summary> /// Общая инициализация класса /// </summary> public void Init(string port) { _port = new SerialPort(port, 115200, Parity.None, 8, StopBits.One); _RetryReadCount = 10; //Количество повторов при ошибках чтения _RetryWriteCount = 10; //Количество повторов при ошибках записи _RetryHiddenWriteCount = 10; //Количество повторов при ошибках скрытой записи _RetryGetStatusCount = 100; //Количество повторов запросов в ожидании статуса 'Ready' _port.Handshake = Handshake.None; _port.Parity = Parity.None; _port.StopBits = StopBits.Two; _port.DataBits = 8; _port.DtrEnable = true; _port.RtsEnable = true; _port.ReadBufferSize = 0x4000; _port.WriteBufferSize = 0x4000; _port.ReadTimeout = 500; //Таймаут чтения данных из порта _port.WriteTimeout = 5000; _port.Encoding = Encoding.ASCII; //количество принятых байт, для срабатывания события DataReceived //_port.ReceivedBytesThreshold = 1; //_port.ParityReplace = 0xfe; try { _port.Open(); _port.BreakState = false; Thread.Sleep(_cTimeReadPortInit); } catch (UnauthorizedAccessException ex) { throw new RomulatorException("Ошибка при открытии порта", ex); } RomulatorVersion ver = GetVersion(); if (ver >= _SWver) //версия протокола эмулятора больше или равна версии ПО { _HWver = ver; } else { throw new RomulatorException("Версия протокола эмулятора выше чем версия протокола ПО, пожалуйста обновитесь."); } _log.WriteEntry(this, "Инициализация Romulator прошла успешно. Версия аппаратной части: " + _HWver); }
public void GetVersionTest() { RomulatorVersion expected = new RomulatorVersion(new byte[] { 1, 0, 0 }); RomulatorVersion actual = null; try { actual = _target.GetVersion(); } catch (RomulatorException ex) { _log.WriteEntry(this, ex); } _log.WriteEntry(this, "Версия Romulator: " + actual.ToString()); Assert.AreEqual(actual >= expected, true); }
private RomulatorVersion _HWver; //версия протокола эмулятор /// <summary> /// Общая инициализация класса /// </summary> private void Init() { _RetryReadCount = 10; //Количество повторов при ошибках чтения _RetryWriteCount = 10; //Количество повторов при ошибках записи _RetryHiddenWriteCount = 10; //Количество повторов при ошибках скрытой записи _RetryGetStatusCount = 1000; //Количество повторов запросов в ожидании статуса 'Ready' _Port.ReadTimeout = 5000; //Таймаут чтения данных из порта _Port.Open(); if (GetVersion() >= _SWver) //версия протокола эмулятора больше или равна версии ПО { _HWver = GetVersion(); } else { throw new Exception("Версия протокола эмулятора выше чем версия протокола ПО, пожалуйста обновитесь."); } }
/// <summary> /// Получить версию ПО эмулятора /// </summary> /// <returns>Версия в формате #(XXh).(XXh),ID(XXh)</returns> public RomulatorVersion GetVersion() { RomulatorVersion v = null; GetStatus(true); byte[] vArr; int i = 0; do { vArr = Request(new byte[] { _cRomVersion, _cRomVersion }); } while (vArr.Length != 3 && i-- < _RetryGetStatusCount); //инициализации класса данными прочитанными из порта, размером 3 байта v = new RomulatorVersion(vArr); return(v); }
/// <summary> /// Получить версию ПО эмулятора /// </summary> /// <returns>Версия в формате #(XXh).(XXh),ID(XXh)</returns> public RomulatorVersion GetVersion() { RomulatorVersion v = null; //жду статуса Ready if (!this.GetStatus(true)) { throw new TimeoutException("Время ожидания статуса 'Ready' истекло"); } //формаирование массива запроса и отсылка в порт byte[] arr = new byte[] { _cVersion, _cVersion }; //*** ЗАПРОС *** this.Write(arr); //попытка инициализации класса данными прочитанными из порта, размером 3 байта v = new RomulatorVersion(Read(3)); return(v); }
/// <summary> /// Общая инициализация класса /// </summary> public void Init(string port) { _port = new SerialPort(port, 115200, Parity.None, 8, StopBits.One); _RetryReadCount = 10; //Количество повторов при ошибках чтения _RetryWriteCount = 10; //Количество повторов при ошибках записи _RetryHiddenWriteCount = 10; //Количество повторов при ошибках скрытой записи _RetryGetStatusCount = 100; //Количество повторов запросов в ожидании статуса 'Ready' _port.Handshake = Handshake.None; _port.Parity = Parity.None; _port.StopBits = StopBits.Two; _port.DataBits = 8; _port.DtrEnable = true; _port.RtsEnable = true; _port.ReadBufferSize = 0x4000; _port.WriteBufferSize = 0x4000; _port.ReadTimeout = 500; //Таймаут чтения данных из порта _port.WriteTimeout = 5000; _port.Encoding = Encoding.ASCII; //количество принятых байт, для срабатывания события DataReceived //_port.ReceivedBytesThreshold = 1; //_port.ParityReplace = 0xfe; try { _port.Open(); _port.BreakState = false; Thread.Sleep(_cTimeReadPortInit); } catch (UnauthorizedAccessException ex) { throw new RomulatorException("Ошибка при открытии порта", ex); } RomulatorVersion ver = GetVersion(); if (ver >= _SWver) //версия протокола эмулятора больше или равна версии ПО _HWver = ver; else throw new RomulatorException("Версия протокола эмулятора выше чем версия протокола ПО, пожалуйста обновитесь."); _log.WriteEntry(this, "Инициализация Romulator прошла успешно. Версия аппаратной части: " + _HWver); }
/// <summary> /// Получить версию ПО эмулятора /// </summary> /// <returns>Версия в формате #(XXh).(XXh),ID(XXh)</returns> public RomulatorVersion GetVersion() { RomulatorVersion v = null; GetStatus(true); byte[] vArr; int i = 0; do { vArr = Request(new byte[] { _cRomVersion, _cRomVersion }); } while (vArr.Length != 3 && i-- < _RetryGetStatusCount); //инициализации класса данными прочитанными из порта, размером 3 байта v = new RomulatorVersion(vArr); return v; }
/// <summary> /// Попытка инициализации эмулятора /// </summary> /// <param name="port"></param> void ConnectEmulator(string port) { _emulatorVer = null; //Класса эмулятор не существует и выбран COM порт if (_emulator == null && port != "") try { _emulator = new Romulator(port); //initEmulatorFlag = true; _emulatorVer = _emulator.GetVersion(); StatusLabel(StatusCommunications.Found, lblStatusEmulator); } catch (Exception ex) { StatusLabel(ex.Message, Color.Red, lblStatusEmulator); } //эмулятор уже был создан но порт не выбран. Переоткрываем else if (_emulator != null && port == "") try { _emulatorVer = _emulator.GetVersion(); StatusLabel(StatusCommunications.Found, lblStatusEmulator); string emuPort = _emulator.Port.ToUpper(); foreach (var i in cbEmulatorPort.Items) { if (i.ToString().CompareTo(emuPort) == 0) { cbEmulatorPort.SelectedItem = i; break; } } } catch (Exception ex) { StatusLabel(ex.Message, Color.Red, lblStatusEmulator); } else StatusLabel(StatusCommunications.Default, lblStatusEmulator); }
/// <summary> /// Общая инициализация класса /// </summary> private void Init() { _RetryReadCount = 10; //Количество повторов при ошибках чтения _RetryWriteCount = 10; //Количество повторов при ошибках записи _RetryHiddenWriteCount = 10; //Количество повторов при ошибках скрытой записи _RetryGetStatusCount = 1000; //Количество повторов запросов в ожидании статуса 'Ready' _Port.ReadTimeout = 5000; //Таймаут чтения данных из порта _Port.Open(); if (GetVersion() >= _SWver) //версия протокола эмулятора больше или равна версии ПО _HWver = GetVersion(); else throw new Exception("Версия протокола эмулятора выше чем версия протокола ПО, пожалуйста обновитесь."); }
/// <summary> /// Получить версию ПО эмулятора /// </summary> /// <returns>Версия в формате #(XXh).(XXh),ID(XXh)</returns> public RomulatorVersion GetVersion() { RomulatorVersion v = null; //жду статуса Ready if (!this.GetStatus(true)) throw new TimeoutException("Время ожидания статуса 'Ready' истекло"); //формаирование массива запроса и отсылка в порт byte[] arr = new byte[] { _cVersion, _cVersion }; //*** ЗАПРОС *** this.Write(arr); //попытка инициализации класса данными прочитанными из порта, размером 3 байта v = new RomulatorVersion(Read(3)); return v; }