Esempio n. 1
0
        private void HandleCommand(CommandVModel command, NetworkResource Network)
        {
            if (Network == null)
            {
                FileLog.Error("ID:" + command.Module_id + "地址:" + command.ModuleAddr + "采集码:" + command.FunType + "采集ID:" + command.Fun_id + "采集名:" + command.FunName + "网络资源错误");
                return;
            }
            string msg = "";

            byte[]    send    = null, result = null;
            string    lpszVal = null;
            AlarmType errCode = AlarmType.Sue;
            bool      rst     = false;

            command.CollectTime = DateTime.Now;
            DateTime lpszdateTime = DateTime.Now;

            if (command.FunType.Equals(V0Fun.E.ToString()))/*有功总电能*/
            {
                rst = Drive.ARM(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.RdVal.ToString()))/*当前电表剩余电量*/
            {
                rst = Drive.RdVal(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Ia.ToString()))/*当前电表剩余电量*/
            {
                rst = Drive.GetIa(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Ib.ToString()))
            {
                rst = Drive.GetIb(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Ic.ToString()))
            {
                rst = Drive.GetIc(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Ua.ToString()))
            {
                rst = Drive.GetUa(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Ub.ToString()))
            {
                rst = Drive.GetUb(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Uc.ToString()))
            {
                rst = Drive.GetUc(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Psum.ToString()))
            {
                rst = Drive.GetPsum(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Pa.ToString()))
            {
                rst = Drive.GetPa(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Pb.ToString()))
            {
                rst = Drive.GetPb(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Pc.ToString()))
            {
                rst = Drive.GetPc(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Qsum.ToString()))
            {
                rst = Drive.GetQsum(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Qa.ToString()))
            {
                rst = Drive.GetQa(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Qb.ToString()))
            {
                rst = Drive.GetQb(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Qc.ToString()))
            {
                rst = Drive.GetQc(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Pfav.ToString()))
            {
                rst = Drive.GetPfav(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.PFa.ToString()))
            {
                rst = Drive.GetPFa(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.PFb.ToString()))
            {
                rst = Drive.GetPFb(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.PFc.ToString()))
            {
                rst = Drive.GetPFc(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Ssr.ToString()) && string.IsNullOrEmpty(command.DataValue))/*拉合闸状态*/
            {
                rst = Drive.Ssr(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Ssr.ToString()) && CommFunc.ConvertDBNullToInt32(command.DataValue) == 0)/*合闸*/
            {
                rst = Drive.Ssr0(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Ssr.ToString()) && CommFunc.ConvertDBNullToInt32(command.DataValue) == 1)/*拉闸*/
            {
                rst = Drive.Ssr1(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Pay.ToString()))/*充值*/
            {
                rst = Drive.Pay(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Refund.ToString()))/*退费*/
            {
                rst = Drive.Refund(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.PaySb1.ToString()))/*充值*/
            {
                rst = Drive.PaySb1(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.PaySb2.ToString()))/*充值*/
            {
                rst = Drive.PaySb2(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.IsPaul.ToString()) && string.IsNullOrEmpty(command.DataValue))/*保电状态*/
            {
                rst = Drive.SetPaul(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.IsPaul.ToString()) && !string.IsNullOrEmpty(command.DataValue))/*保电设置*/
            {
                rst = Drive.SetPaul(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Nrp.ToString()))/*有功功率负荷限值(kW)*/
            {
                rst = Drive.SetNrp(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.McNrp.ToString()))/*恶性负载判定有功功率增量(kW)(瞬时额定功率)*/
            {
                rst = Drive.SetMcNrp(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Wpf.ToString()))/*恶性负载判定无功功率(kW)*/
            {
                rst = Drive.SetWpf(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Uep.ToString()))/*违规用电判定功能的功率下限(kW)*/
            {
                rst = Drive.SetUep(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Miss.ToString()))/*一天内违规断电次数限值(0~255)*/
            {
                rst = Drive.SetMiss(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Rest.ToString()))/*违规断电后重启时间(S)*/
            {
                rst = Drive.SetRest(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Saf.ToString()))/*单次功率增量限值(kW)*/
            {
                rst = Drive.SetSaf(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Avlm.ToString()))/*过流门限值(A)*/
            {
                rst = Drive.SetAvlm(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Phase.ToString()))/*启用移相器监测功率下限(kW)*/
            {
                rst = Drive.SetPhase(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.Resist.ToString()))/*设置阻行负载(kW)*/
            {
                rst = Drive.SetResist(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.IsPhase.ToString()))/*移相器(=1启用)*/
            {
                rst = Drive.SetIsPhase(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.IsRelay.ToString()))/*继电器参数(=0电平式A路继电器设置;=1电平式B路继电器设置;=127脉冲式设置)*/
            {
                rst = Drive.SetIsRelay(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.IsStdby.ToString()))/*待机检测=0 不检测 =1 检测*/
            {
                rst = Drive.SetStandby(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Equals(V0Fun.TiVal.ToString()))/*获取定时断送电表*/
            {
                rst = Drive.SetTiVal(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.ToLower().Length == 5 && command.FunType.ToLower().Contains("leak") && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*漏电流*/
            {
                rst = Drive.GetMeterLeak(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.ToLower().Length == 5 && command.FunType.ToLower().Contains("temp") && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*漏电流*/
            {
                rst = Drive.GetMeterTemp(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.ToLower().Length == 8 && command.FunType.ToLower().Contains("maxleak") && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*电流阀值*/
            {
                rst = Drive.SetMaxLeak(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.ToLower().Length == 8 && command.FunType.ToLower().Contains("maxtemp") && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*温度阀值*/
            {
                rst = Drive.SetMaxTemp(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.ToLower().Length >= 8 && command.FunType.ToLower().Contains("StatusLeak".ToLower()) && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*电流使能*/
            {
                rst = Drive.SetStatusLeak(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.ToLower().Length >= 8 && command.FunType.ToLower().Contains("StatusTemp".ToLower()) && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*温度使能*/
            {
                rst = Drive.SetStatusTemp(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }
            else if (command.FunType.Contains(V0Fun.LeakAlarm.ToString()))/*漏电设备告警*/
            {
                rst = Drive.GetLeakAlarm(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }

            else if (command.FunType.Equals(V0Fun.Alarm1.ToString()))/*获取报警电量1限值*/
            {
                rst = Drive.GetAlarm1(command, Network, out send, out result, out lpszVal, out errCode, out msg);
            }


            else if (command.FunType.Equals(V0Fun.EventWpf.ToString()))/*记录恶性负载事件*/
            {
                #region 记录恶性负载事件
                Dictionary <string, string> list = new Dictionary <string, string>();
                rst = Drive.GetEventWpf(command, Network, out send, out result, out list, out errCode, out msg);
                if (rst == true)
                {
                    MalignantVModel mv = new MalignantVModel();
                    mv.CTime = new DateTime(1900, 1, 1);
                    foreach (var item in list)
                    {
                        if (item.Key.Equals("CTime"))
                        {
                            mv.CTime = CommFunc.ConvertDBNullToDateTime(item.Value);
                        }
                        else if (item.Key.Equals("SsrS"))
                        {
                            mv.Status = item.Value;
                        }
                        else if (item.Key.Equals("Ua"))
                        {
                            mv.Ua = CommFunc.ConvertDBNullToDecimal(item.Value);
                        }
                        else if (item.Key.Equals("Ia"))
                        {
                            mv.Ia = CommFunc.ConvertDBNullToDecimal(item.Value);
                        }
                        else if (item.Key.Equals("Psum1"))
                        {
                            mv.Psum1 = CommFunc.ConvertDBNullToDecimal(item.Value);
                        }
                        else if (item.Key.Equals("Psum2"))
                        {
                            mv.Psum2 = CommFunc.ConvertDBNullToDecimal(item.Value);
                        }
                        else if (item.Key.Equals("Psum3"))
                        {
                            mv.Psum3 = CommFunc.ConvertDBNullToDecimal(item.Value);
                        }
                        else if (item.Key.Equals("Psum4"))
                        {
                            mv.Psum4 = CommFunc.ConvertDBNullToDecimal(item.Value);
                        }
                    }
                    lpszVal      = null;
                    lpszdateTime = mv.CTime;
                    if (mv.CTime.Year != 1900)
                    {
                        lpszVal      = JsonHelper.Serialize(mv);
                        lpszdateTime = mv.CTime;
                    }
                }
                #endregion
            }
            else
            {
                errCode = AlarmType.Err_Nd;
            }

            try
            {
                DataProcess.YdProcess.Helper.YdDriveSaveCollectCache(command, lpszVal, lpszdateTime, 0, rst, errCode, msg, send, result);
            }
            catch (Exception ex)
            {
                FileLog.Error("处理ID号:" + this.HandledBY + "处理采集数据错误:" + ex.Message + ex.StackTrace);
            }
        }