예제 #1
0
        /// <summary>
        /// 从数据库里获取所有的采集点
        /// </summary>
        /// <returns></returns>
        public static void GetAllCjdsFromDB()
        {
            for (int i = 0; i < 10000; i++)
            {
                //都是造的假数据,造出一个一万个用户的实时数据字典。
                CjdHeat heat = new CjdHeat();
                heat.Address = i.ToString();
                heat.AreaID  = i;
                heat.BackWaterTemperature = i * 11;
                heat.BuildID = i * 10;

                heat.CurrentHeat = i * 2 + i;
                heat.FlowRate    = i * 2 / 3;
                heat.HourseID    = i * 11;
                heat.LastHeat    = i * 2 + i - 1;

                heat.SupplyWaterTemperature = 10 + i;
                heat.TemperateDifference    = 10;
                heat.ThermalPower           = i;
                heat.TotalTime = 10000;

                heat.UnitID       = i * 1;
                heat.UserID       = i;
                heat.UserRealName = "用户" + i;
                //KeyValuePair<string, CjdHeat> pair = new KeyValuePair<string, CjdHeat>(i.ToString(), heat);
                //DicHeatRealTime.TryAdd(heat.Address, heat);//实时数据字典
            }
        }
예제 #2
0
        /// <summary>
        /// 插入一条数据
        /// </summary>
        /// <param name="heat"></param>
        public static void InsertIntoOneHeatIntoTmpTable(CjdHeat heat)
        {
            //从数据库里读,不自己构建了
            DataTable dtEndTable = DBHelper.GetDataTable("select top 1 * from Measure_heat");
            DataRow   tmpRow     = dtEndTable.NewRow();

            tmpRow["表地址"]    = heat.Address;
            tmpRow["上次抄表热量"] = heat.LastHeat;
            tmpRow["当前热量"]   = heat.CurrentHeat;

            tmpRow["热功率"]  = heat.ThermalPower;
            tmpRow["瞬时流量"] = heat.FlowRate;
            tmpRow["累计流量"] = heat.TotalFlow;
            tmpRow["供水温度"] = heat.SupplyWaterTemperature;

            tmpRow["回水温度"]   = heat.BackWaterTemperature;
            tmpRow["温差"]     = heat.TemperateDifference;
            tmpRow["累计工作时间"] = heat.TotalTime;
            tmpRow["实时时间"]   = DateTime.Now.ToString();

            tmpRow["采集时间"] = DateTime.Now.ToString();
            tmpRow["单价"]   = 1;
            tmpRow["通讯状态"] = 1;
            tmpRow["社区编号"] = heat.AreaID;

            tmpRow["楼房编号"] = heat.BuildID;
            tmpRow["楼层"]   = 1;
            tmpRow["单元编号"] = heat.UnitID;
            tmpRow["房间号"]  = heat.HourseID;

            tmpRow["户主编号"] = heat.UserID;
            tmpRow["户主姓名"] = heat.UserRealName;
            ;
            tmpRow["室温"]   = 19;
            tmpRow["设定室温"] = 19;

            tmpRow["阀门状态"] = 1;
            dtEndTable.Rows.Add(tmpRow);
        }
예제 #3
0
 /// <summary>
 /// 插入一条数据
 /// </summary>
 /// <param name="heat"></param>
 public static void InsertIntoOneHeatIntoTmpTable(CjdHeat heat)
 {
     HeatService.InsertIntoOneHeatIntoTmpTable(heat);
 }
예제 #4
0
        public static ConcurrentQueue <CjdHeat> QueueWaitingCjdHeats = new ConcurrentQueue <CjdHeat>(); //全局的采集点队列
        public static void AnalysisRawData()
        {
            Task task = new Task(() =>
            {
                while (true)
                {
                    while (QueueRawData.Count > 0)
                    {
                        byte[] arr;
                        QueueRawData.TryDequeue(out arr);
                        CjdHeat heat   = new CjdHeat();
                        int i          = 0;
                        string tempstr = "";
                        float sum      = 0; //2011.2.21 lwf 增加每块表的校验,发现集抄器中的单个表的数据没有校验,并且结束码不对
                        //if (arr[0] == 0x68 & arr[1] == 0x50) //2013.07.11 lwf 增加,主要是兼容一代的温控考虑的
                        //{
                        //    return false;
                        //}

                        for (i = 6; i >= 2; i--) //解析出地址
                        {
                            //heat.Address = heat.Address + arr[i].ToString("X2");
                            heat.Address = (DateTime.Now.Ticks % 10000).ToString(); //把地址平均分配在0~10000内
                        }

                        tempstr = "";
                        for (i = 15; i <= 18; i++)
                        {
                            tempstr = arr[i].ToString("X2") + tempstr;
                        }
                        tempstr       = tempstr.Substring(0, 6) + "." + tempstr.Substring(tempstr.Length - 2, 2); //lwf 2010.11.20
                        heat.LastHeat = Convert.ToDouble(tempstr);

                        //当前热量  JudgeDw(Arr(21))
                        tempstr = "";
                        for (i = 20; i <= 23; i++)
                        {
                            tempstr = arr[i].ToString("X2") + tempstr;
                        }
                        tempstr          = tempstr.Substring(0, 6) + "." + tempstr.Substring(tempstr.Length - 2, 2); //lwf 2010.11.20
                        heat.CurrentHeat = Convert.ToDouble(tempstr);

                        //热功率
                        tempstr = "";
                        for (i = 25; i <= 28; i++)
                        {
                            tempstr = arr[i].ToString("X2") + tempstr;
                        }
                        tempstr           = tempstr.Substring(0, 6) + "." + tempstr.Substring(tempstr.Length - 2, 2); //lwf 2010.11.20
                        heat.ThermalPower = Convert.ToDouble(tempstr);

                        //瞬时流量  JudgeDw(Arr(31))
                        tempstr = "";
                        for (i = 30; i <= 33; i++)
                        {
                            tempstr = arr[i].ToString("X2") + tempstr;
                        }
                        tempstr       = tempstr.Substring(0, 5) + "." + tempstr.Substring(tempstr.Length - 3, 3); //lwf 2010.11.20 11.23号发现协议是截取四位小数,实际上是截取三位小数
                        heat.FlowRate = Convert.ToDouble(tempstr);

                        //累计流量   JudgeDw(Arr(36))
                        tempstr = "";
                        for (i = 35; i <= 38; i++)
                        {
                            tempstr = arr[i].ToString("X2") + tempstr;
                        }
                        tempstr        = tempstr.Substring(0, 6) + "." + tempstr.Substring(tempstr.Length - 2, 2); //lwf 2010.11.20
                        heat.TotalFlow = Convert.ToDouble(tempstr);


                        //供水温度
                        tempstr = "";
                        for (i = 39; i <= 41; i++)
                        {
                            tempstr = arr[i].ToString("X2") + tempstr;
                        }
                        tempstr = tempstr.Substring(0, 4) + "." + tempstr.Substring(tempstr.Length - 2, 2); //lwf 2010.11.20
                        heat.SupplyWaterTemperature = Convert.ToDouble(tempstr);

                        //回水温度
                        tempstr = "";
                        for (i = 42; i <= 44; i++)
                        {
                            tempstr = arr[i].ToString("X2") + tempstr;
                        }
                        tempstr = tempstr.Substring(0, 4) + "." + tempstr.Substring(tempstr.Length - 2, 2); //lwf 2010.11.20
                        heat.BackWaterTemperature = Convert.ToDouble(tempstr);
                        heat.TemperateDifference  = 10.1;

                        //累计工作时间
                        tempstr = "";
                        for (i = 45; i <= 47; i++)
                        {
                            tempstr = arr[i].ToString("X2") + tempstr;
                        }
                        heat.TotalTime = Convert.ToDouble(tempstr);

                        //实时时间
                        tempstr = "";
                        for (i = 48; i <= 54; i++)
                        {
                            tempstr = arr[i].ToString("X2") + tempstr;
                        }

                        heat.AreaID       = 1;
                        heat.BuildID      = 2;
                        heat.UnitID       = 3;
                        heat.HourseID     = 4;
                        heat.UserRealName = "张三";
                        heat.UserID       = 5;
                        //入队,待处理队列
                        QueueWaitingCjdHeats.Enqueue(heat);
                    }
                }
            });

            task.Start();
        }