public static void Data_operation(object datatemp)
        {
            Dust_noise__send_frame dust_noise_Send_Frame = JsonConvert.DeserializeObject <Dust_noise__send_frame>(datatemp.ToString());

            if (dust_noise_Send_Frame != null)
            {
                Zhgd_iot_dust_noise_current data = new Zhgd_iot_dust_noise_current();
                data.sn             = dust_noise_Send_Frame.sn;
                data.@timestamp     = dust_noise_Send_Frame.@timestamp;
                data.pm2_5          = dust_noise_Send_Frame.pm2_5;
                data.pm10           = dust_noise_Send_Frame.pm10;
                data.tsp            = dust_noise_Send_Frame.tsp;
                data.noise          = dust_noise_Send_Frame.noise;
                data.temperature    = dust_noise_Send_Frame.temperature;
                data.humidity       = dust_noise_Send_Frame.humidity;
                data.wind_speed     = dust_noise_Send_Frame.wind_speed;
                data.wind_grade     = dust_noise_Send_Frame.wind_grade;
                data.wind_direction = dust_noise_Send_Frame.wind_direction;
                data.air_pressure   = dust_noise_Send_Frame.air_pressure;
                data.rainfall       = dust_noise_Send_Frame.rainfall;

                //进行数据put
                DPC.Dust_noise_operation.Send_dust_noise_Current(data);
            }
        }
예제 #2
0
        static void Get_real_current_func()
        {
            try
            {
                //先得到token
                List <Get_Real_list_result_RK> real_List_Result = Get_real_list(Dust_userName, Dust_password);
                if (real_List_Result != null && real_List_Result.Count > 0)
                {
                    Dictionary <string, Zhgd_iot_dust_noise_current> noise_current = new Dictionary <string, Zhgd_iot_dust_noise_current>();
                    foreach (Get_Real_list_result_RK obj in real_List_Result)
                    {
                        if (noise_current.ContainsKey(obj.DevAddr))
                        {
                            if (obj.DevStatus == "true")
                            {
                                item_foreach(obj, noise_current[obj.DevAddr]);
                            }
                        }
                        else
                        {
                            if (obj.DevStatus == "true")
                            {
                                Zhgd_iot_dust_noise_current zhgd_Iot_Dust_Noise_Current = new Zhgd_iot_dust_noise_current();
                                zhgd_Iot_Dust_Noise_Current.sn = obj.DevAddr;
                                item_foreach(obj, zhgd_Iot_Dust_Noise_Current);
                                noise_current.Add(obj.DevAddr, zhgd_Iot_Dust_Noise_Current);
                            }
                        }
                    }

                    foreach (Zhgd_iot_dust_noise_current data in noise_current.Values)
                    {
                        data.timestamp = GetTimeStamp();
                        DPC.Dust_noise_operation.Send_dust_noise_Current(data);
                    }
                }
            }
            catch (Exception ex)
            {
                ToolAPI.XMLOperation.WriteLogXmlNoTail("Get_real_current_func异常", ex.Message);
            }
        }
예제 #3
0
        static void Get_real_current_func()
        {
            try
            {
                //先得到token
                Get_Real_list_result real_List_Result = Get_real_list(Dust_userName, Dust_password);
                if (real_List_Result != null && real_List_Result.code == "200" && real_List_Result.data != null && real_List_Result.data.Length > 0)
                {
                    foreach (object obj in real_List_Result.data)
                    {
                        Dust_noise_real dust_Noise_Real = Dust_noise_real.Init_Dust_noise_real(obj.ToString());
                        if (dust_Noise_Real != null)
                        {
                            Zhgd_iot_dust_noise_current data = new Zhgd_iot_dust_noise_current();
                            data.sn             = dust_Noise_Real.siteId.ToString();
                            data.@timestamp     = dust_Noise_Real.time;
                            data.pm2_5          = dust_Noise_Real.PM25_Avg;
                            data.pm10           = dust_Noise_Real.PM10_Avg;
                            data.tsp            = 0;
                            data.noise          = dust_Noise_Real.B03_Avg;
                            data.temperature    = dust_Noise_Real.T01_Avg;
                            data.humidity       = dust_Noise_Real.H01_Avg;
                            data.wind_speed     = dust_Noise_Real.W02_Avg;
                            data.wind_grade     = ConvertWind.WindToLeve((float)data.wind_speed);
                            data.wind_direction = dust_Noise_Real.W01_Avg;
                            data.air_pressure   = 0;
                            data.rainfall       = 0;

                            //进行数据put
                            DPC.Dust_noise_operation.Send_dust_noise_Current(data);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ToolAPI.XMLOperation.WriteLogXmlNoTail("Get_real_current_func异常", ex.Message);
            }
        }
        //实时数据
        //0000005E0000000200000000CFCDDE09595329CE000D94900000177000001996000000000050000002A300000D5C000001570000002000000000000000000000000000016697000000000000000000000000000000000000000000000000
        private static byte[] OnResolveRealData(byte[] b, int c)
        {
            //设备一分钟传输一次数据,如果一分钟之内有可能是重复数据
            try
            {
                // int Total_Length = int.Parse(ConvertData.ToHexString(b, 0, 4)); //4	Unsigned Integer消息总长度(含消息头及消息体)
                Zhgd_iot_dust_noise_current data = new Zhgd_iot_dust_noise_current();
                short Command_Id = short.Parse(ConvertData.ToHexString(b, 4, 4));//4	Unsigned Short命令或响应类型0x0802; //(监控数据)7
                // data.Sequence_Id = ConvertDataInt32(ConvertData.ToHexString(b, 8, 4));//4	Unsigned Integer消息流水号(保留未启用)
                //int sss = ConvertDataInt32(ConvertData.ToHexString(b, 12, 4));//4Unsigned Integer设备编号
                data.sn        = ConvertDataUInt32(ConvertData.ToHexString(b, 12, 4)).ToString(); //4Unsigned Integer设备编号
                data.timestamp = ConvertDataInt32(ConvertData.ToHexString(b, 16, 4));             //4Unisgned时间戳(unixtime)
                data.timestamp = data.timestamp * 1000;
                // data.Data_type = short.Parse(ConvertData.ToHexString(b, 18, 4));//4	Unsigned Short数据类型类型

                //data.SPM = ((Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 20, 4))) / (Decimal)10000;//4	Unsigned Integer粉尘数据(需要除10000)
                data.tsp   = (double)(((Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 20, 4))) / (Decimal)10000) / 1000; //4	Unsigned Integer粉尘数据(需要除10000) 歌瑞丽单位ug/m3  所以还得除以1000
                data.pm2_5 = (double)((Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 24, 4)) / (Decimal)100);            //4	Unsigned IntegerPM2.5
                data.pm10  = (double)((Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 28, 4)) / (Decimal)100);            //4	Unsigned IntegerPM10

                // data.TYPE = Convert.ToInt16(("0x" + ConvertData.ToHexString(b, 32, 2)), 16);//2	UnsignedShort0:SPM有效
                //1:PM2.5有效
                //2:PM10 有效
                //3:3个都有效
                //data.windDirection = (Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 34, 4)) / (Decimal)100;//4	Unsigned Integer风向角度0,后台显示正北
                //data.windSpeed = (Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 38, 4)) / (Decimal)10;	//4	Unsigned Integer风速为0,后台显示0m/S


                //风速和风向先调整一下
                data.wind_direction = (double)((Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 38, 4)) / (Decimal)10);  //4	现在是风角度
                data.wind_speed     = (double)((Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 34, 4)) / (Decimal)100); //4	现在是风速 2016/10/31号更改成除以100
                // data.windSpeed = (Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 34, 4)) / (Decimal)10;	//4	现在是风速

                data.temperature = (double)((Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 42, 4)) / (Decimal)100); //4	Unsigned Integer温度数据(2661 表示 26.61度)
                data.humidity    = (double)((Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 46, 4)) / (Decimal)10);  //4	Unsigned Integer湿度数据(7661 表示76.61)
                data.noise       = (double)((Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 50, 4)) / (Decimal)10);  //4	Unsigned Integer噪音等效值(763噪音值为76.3)
                //  data.maxNoise = (Decimal)ConvertDataInt32(ConvertData.ToHexString(b, 54, 4)) / (Decimal)10;//4	Unsigned Integer噪音峰值(927噪音峰值为92.7)

                #region 创塔的协议
                //data.GPS_Y = HexToDouble(ConvertData.ToHexString(b, 58, 8));//8	DoubleGPS经度
                //data.GPS_X = HexToDouble(ConvertData.ToHexString(b, 66, 8));//8	DoubleGPS纬度
                //data.Pressure = HexToFloat(ConvertData.ToHexString(b, 74, 4));//78Float大气压值
                //data.Remark = ConvertData.ToHexString(b, 152, 16);//16UnsignedChar保留字段(16BYTE)
                #endregion
                #region 格瑞利等其它
                //data.GPS_Y = (double)ConvertDataInt32(ConvertData.ToHexString(b, 58, 4)) / 1000000d;//8	DoubleGPS经度
                //data.GPS_X = (double)ConvertDataInt32(ConvertData.ToHexString(b, 62, 4)) / 1000000d;//8	DoubleGPS纬度
                //data.Pressure = (float)ConvertDataInt32(ConvertData.ToHexString(b, 66, 4));//78Float大气压值
                //data.Remark = ConvertData.ToHexString(b, 152, 16);//16UnsignedChar保留字段(16BYTE)
                #endregion


                byte[] replayrb = new byte[12];
                replayrb[0] = 0;
                replayrb[1] = 0;
                replayrb[2] = 0;
                replayrb[3] = 12;
                replayrb[4] = 0x80;
                replayrb[5] = 0x20;
                replayrb[6] = 0;
                replayrb[7] = 0;
                replayrb[8] = 0;
                replayrb[9] = 0;
                //byte[] replayrb = new byte[10];
                //replayrb[0] = b[0];//长度怎么这样赋值呢??????????
                //replayrb[1] = b[1];
                //replayrb[2] = b[2];
                //replayrb[3] = b[3];
                //replayrb[4] = 0x80;
                //replayrb[5] = 0x20;
                //replayrb[6] = b[6];
                //replayrb[7] = b[7];
                //replayrb[8] = b[8];
                //replayrb[9] = b[9];


                Dust_noise_operation.Send_dust_noise_Current(data);

                return(replayrb);
            }
            catch (Exception ex)
            {
                ToolAPI.XMLOperation.WriteLogXmlNoTail(System.Windows.Forms.Application.StartupPath + @"\CT", "创塔设备实时数据解析异常:", ex.Message);
                return(null);
            }
        }
        /// <summary>
        /// 实时数据
        /// </summary>
        /// <param name="b"></param>
        /// <param name="bCount"></param>
        /// <param name="client"></param>
        /// <param name="df"></param>
        public static void OnResolveCurrent(byte[] b, int bCount, TcpSocketClient client)
        {
            string tStr = ConvertData.ToHexString(b, 0, 2);

            if (tStr != "7A7A")
            {
                return;
            }
            Zhgd_iot_dust_noise_current current = new  Zhgd_iot_dust_noise_current();

            byte[] t = new byte[8];
            for (int i = 8, j = 0; i < 16; i++, j++)
            {
                t[j] = b[i];
            }
            current.sn = Encoding.ASCII.GetString(t);
            tStr       = ConvertData.ToHexString(b, 16, 6);
            try
            {
                current.timestamp = DPC_Tool.GetTimeStamp(DateTime.ParseExact(tStr, "yyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture));
            }
            catch
            {
                current.timestamp = DPC_Tool.GetTimeStamp(DateTime.Now);
            }
            UShortValue s = new UShortValue();

            s.bValue1 = b[22];
            s.bValue2 = b[23];
            if (s.sValue.ToString() == "0")
            {
                current.pm2_5 = 5;
            }
            else
            {
                current.pm2_5 = s.sValue;
            }
            s.bValue1 = b[24];
            s.bValue2 = b[25];
            if (s.sValue.ToString() == "0")
            {
                current.pm10 = 5;
            }
            else
            {
                current.pm10 = s.sValue;
            }
            s.bValue1              = b[26];
            s.bValue2              = b[27];
            current.noise          = double.Parse((float.Parse(s.sValue.ToString()) / 10).ToString("0.0"));
            s.bValue1              = b[28];
            s.bValue2              = b[29];
            current.temperature    = double.Parse((float.Parse(s.sValue.ToString()) / 10).ToString("0.0"));
            s.bValue1              = b[30];
            s.bValue2              = b[31];
            current.humidity       = double.Parse((float.Parse(s.sValue.ToString()) / 10).ToString("0.0"));
            s.bValue1              = b[32];
            s.bValue2              = b[33];
            current.wind_speed     = double.Parse((float.Parse(s.sValue.ToString()) / 10).ToString("0.0"));
            s.bValue1              = b[34];
            s.bValue2              = b[35];
            current.wind_direction = s.sValue;
            //    current.GprsSignal = ((sbyte)b[36]).ToString();
            // current.automatic = b[37].ToString();
            //current.Manual = b[38].ToString();
            s.bValue1            = b[39];
            s.bValue2            = b[40];
            current.air_pressure = double.Parse((float.Parse(s.sValue.ToString()) / 100).ToString("0.00"));
            s.bValue1            = b[41];
            s.bValue2            = b[42];
            current.tsp          = s.sValue;
            Dust_noise_operation.Send_dust_noise_Current(current);
        }
예제 #6
0
        static void item_foreach(Get_Real_list_result_RK rl, Zhgd_iot_dust_noise_current zc)
        {
            switch (rl.DevHumiName)
            {
            case "噪声(dB)":
                zc.noise = double.Parse(rl.DevHumiValue); break;

            case "PM10(ug/m3)":
                zc.pm10 = double.Parse(rl.DevHumiValue); break;

            case "PM2.5(ug/m3)":
                zc.pm2_5 = double.Parse(rl.DevHumiValue); break;

            case "气压(Kpa)":
                zc.air_pressure = double.Parse(rl.DevHumiValue); break;

            case "累计雨量(mm)":
                zc.rainfall = double.Parse(rl.DevHumiValue); break;

            case "TSP(ug/m3)":
                zc.tsp = double.Parse(rl.DevHumiValue); break;

            case "湿度(%RH)":
                zc.humidity = double.Parse(rl.DevHumiValue); break;

            case "温度(℃)":
                zc.temperature = double.Parse(rl.DevHumiValue); break;

            case "风力(风力)":
                zc.wind_grade = int.Parse(rl.DevHumiValue); break;

            case "风速(m/s)":
                zc.wind_speed = double.Parse(rl.DevHumiValue); break;

            case "风向":
                zc.wind_direction = double.Parse(rl.DevHumiValue); break;

            default: break;
            }
            switch (rl.DevTempName)
            {
            case "噪声(dB)":
                zc.noise = double.Parse(rl.DevTempValue); break;

            case "PM10(ug/m3)":
                zc.pm10 = double.Parse(rl.DevTempValue); break;

            case "PM2.5(ug/m3)":
                zc.pm2_5 = double.Parse(rl.DevTempValue); break;

            case "气压(Kpa)":
                zc.air_pressure = double.Parse(rl.DevTempValue); break;

            case "累计雨量(mm)":
                zc.rainfall = double.Parse(rl.DevTempValue); break;

            case "TSP(ug/m3)":
                zc.tsp = double.Parse(rl.DevTempValue); break;

            case "湿度(%RH)":
                zc.humidity = double.Parse(rl.DevTempValue); break;

            case "温度(℃)":
                zc.temperature = double.Parse(rl.DevTempValue); break;

            case "风力(风力)":
                zc.wind_grade = int.Parse(rl.DevTempValue); break;

            case "风速(m/s)":
                zc.wind_speed = double.Parse(rl.DevTempValue); break;

            case "风向":
                zc.wind_direction = double.Parse(rl.DevTempValue); break;

            default: break;
            }
        }