|
|
@@ -189,26 +189,110 @@ namespace YSAI.S7.client
|
|
|
{
|
|
|
//获取地址数据项
|
|
|
DataItem dataItem = DataItem.FromAddress(item.AddressName);
|
|
|
+ //switch (dataItem.VarType)
|
|
|
+ //{
|
|
|
+ // case VarType.Bit: //bool 类型
|
|
|
+ // Value = ((bool)PlcS7.ReadAsync(item.AddressName).Result).ToString();
|
|
|
+ // break;
|
|
|
+ // case VarType.Byte: //字节数据
|
|
|
+ // Value = ((byte)PlcS7.ReadAsync(item.AddressName).Result).ToString();
|
|
|
+ // break;
|
|
|
+ // case VarType.Word: //二进制
|
|
|
+ // Value = ((ushort)PlcS7.ReadAsync(item.AddressName).Result).ToString();
|
|
|
+ // break;
|
|
|
+ // case VarType.DWord: //二进制
|
|
|
+ // Value = ((uint)PlcS7.ReadAsync(item.AddressName).Result).ToString();
|
|
|
+ // break;
|
|
|
+ // case VarType.Int: //16位 int 在C# 中指 uint
|
|
|
+ // Value = ((uint)PlcS7.ReadAsync(item.AddressName).Result).ToString();
|
|
|
+ // break;
|
|
|
+ // case VarType.DInt: //32位 int 在C# 中指 int
|
|
|
+ // Value = ((int)PlcS7.ReadAsync(item.AddressName).Result).ToString();
|
|
|
+ // break;
|
|
|
+ // case VarType.Real: //浮点型 Float
|
|
|
+ // Value = ((uint)PlcS7.ReadAsync(item.AddressName).Result).ConvertToFloat().ToString();
|
|
|
+ // break;
|
|
|
+ // case VarType.LReal: // 浮点型 double
|
|
|
+ // Value = ((double)PlcS7.ReadAsync(item.AddressName).Result).ToDouble().ToString();
|
|
|
+ // break;
|
|
|
+ // case VarType.String: //字符串
|
|
|
+ // case VarType.S7String: //字符串
|
|
|
+ // case VarType.S7WString: //字符串
|
|
|
+ // byte[]? head = PlcS7?.ReadBytes(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr, 2);
|
|
|
+ // byte[]? bytes = PlcS7?.ReadBytes(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr + 2, head[1]);
|
|
|
+ // Value = Encoding.ASCII.GetString(bytes).TrimEnd(new char[] { '\0' });
|
|
|
+ // break;
|
|
|
+ // case VarType.Timer: //时间
|
|
|
+ // Value = ((double)PlcS7.ReadAsync(item.AddressName).Result).ToDouble().ToString();
|
|
|
+ // break;
|
|
|
+ // case VarType.Counter: //计算器?
|
|
|
+ // Value = ((ushort)PlcS7.ReadAsync(item.AddressName).Result).ToString();
|
|
|
+ // break;
|
|
|
+ // case VarType.DateTime: //时间类型
|
|
|
+ // Value = ((System.DateTime)PlcS7.ReadAsync(item.AddressName).Result).ToString();
|
|
|
+ // break;
|
|
|
+ // case VarType.DateTimeLong: //时间类型
|
|
|
+ // Value = ((System.DateTime)PlcS7.ReadAsync(item.AddressName).Result).ToString();
|
|
|
+ // break;
|
|
|
+ //}
|
|
|
+
|
|
|
switch (item.AddressDataType)
|
|
|
{
|
|
|
case Core.@enum.DataType.Bool:
|
|
|
- Value = PlcS7?.ReadBytes(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr, dataItem.Count).ValToBinString().BinStringToByte().Value.SelectBit(0).ToString();
|
|
|
+ Value = ((bool)PlcS7.ReadAsync(item.AddressName).Result).ToString();
|
|
|
break;
|
|
|
case Core.@enum.DataType.String:
|
|
|
byte[]? head = PlcS7?.ReadBytes(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr, 2);
|
|
|
byte[]? bytes = PlcS7?.ReadBytes(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr + 2, head[1]);
|
|
|
Value = Encoding.ASCII.GetString(bytes).TrimEnd(new char[] { '\0' });
|
|
|
break;
|
|
|
+ case Core.@enum.DataType.Byte:
|
|
|
+ Value = ((byte)PlcS7.ReadAsync(item.AddressName).Result).ToString();
|
|
|
+ break;
|
|
|
+ case Core.@enum.DataType.Double:
|
|
|
+ Value = ((ushort)PlcS7.ReadAsync(item.AddressName).Result).ToDouble().ToString();
|
|
|
+ break;
|
|
|
case Core.@enum.DataType.Float:
|
|
|
- Value = ((uint)PlcS7?.Read(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr, dataItem.VarType, dataItem.Count)).ConvertToFloat().ToString();
|
|
|
+ Value = ((uint)PlcS7.ReadAsync(item.AddressName).Result).ConvertToFloat().ToString();
|
|
|
break;
|
|
|
case Core.@enum.DataType.Int:
|
|
|
- Value = ((uint)PlcS7?.Read(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr, dataItem.VarType, dataItem.Count)).ConvertToInt().ToString();
|
|
|
+ Value = ((uint)PlcS7.ReadAsync(item.AddressName).Result).ConvertToInt().ToString();
|
|
|
+ break;
|
|
|
+ case Core.@enum.DataType.Uint:
|
|
|
+ Value = ((int)PlcS7.ReadAsync(item.AddressName).Result).ConvertToUInt().ToString();
|
|
|
break;
|
|
|
default:
|
|
|
Value = $"不支持{item.AddressDataType}类型读取";
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ if (string.IsNullOrEmpty(Value))
|
|
|
+ {
|
|
|
+ Value = "null";
|
|
|
+ }
|
|
|
+ //switch (item.AddressDataType)
|
|
|
+ //{
|
|
|
+ // case Core.@enum.DataType.Bool:
|
|
|
+ // Value = PlcS7?.ReadBytes(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr, dataItem.Count).ValToBinString().BinStringToByte().Value.SelectBit(0).ToString();
|
|
|
+ // break;
|
|
|
+ // case Core.@enum.DataType.String:
|
|
|
+ // byte[]? head = PlcS7?.ReadBytes(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr, 2);
|
|
|
+ // byte[]? bytes = PlcS7?.ReadBytes(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr + 2, head[1]);
|
|
|
+ // Value = Encoding.ASCII.GetString(bytes).TrimEnd(new char[] { '\0' });
|
|
|
+ // break;
|
|
|
+ // case Core.@enum.DataType.Byte:
|
|
|
+ // break;
|
|
|
+ // case Core.@enum.DataType.Float:
|
|
|
+ // Value = ((uint)PlcS7?.Read(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr, dataItem.VarType, dataItem.Count)).ConvertToFloat().ToString();
|
|
|
+ // break;
|
|
|
+ // case Core.@enum.DataType.Int:
|
|
|
+ // Value = ((uint)PlcS7?.Read(dataItem.DataType, dataItem.DB, dataItem.StartByteAdr, dataItem.VarType, dataItem.Count)).ConvertToInt().ToString();
|
|
|
+ // break;
|
|
|
+ // default:
|
|
|
+ // Value = $"不支持{item.AddressDataType}类型读取";
|
|
|
+ // break;
|
|
|
+ //}
|
|
|
}
|
|
|
|
|
|
//数据处理
|