コード例 #1
0
ファイル: ModbusIoDevice.cs プロジェクト: guozanhua/phmi
 public ModbusIoDevice(string options)
 {
     var config = ConfigHelper.GetConfig(options);
     _defaultAddress = config.DefaultAddress;
     _tryCount = config.TryCount;
     switch (config.BytesOrder)
     {
         case BytesOrder.HL:
             _bytesToRegistersConverter = new HLBytesConverter();
             break;
         case BytesOrder.LH:
             _bytesToRegistersConverter = new LHBytesConverter();
             break;
         default:
             throw new NotSupportedException(string.Format("Bytes order {0} is not supported", config.BytesOrder));
     }
     var comConfig = config as ComConfig;
     if (comConfig != null)
     {
         var port = new SerialPort(comConfig.PortName)
         {
             BaudRate = comConfig.BaudRate,
             DataBits = comConfig.DataBits,
             Parity = comConfig.Parity,
             StopBits = comConfig.StopBits
         };
         var portHelper = new SerialPortHelper(port, comConfig.Timeout, comConfig.MessageEndTimeout);
         if (comConfig is RtuConfig)
         {
             _mb = new ModbusRTU(portHelper);
         }
         else if (comConfig is AsciiConfig)
         {
             _mb = new ModbusASCII(portHelper);
         }
         else
         {
             throw new NotSupportedException(string.Format("Config \"{0}\" is not supported", config.ConfigName));
         }
         return;
     }
     var enetConfig = config as EnetConfig;
     if (enetConfig != null)
     {
         var tcpHelper = new TcpClientHelper(enetConfig.Address, enetConfig.Port, config.Timeout, config.MessageEndTimeout);
         if (enetConfig is RTUviaTCPConfig)
         {
             _mb = new ModbusRTU(tcpHelper);
         }
         else if (enetConfig is AsciiViaTcpConfig)
         {
             _mb = new ModbusASCII(tcpHelper);
         }
         else if (enetConfig is TcpConfig)
         {
             _mb = new ModbusTCP(tcpHelper);
         }
         else
         {
             throw new NotSupportedException(string.Format("Config \"{0}\" is not supported", config.ConfigName));
         }
         return;
     }
     throw new NotSupportedException(string.Format("Config \"{0}\" is not supported", config.ConfigName));
 }
コード例 #2
0
        public ModbusIoDevice(string options)
        {
            Config config = ConfigHelper.GetConfig(options);

            _defaultAddress = config.DefaultAddress;
            _tryCount       = config.TryCount;
            switch (config.BytesOrder)
            {
            case BytesOrder.HL:
                _bytesToRegistersConverter = new HLBytesConverter();
                break;

            case BytesOrder.LH:
                _bytesToRegistersConverter = new LHBytesConverter();
                break;

            default:
                throw new NotSupportedException(string.Format("Bytes order {0} is not supported",
                                                              config.BytesOrder));
            }

            var comConfig = config as ComConfig;

            if (comConfig != null)
            {
                var port = new SerialPort(comConfig.PortName)
                {
                    BaudRate = comConfig.BaudRate,
                    DataBits = comConfig.DataBits,
                    Parity   = comConfig.Parity,
                    StopBits = comConfig.StopBits
                };
                var portHelper = new SerialPortHelper(port, comConfig.Timeout, comConfig.MessageEndTimeout);
                if (comConfig is RtuConfig)
                {
                    _mb = new ModbusRTU(portHelper);
                }
                else if (comConfig is AsciiConfig)
                {
                    _mb = new ModbusASCII(portHelper);
                }
                else
                {
                    throw new NotSupportedException(string.Format("Config \"{0}\" is not supported",
                                                                  config.ConfigName));
                }
                return;
            }

            var enetConfig = config as EnetConfig;

            if (enetConfig != null)
            {
                var tcpHelper = new TcpClientHelper(enetConfig.Address, enetConfig.Port, config.Timeout,
                                                    config.MessageEndTimeout);
                if (enetConfig is RTUviaTCPConfig)
                {
                    _mb = new ModbusRTU(tcpHelper);
                }
                else if (enetConfig is AsciiViaTcpConfig)
                {
                    _mb = new ModbusASCII(tcpHelper);
                }
                else if (enetConfig is TcpConfig)
                {
                    _mb = new ModbusTCP(tcpHelper);
                }
                else
                {
                    throw new NotSupportedException(string.Format("Config \"{0}\" is not supported",
                                                                  config.ConfigName));
                }
                return;
            }

            throw new NotSupportedException(string.Format("Config \"{0}\" is not supported",
                                                          config.ConfigName));
        }