/// <summary> /// 连接串口 /// </summary> /// <returns>是否连接成功</returns> public override bool Connect() { try { if (!Connectors.ContainsKey(_com)) { Connectors.Add(_com, new SerialPortLock { PortName = _com, BaudRate = _baudRate, Parity = _parity, StopBits = _stopBits, DataBits = _dataBits, ReadTimeout = _timeoutTime }); } if (!Linkers.ContainsKey(_slave)) { Linkers.Add(_slave, _com); } SerialPort.Open(); Log.Information("Com client {ConnectionToken} connect success", ConnectionToken); return(true); } catch (Exception e) { Log.Error(e, "Com client {ConnectionToken} connect error", ConnectionToken); return(false); } }
/// <summary> /// 虚方法,可供子类重写 /// </summary> /// <param name="disposing"></param> protected virtual void Dispose(bool disposing) { if (!m_disposed) { if (disposing) { // Release managed resources } // Release unmanaged resources if (SerialPort != null) { if (Linkers.Values.Count(p => p == _com) <= 1) { try { SerialPort.Close(); } catch { //ignore } SerialPort.Dispose(); Log.Information("Com interface {Com} Disposed", _com); Connectors[_com] = null; Connectors.Remove(_com); } Linkers.Remove(_slave); Log.Information("Com connector {ConnectionToken} Removed", ConnectionToken); } m_disposed = true; } }
public virtual OptionsModel Build() => new OptionsModel ( Token.Build(), CancellationCheckInterval.Build(), HttpClient.Build(), Proxy.Build(), StateFactory.Build(), CommandExtractor.Build(), AllowedUpdates.Build(), Parsers.Build(), Converters.Build(), DefaultValueProviders.Build(), SpecialValueProviders.Build(), Linkers.Build(), CommandInvoker.Build(), ResultProcessors.Build() );
/// <summary> /// 断开串口 /// </summary> /// <returns>是否断开成功</returns> public override bool Disconnect() { if (Linkers.ContainsKey(_slave) && Connectors.ContainsKey(_com)) { try { Dispose(); Log.Information($"Com client {ConnectionToken} disconnect success"); return(true); } catch (Exception e) { Log.Error(e, $"Com client {ConnectionToken} disconnect error"); return(false); } } Log.Error(new Exception("Linkers or Connectors Dictionary not found"), $"Com client {ConnectionToken} disconnect error"); return(false); }
public virtual OptionsModelBuilder SetDefaultLinkers() { Linkers.Set(DefaultLinkers); return(this); }