| 123456789101112131415161718192021222324252627282930313233343536 |
- using SHJX.Service.Common.ReadXML;
- using System.Collections.Generic;
- using System.IO.Ports;
- using System.Linq;
- using SHJX.Service.Common.Logging;
- using Microsoft.Extensions.Logging;
- namespace SHJX.Service.ServerClient.Modbus
- {
- public abstract class IModBus
- {
- private static readonly ILogger logger = LogFactory.BuildLogger(typeof(IModBus));
- private static ReadConfigUtil _dataConfig;
- protected ModbusRTU _modbus;
- private static Dictionary<string, byte> _nodeIDs;
- private int _baudrate;
- private readonly Dictionary<string, IModBus> modbuss = new Dictionary<string, IModBus>();
- public IModBus(ReadConfigUtil dataConfig)
- {
- _dataConfig = dataConfig;
- _modbus = new ModbusRTU();
- _baudrate = _dataConfig.Baudrate;
- _nodeIDs = _dataConfig.ModBusNodeIDs;
- InitModbusConnection();
- }
- private void InitModbusConnection()
- {
- var ports = RJCP.IO.Ports.SerialPortStream.GetPortNames(); //获取当前计算机的串行端口名的数组。
- if (!(ports.FirstOrDefault() is { } port)) return;
- if (!byte.TryParse(port.Replace("COM", string.Empty), out var portbyte)) return;
- var ret = _modbus.Open(portbyte, _baudrate);
- if (!ret) logger.LogError("Fail to Open COM{0}", port);
- }
- }
- }
|