Example #1
0
        /// <summary>
        /// 封装LIST
        /// </summary>
        /// <param name="valuelist">读取的byte</param>
        /// <param name="dt">读取的table</param>
        /// <returns></returns>
        public List <TagValue> getValue(byte[] resultAry, DataTable dt)
        {
            List <TagValue> tagList = new List <TagValue>();

            byte[] valuelist = new byte[132];

            if (resultAry.Length != 137)
            {
                return(tagList);
            }
            Array.Copy(resultAry, 3, valuelist, 0, resultAry.Length - 5);
            Array.Reverse(valuelist);
            try
            {
                TagValue objValue;
                //   int diviceId = BitConverter.ToInt32(valuelist, 0);
                int num0 = int.Parse(resultAry[0].ToString());
                if (num0 < 100 || num0 > 200)
                {
                    return(tagList);
                }
                DataRow[] rows = dt.Select("PLCAddress='" + num0 + "'");
                Console.WriteLine("PLC" + num0 + "|" + resultAry.Length);
                if (rows.Length > 0)
                {
                    DataRow resultRow = dt.Select("PLCAddress='" + num0 + "'")[0];
                    int     bitcount  = int.Parse(resultRow["BitCount"].ToString());
                    float[] fvlist    = new float[bitcount];
                    for (int i = 0; i < bitcount; i++)
                    {
                        float floatValue = BitConverter.ToSingle(valuelist, i * 4);
                        fvlist[i] = floatValue;
                    }
                    Array.Reverse(fvlist);
                    for (int i = 0; i < bitcount; i++)
                    {
                        string str_tagname = resultRow[5 + i].ToString();
                        if (str_tagname == "1" || str_tagname.Trim() == "")
                        {
                            continue;
                        }
                        objValue          = new TagValue();
                        objValue.TagName  = str_tagname;
                        objValue.DateTime = DateTime.Now.Date.AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute);
                        objValue.DeviceId = resultRow["HotName"].ToString();
                        if (fvlist[i] < 0)
                        {
                            objValue.Value = 0;
                        }
                        else
                        {
                            objValue.Value = Math.Round(fvlist[i] / 100, 2);
                        }
                        if (double.IsNaN(objValue.Value))
                        {
                            objValue.Value = -123456;
                        }
                        objValue.PLCadd = resultRow["PLCAddress"].ToString();
                        tagList.Add(objValue);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("error:" + ex.Message);
            }
            return(tagList);
        }