private void OpenPort(EasyCommunicationPort port) { if (_portOpened) { return; } port.SetCommStateEvent += SetCommStateEventHandler; try { // дополнительные действия до открытия порта OnBeforeActivate(); // открываем порт на заданной скорости port.BaudRate = _baudRate; port.Open(); _portOpened = true; } catch (Win32Exception e) { // устанавливаем код ошибки ErrorCode = new ServerErrorCode(this, e); throw; } finally { port.SetCommStateEvent -= SetCommStateEventHandler; } }
/// <summary> /// Подготовка порта к работе /// </summary> private void PreparePort() { if (!_port.IsOpen) { _port.Open(); _port.WriteTimeout = 2000; // будет использоваться только таймаут приема байта _port.ReadTimeout = 0; } }
/// <summary> /// Установка соединения с устройством /// </summary> public override void Open() { try { _port.Open(); _port.DiscardBuffers(); } catch (Win32Exception e) { throw new CommunicationException( string.Format("Не удалось открыть порт {0}", _port.PortName), e); } }