コード例 #1
0
ファイル: WaterResources.cs プロジェクト: wpmyj/dotnet
 private string QFormat(WaterQuality wq)
 {
     //decimal pow = (decimal) Math.Pow(10, (8 - wq.Count));
     return(float.Parse((wq.Value / wq.Rate).ToString("G" + wq.Count)).ToString());
     //return wq.Value.ToString();
 }
コード例 #2
0
ファイル: WaterResources.cs プロジェクト: wpmyj/dotnet
        private static Dictionary <int, WaterQuality> WaterQualityDic()
        {
            Dictionary <int, WaterQuality> dic = new Dictionary <int, WaterQuality>();
            WaterQuality wq = new WaterQuality();

            wq.Count = 3;
            wq.Name  = "水温";
            wq.Rate  = 10;
            dic.Add(0, wq);

            wq       = new WaterQuality();
            wq.Count = 4;
            wq.Name  = "pH 值";
            wq.Rate  = 100;
            dic.Add(1, wq);

            wq       = new WaterQuality();
            wq.Count = 4;
            wq.Name  = "溶解氧";
            wq.Rate  = 10;
            dic.Add(2, wq);

            wq       = new WaterQuality();
            wq.Count = 4;
            wq.Name  = "高锰酸盐指数";
            wq.Rate  = 10;
            dic.Add(3, wq);

            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "电导率";
            wq.Rate  = 1;
            dic.Add(4, wq);

            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "氧化还原电位";
            wq.Rate  = 10;
            dic.Add(5, wq);

            wq       = new WaterQuality();
            wq.Count = 3;
            wq.Name  = "浊度";
            wq.Rate  = 1;
            dic.Add(6, wq);

            wq       = new WaterQuality();
            wq.Count = 7;
            wq.Name  = "化学需氧量";
            wq.Rate  = 10;
            dic.Add(7, wq);

            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "五日生化需氧量";
            wq.Rate  = 10;
            dic.Add(8, wq);

            wq       = new WaterQuality();
            wq.Count = 6;
            wq.Name  = "氨氮";
            wq.Rate  = 100;
            dic.Add(9, wq);

            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "总氮";
            wq.Rate  = 100;
            dic.Add(10, wq);

            wq       = new WaterQuality();
            wq.Count = 7;
            wq.Name  = "铜";
            wq.Rate  = 10000;
            dic.Add(11, wq);

            wq       = new WaterQuality();
            wq.Count = 6;
            wq.Name  = "锌";
            wq.Rate  = 10000;
            dic.Add(12, wq);

            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "氟化物";
            wq.Rate  = 100;
            dic.Add(13, wq);

            wq       = new WaterQuality();
            wq.Count = 7;
            wq.Name  = "硒";
            wq.Rate  = 100000;
            dic.Add(14, wq);

            wq       = new WaterQuality();
            wq.Count = 7;
            wq.Name  = "砷";
            wq.Rate  = 100000;
            dic.Add(15, wq);

            wq       = new WaterQuality();
            wq.Count = 7;
            wq.Name  = "汞";
            wq.Rate  = 100000;
            dic.Add(16, wq);

            wq       = new WaterQuality();
            wq.Count = 7;
            wq.Name  = "镉";
            wq.Rate  = 100000;
            dic.Add(17, wq);


            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "六价铬";
            wq.Rate  = 1000;
            dic.Add(18, wq);

            wq       = new WaterQuality();
            wq.Count = 7;
            wq.Name  = "铅";
            wq.Rate  = 100000;
            dic.Add(19, wq);

            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "氰化物";
            wq.Rate  = 1000;
            dic.Add(20, wq);


            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "挥发酚";
            wq.Rate  = 1000;
            dic.Add(21, wq);

            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "苯酚";
            wq.Rate  = 100;
            dic.Add(22, wq);

            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "硫化物";
            wq.Rate  = 1000;
            dic.Add(23, wq);

            wq       = new WaterQuality();
            wq.Count = 10;
            wq.Name  = "粪大肠菌群";
            wq.Rate  = 1;
            dic.Add(24, wq);

            wq       = new WaterQuality();
            wq.Count = 6;
            wq.Name  = "硫酸盐";
            wq.Rate  = 100;
            dic.Add(25, wq);

            wq       = new WaterQuality();
            wq.Count = 8;
            wq.Name  = "氯化物";
            wq.Rate  = 100;
            dic.Add(26, wq);

            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "硝酸盐氮";
            wq.Rate  = 100;
            dic.Add(27, wq);

            wq       = new WaterQuality();
            wq.Count = 4;
            wq.Name  = "铁";
            wq.Rate  = 100;
            dic.Add(28, wq);

            wq       = new WaterQuality();
            wq.Count = 4;
            wq.Name  = "锰";
            wq.Rate  = 100;
            dic.Add(29, wq);

            wq       = new WaterQuality();
            wq.Count = 4;
            wq.Name  = "石油类";
            wq.Rate  = 100;
            dic.Add(30, wq);

            wq       = new WaterQuality();
            wq.Count = 4;
            wq.Name  = "阴离子表面活性剂";
            wq.Rate  = 100;
            dic.Add(31, wq);

            wq       = new WaterQuality();
            wq.Count = 7;
            wq.Name  = "六六六";
            wq.Rate  = 1000000;
            dic.Add(32, wq);

            wq       = new WaterQuality();
            wq.Count = 7;
            wq.Name  = "滴滴涕";
            wq.Rate  = 1000000;
            dic.Add(33, wq);

            wq       = new WaterQuality();
            wq.Count = 8;
            wq.Name  = "蓝绿藻";
            wq.Rate  = 10;
            dic.Add(34, wq);

            wq       = new WaterQuality();
            wq.Count = 12;
            wq.Name  = "总磷";
            wq.Rate  = 10000000;
            dic.Add(35, wq);

            wq       = new WaterQuality();
            wq.Count = 4;
            wq.Name  = "叶绿素";
            wq.Rate  = 100;
            dic.Add(36, wq);


            wq       = new WaterQuality();
            wq.Count = 5;
            wq.Name  = "总有机碳";
            wq.Rate  = 100;
            dic.Add(37, wq);

            wq       = new WaterQuality();
            wq.Count = 7;
            wq.Name  = "余氯";
            wq.Rate  = 1000000;
            dic.Add(38, wq);
            return(dic);
        }
コード例 #3
0
ファイル: WaterResources.cs プロジェクト: wpmyj/dotnet
        /// <summary>
        /// 水质参数报文解析
        /// </summary>
        public void analyzeWaterQuality(byte[] res, SqlConnection conn)
        {
            SqlHelper sh = new SqlHelper();

            byte[] byte_class = new byte[5];
            Array.Copy(res, 10, byte_class, 0, 5);
            string code = ByteArrayToBinaryString(byte_class);

            char[] arr_code = code.ToArray();
            //Console.WriteLine(code);
            //Dictionary<int, WaterQuality> dic = WaterQualityDic();

            List <WaterQuality> listw = new List <WaterQuality>();

            byte[] byte_data   = new byte[4];
            int    index       = 0;
            int    indexfive   = 0;
            string str_address = analyzeAddress(res);

            if (dicAddress.ContainsKey(str_address))
            {
                str_address = dicAddress[str_address];
            }
            StringBuilder sbout = new StringBuilder();

            Console.WriteLine("[" + str_address + "]接收水质参数报文:" + BitConverter.ToString(res));
            for (int i = 0; i < 40; i++)
            {
                if (arr_code[i] == '1')
                {
                    Array.Clear(byte_data, 0, 4);
                    if (i == 24)
                    {
                        indexfive = 1;
                    }
                    else
                    {
                        indexfive = 0;
                    }
                    Array.Copy(res, indexfive + 15 + index * 4, byte_data, 0, 4);

                    Array.Reverse(byte_data);
                    String bcdstring = converToBCD(byte_data);
                    //Console.WriteLine(bcdstring);
                    int          value = int.Parse(bcdstring);
                    WaterQuality wq    = null;
                    if (!wqDic.TryGetValue(i, out wq))
                    {
                        index++;
                        continue;
                    }

                    wq.Value = decimal.Parse(value.ToString());
                    if (str_address + "." + wq.Name == "管网.浊度")
                    {
                        wq.Value = wq.Value / 1000;
                    }
                    String finallValue = QFormat(wq);
                    sbout.Append(String.Format("{0}:{1},D<{2}>|", wq.Name, finallValue, i));
                    wq.Name = str_address + "." + wq.Name;
                    //wq.Value = decimal.Parse(finallValue);
                    wq.Value = ChangeDataToD(finallValue);

                    listw.Add(wq);
                    index++;
                }
            }
            if (listw.Count > 0)
            {
                Console.WriteLine("[" + str_address + "]接收" + listw.Count + "个水质参数:" + sbout.ToString());
                sh.insertFuGuang(conn, listw);
            }
            else
            {
                Console.WriteLine("[" + str_address + "]虽然收到报文但是没有采集任何参数");
            }

            //Convert.ToString(btye_class, 2).PadLeft(39, '0');
        }