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); } }
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); } }
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); }
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; } }