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);
 }
示例#3
0
 public OperateResult <bool[]> ReadDiscrete(string address, ushort length)
 {
     return(busRtuClient.ReadDiscrete(address, length));
 }
示例#4
0
        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);
 }
示例#7
0
        //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);
        }