Ejemplo n.º 1
0
 /// <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);
     }
 }
Ejemplo n.º 2
0
 /// <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;
     }
 }
Ejemplo n.º 3
0
 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()
 );
Ejemplo n.º 4
0
 /// <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);
 }
Ejemplo n.º 5
0
 public virtual OptionsModelBuilder SetDefaultLinkers()
 {
     Linkers.Set(DefaultLinkers);
     return(this);
 }