From 61422f89a2dca9c7a361e396f38e4047162bb119 Mon Sep 17 00:00:00 2001 From: iioter <535915157@qq.com> Date: Wed, 10 Aug 2022 16:53:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96OmronFins=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plugins/Drivers/DriverOmronFins/OmronFins.cs | 106 +++++++++---------- 1 file changed, 48 insertions(+), 58 deletions(-) diff --git a/Plugins/Drivers/DriverOmronFins/OmronFins.cs b/Plugins/Drivers/DriverOmronFins/OmronFins.cs index 71b9b23..e9d085f 100644 --- a/Plugins/Drivers/DriverOmronFins/OmronFins.cs +++ b/Plugins/Drivers/DriverOmronFins/OmronFins.cs @@ -1,36 +1,28 @@ using IoTClient.Clients.PLC; -using IoTClient.Enums; using PluginInterface; -using System; -using System.Text; using Microsoft.Extensions.Logging; namespace DriverOmronFins { [DriverSupported("OmronFins")] - [DriverInfoAttribute("OmronFins", "V1.0.0", "Copyright IoTGateway-IoTClient© 2022-01-15")] + [DriverInfo("OmronFins", "V1.0.0", "Copyright IoTGateway-IoTClient© 2022-01-15")] public class OmronFins : IDriver { - private OmronFinsClient plc = null; - + private OmronFinsClient? _plc; public ILogger _logger { get; set; } private readonly string _device; + #region 配置参数 - [ConfigParameter("设备Id")] - public Guid DeviceId { get; set; } + [ConfigParameter("设备Id")] public string DeviceId { get; set; } - [ConfigParameter("IP地址")] - public string IpAddress { get; set; } = "127.0.0.1"; + [ConfigParameter("IP地址")] public string IpAddress { get; set; } = "127.0.0.1"; - [ConfigParameter("端口号")] - public int Port { get; set; } = 6000; + [ConfigParameter("端口号")] public int Port { get; set; } = 6000; - [ConfigParameter("超时时间ms")] - public int Timeout { get; set; } = 3000; + [ConfigParameter("超时时间ms")] public int Timeout { get; set; } = 3000; - [ConfigParameter("最小通讯周期ms")] - public uint MinPeriod { get; set; } = 3000; + [ConfigParameter("最小通讯周期ms")] public uint MinPeriod { get; set; } = 3000; #endregion @@ -42,26 +34,23 @@ namespace DriverOmronFins _logger.LogInformation($"Device:[{_device}],Create()"); } - public bool IsConnected { - get - { - return plc != null && plc.Connected; - } + get { return _plc != null && _plc.Connected; } } public bool Connect() { try { - plc = new OmronFinsClient(IpAddress, Port); - plc.Open(); + _plc = new OmronFinsClient(IpAddress, Port); + _plc.Open(); } catch (Exception) { return false; } + return IsConnected; } @@ -69,12 +58,11 @@ namespace DriverOmronFins { try { - plc?.Close(); + _plc?.Close(); return !IsConnected; } catch (Exception) { - return false; } } @@ -83,11 +71,10 @@ namespace DriverOmronFins { try { - plc = null; + _plc = null; } catch (Exception) { - } } @@ -96,61 +83,62 @@ namespace DriverOmronFins { var ret = new DriverReturnValueModel { StatusType = VaribaleStatusTypeEnum.Good }; - if (plc != null && this.IsConnected) + if (_plc != null && this.IsConnected) { try { switch (ioarg.ValueType) { - case PluginInterface.DataTypeEnum.Bit: - ret.Value = plc.ReadBoolean(ioarg.Address).Value == true ? 1 : 0; + case DataTypeEnum.Bit: + ret.Value = _plc.ReadBoolean(ioarg.Address).Value == true ? 1 : 0; break; - case PluginInterface.DataTypeEnum.Bool: - ret.Value = plc.ReadBoolean(ioarg.Address).Value; + case DataTypeEnum.Bool: + ret.Value = _plc.ReadBoolean(ioarg.Address).Value; break; - case PluginInterface.DataTypeEnum.UByte: - ret.Value = plc.ReadByte(ioarg.Address).Value; + case DataTypeEnum.UByte: + ret.Value = _plc.ReadByte(ioarg.Address).Value; break; - case PluginInterface.DataTypeEnum.Byte: - ret.Value = (sbyte)plc.ReadByte(ioarg.Address).Value; + case DataTypeEnum.Byte: + ret.Value = (sbyte)_plc.ReadByte(ioarg.Address).Value; break; - case PluginInterface.DataTypeEnum.Uint16: - ret.Value =plc.ReadUInt16(ioarg.Address).Value; + case DataTypeEnum.Uint16: + ret.Value = _plc.ReadUInt16(ioarg.Address).Value; break; - case PluginInterface.DataTypeEnum.Int16: - ret.Value = plc.ReadInt16(ioarg.Address).Value; + case DataTypeEnum.Int16: + ret.Value = _plc.ReadInt16(ioarg.Address).Value; break; - case PluginInterface.DataTypeEnum.Uint32: - ret.Value =plc.ReadUInt32(ioarg.Address).Value; + case DataTypeEnum.Uint32: + ret.Value = _plc.ReadUInt32(ioarg.Address).Value; break; - case PluginInterface.DataTypeEnum.Int32: - ret.Value = plc.ReadInt32(ioarg.Address).Value; + case DataTypeEnum.Int32: + ret.Value = _plc.ReadInt32(ioarg.Address).Value; break; - case PluginInterface.DataTypeEnum.Float: - ret.Value = plc.ReadFloat(ioarg.Address).Value; + case DataTypeEnum.Float: + ret.Value = _plc.ReadFloat(ioarg.Address).Value; break; - case PluginInterface.DataTypeEnum.Double: - ret.Value = plc.ReadDouble(ioarg.Address).Value; + case DataTypeEnum.Double: + ret.Value = _plc.ReadDouble(ioarg.Address).Value; break; - case PluginInterface.DataTypeEnum.Uint64: - ret.Value = plc.ReadUInt64(ioarg.Address).Value; + case DataTypeEnum.Uint64: + ret.Value = _plc.ReadUInt64(ioarg.Address).Value; break; - case PluginInterface.DataTypeEnum.Int64: - ret.Value = plc.ReadInt64(ioarg.Address).Value; + case DataTypeEnum.Int64: + ret.Value = _plc.ReadInt64(ioarg.Address).Value; break; - case PluginInterface.DataTypeEnum.AsciiString: - ret.Value = plc.ReadString(ioarg.Address); + case DataTypeEnum.AsciiString: + ret.Value = _plc.ReadString(ioarg.Address); break; - case PluginInterface.DataTypeEnum.Utf8String: - ret.Value = plc.ReadString(ioarg.Address); + case DataTypeEnum.Utf8String: + ret.Value = _plc.ReadString(ioarg.Address); break; default: + ret.StatusType = VaribaleStatusTypeEnum.Bad; + ret.Message = $"读取失败,不支持的类型:{ioarg.ValueType}"; break; } } catch (Exception ex) { - ret.StatusType = VaribaleStatusTypeEnum.Bad; ret.Message = $"读取失败,{ex.Message}"; } @@ -160,9 +148,11 @@ namespace DriverOmronFins ret.StatusType = VaribaleStatusTypeEnum.Bad; ret.Message = "连接失败"; } + return ret; } - public async Task WriteAsync(string RequestId, string Method, DriverAddressIoArgModel Ioarg) + + public async Task WriteAsync(string requestId, string method, DriverAddressIoArgModel ioarg) { RpcResponse rpcResponse = new() { IsSuccess = false, Description = "设备驱动内未实现写入功能" }; return rpcResponse;