private void button4_Click_1(object sender, EventArgs e) { // 离散输入读取 if (textBox1.Text == "1") { DemoUtils.ReadResultRender(busRtuClient.ReadDiscrete(textBox3.Text), textBox3.Text, textBox4); } else { DemoUtils.ReadResultRender(busRtuClient.ReadDiscrete(textBox3.Text, ushort.Parse(textBox1.Text)), textBox3.Text, textBox4); } }
private void button4_Click_1(object sender, EventArgs e) { // 离散输入读取 readResultRender(busRtuClient.ReadDiscrete(textBox3.Text), textBox3.Text, textBox4); }
public OperateResult <bool[]> ReadDiscrete(string address, ushort length) { return(busRtuClient.ReadDiscrete(address, length)); }
public bool[] ReadDiscrete(string address, ushort length) { int Address = DMT.DevToAddrW("DVP", address, Station); return(busRtuClient.ReadDiscrete($"{Address}", length).Content); }
private void Read(Tag tag) { var address = tag.Address.ToLower(); string station = ""; if (address.StartsWith("s") && address.Contains(";")) { var ads = address.Split(';'); station = ads[0]; address = ads[1]; } string reg; if (address.StartsWith("di") || address.StartsWith("do") || address.StartsWith("ai") || address.StartsWith("ao")) { reg = address.Substring(0, 2); address = address.Replace(reg, ""); } else { throw new Exception("Error tag address."); } if (reg == "ai") { address = "x=4;" + address; } if (!string.IsNullOrEmpty(station)) { address = station + ";" + address; } switch (tag.TagType) { case "bool": OperateResult <bool> resbool = new OperateResult <bool>(); if (reg == "do") { resbool = _modbusDevice.ReadCoil(address); } else if (reg == "di") { resbool = _modbusDevice.ReadDiscrete(address); } if (resbool.IsSuccess) { tag.TagValue = resbool.Content; tag.Quality = Quality.Good; } else { tag.TagValue = null; tag.Quality = Quality.Bad; } break; case "short": case "int16": OperateResult <short> res = _modbusDevice.ReadInt16(address); if (res.IsSuccess) { tag.TagValue = res.Content; tag.Quality = Quality.Good; } else { tag.TagValue = null; tag.Quality = Quality.Bad; } break; case "int": case "int32": OperateResult <int> resint = _modbusDevice.ReadInt32(address); if (resint.IsSuccess) { tag.TagValue = resint.Content; tag.Quality = Quality.Good; } else { tag.TagValue = null; tag.Quality = Quality.Bad; } break; case "int64": case "long": OperateResult <long> reslong = _modbusDevice.ReadInt64(address); if (reslong.IsSuccess) { tag.TagValue = reslong.Content; tag.Quality = Quality.Good; } else { tag.TagValue = null; tag.Quality = Quality.Bad; } break; case "uint": case "uint32": OperateResult <uint> resuint = _modbusDevice.ReadUInt32(address); if (resuint.IsSuccess) { tag.TagValue = resuint.Content; tag.Quality = Quality.Good; } else { tag.TagValue = null; tag.Quality = Quality.Bad; } break; case "uint64": case "ulong": OperateResult <ulong> resulong = _modbusDevice.ReadUInt64(address); if (resulong.IsSuccess) { tag.TagValue = resulong.Content; tag.Quality = Quality.Good; } else { tag.TagValue = null; tag.Quality = Quality.Bad; } break; case "single": case "float": OperateResult <float> resfloat = _modbusDevice.ReadFloat(address); if (resfloat.IsSuccess) { tag.TagValue = resfloat.Content; tag.Quality = Quality.Good; } else { tag.TagValue = null; tag.Quality = Quality.Bad; } break; case "double": OperateResult <double> resdouble = _modbusDevice.ReadDouble(address); if (resdouble.IsSuccess) { tag.TagValue = resdouble.Content; tag.Quality = Quality.Good; } else { tag.TagValue = null; tag.Quality = Quality.Bad; } break; case "string": OperateResult <string> resStr = _modbusDevice.ReadString(address.Split('.')[0], ushort.TryParse(address.Split('.')[1], out ushort len) ? (ushort)0 : len); if (resStr.IsSuccess) { tag.TagValue = resStr.Content; tag.Quality = Quality.Good; } else { tag.TagValue = null; tag.Quality = Quality.Bad; } break; default: break; } }
public bool[] ReadDiscrete(string address, ushort length) { return(busRtuClient.ReadDiscrete(address, length).Content); }
//modbusRtu read private object ReadModRtuValue(Config.PlcTypeItem plctype, Config.PlcDataItem plcdata, ModbusRtu mod) { try { //string[] strAdrss = plcdata.Address.Split('.'); //string Address = strAdrss[0] + "." + Regex.Replace(strAdrss[1], @"^[A-Za-z]+", string.Empty); if (plctype == null || !plctype.IsConnected || plcdata == null || mod == null) { return(null); } switch (plcdata.DataType) { case Common.DataTypes.Bool: //Coil plcdata.ValueNew = mod.ReadCoil(plcdata.Address).Content; break; case Common.DataTypes.Discrete: //Discrete plcdata.ValueNew = mod.ReadDiscrete(plcdata.Address).Content; break; case Common.DataTypes.Short: plcdata.ValueNew = mod.ReadInt16(plcdata.Address).Content; break; case Common.DataTypes.Ushort: plcdata.ValueNew = mod.ReadUInt16(plcdata.Address).Content; break; case Common.DataTypes.Int: plcdata.ValueNew = mod.ReadInt32(plcdata.Address).Content; break; case Common.DataTypes.UInt: plcdata.ValueNew = mod.ReadUInt32(plcdata.Address).Content; break; case Common.DataTypes.Long: plcdata.ValueNew = mod.ReadInt64(plcdata.Address).Content; break; case Common.DataTypes.ULong: plcdata.ValueNew = mod.ReadUInt64(plcdata.Address).Content; break; case Common.DataTypes.Float: plcdata.ValueNew = mod.ReadFloat(plcdata.Address).Content; break; case Common.DataTypes.Double: plcdata.ValueNew = mod.ReadDouble(plcdata.Address).Content; break; case Common.DataTypes.String: plcdata.ValueNew = mod.ReadString(plcdata.Address, 10).Content; break; default: break; } } catch { //MessageBox.Show(ex.Message); } return(plcdata.ValueNew); }