public void RecvData(object sender, CEventSingleArgs <CEntitySoilData> e) { if (RecvedRTDSoilData != null) { RecvedRTDSoilData.Invoke(sender, e); } }
/// <summary> /// 发消息,通知界面 /// </summary> public void SendSoilDataMsg() { if (null != RecvedRTDSoilData && null != m_mapStataionLastData) { foreach (KeyValuePair <string, CEntitySoilData> pair in m_mapStataionLastData) { RecvedRTDSoilData.Invoke(this, new CEventSingleArgs <CEntitySoilData>(pair.Value)); } } }
/// <summary> /// 发消息,通知界面 /// </summary> public void SendSoilDataMsg() { if (null != RecvedRTDSoilData && null != m_mapStataionLastData) { for (int i = 0; i < m_mapStataionLastData.Values.Count; i++) //foreach (KeyValuePair<string, CEntitySoilData> pair in m_mapStataionLastData) { KeyValuePair <string, CEntitySoilData> pair = m_mapStataionLastData.ElementAt(i); RecvedRTDSoilData.Invoke(this, new CEventSingleArgs <CEntitySoilData>(pair.Value)); } } }
/// <summary> /// 处理数据的任务入口 /// </summary> /// <param name="args"></param> private void DealSoilData(CSingleSoilDataArgs args) { CEntitySoilData data = new CEntitySoilData(); // if (null == CDBDataMgr.Instance.GetStationById(args.StrStationId)) if (null == GetSoilStationInfoByStationId(args.StrStationId)) { // 也就是收到未知站点的数据 CSystemInfoMgr.Instance.AddInfo(string.Format("收到未知站点{0}墒情数据", args.StrStationId)); return; } // 判断当前数据库配置中是否有站点的墒情配置 CEntitySoilStation _soilStation = GetSoilStationInfoByStationId(args.StrStationId); if (null == _soilStation) { CSystemInfoMgr.Instance.AddInfo(string.Format("站点{0}未配置墒情参数,数据丢弃", args.StrStationId)); return; } data.StationID = args.StrStationId; // data.StrDeviceNumber = _soilStation.StrDeviceNumber; data.DataTime = args.DataTime; data.DVoltage = decimal.Parse(args.Voltage.ToString()); data.ChannelType = args.EChannelType; data.MessageType = args.EMessageType; data.reciveTime = DateTime.Now; data.state = 1; // 计算10cm出的含水率 data.Voltage10 = args.D10Value; data.Moisture10 = CalMoisture(args.D10Value, _soilStation.A10, _soilStation.B10, _soilStation.C10, _soilStation.D10, _soilStation.M10, _soilStation.N10); //data.Moisture10 = CalMoisture(args.D10Value, _soilStation.A10, _soilStation.B10, _soilStation.C10, _soilStation.D10); // 计算20cm处的含水率 data.Voltage20 = args.D20Value; data.Moisture20 = CalMoisture(args.D20Value, _soilStation.A20, _soilStation.B20, _soilStation.C20, _soilStation.D20, _soilStation.M20, _soilStation.N20); //// 计算30cm处的含水率 //data.Voltage30 = args.D30Value; //data.Moisture30 = CalMoisture(args.D30Value, _soilStation.A30, _soilStation.B30, _soilStation.C30, _soilStation.D30); // 计算40cm处的含水率 data.Voltage40 = args.D40Value; data.Moisture40 = CalMoisture(args.D40Value, _soilStation.A40, _soilStation.B40, _soilStation.C40, _soilStation.D40, _soilStation.M40, _soilStation.N40); //// 计算60cm处的含水率 //data.Voltage60 = args.D60Value; //data.Moisture60 = CalMoisture(args.D60Value, _soilStation.A60, _soilStation.B60, _soilStation.C60, _soilStation.D60); // 写入数据库 try { m_proxySoilData.AddNewRow(data); } catch (Exception exp) { System.Diagnostics.Debug.WriteLine(exp.Message); } if (RecvedRTDSoilData != null) { // 发消息通知界面 RecvedRTDSoilData.Invoke(this, new CEventSingleArgs <CEntitySoilData>(data)); } // 更新内存最新数据,便于写入文件 if (m_mapStataionLastData.ContainsKey(args.StrStationId)) { m_mapStataionLastData[args.StrStationId] = data; } else { // 新建一个,进行更新 m_mapStataionLastData.Add(args.StrStationId, data); } }