Exemple #1
0
        //
        public APIRst GetYdMonitorOfControl(string cmd, int module_id)
        {
            APIRst rst = new APIRst();

            if (string.IsNullOrEmpty(cmd))
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = "请发送指令";
                return(rst);
            }
            try
            {
                //long log_id = bll.YdModuleOnAddCmd(module_id, 0, V0Fun.Ssr1.ToString(), cmd);
                long log_id = bll.YdModuleOnAddCmd(module_id, 0, V0Fun.Ssr.ToString(), cmd);

                CommandVModel command = bll.GetYdModuleOnSendCmd(log_id);
                ListenVModel  vm      = new ListenVModel();
                vm.cfun    = ListenCFun.cmd.ToString();
                vm.content = JsonHelper.Serialize(command);
                string msg = "";
                rst.rst     = CacheMgr.SendCollectVal(vm, out msg);
                rst.err.msg = msg;
            }
            catch (Exception ex)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = ex.Message;
                FileLog.WriteLog("下发指令错误(GetYdMonitorOfControl):" + ex.Message + ex.StackTrace);
            }
            return(rst);
        }
Exemple #2
0
        /// <summary>
        /// 异步发送请求
        /// </summary>
        /// <param name="vm"></param>
        public static void BeginSend(ListenVModel vm)
        {
            string msg = "";
            Thread th  = new Thread((ThreadStart) delegate { SendCollectVal(vm, out msg); });

            th.Name         = "Send";
            th.IsBackground = true;
            th.Start();
        }
Exemple #3
0
        public bool BeginYdToGwConfig(string content)
        {
            ListenVModel vm = new ListenVModel();

            vm.cfun    = ListenCFun.addvar.ToString();
            vm.content = content;
            CacheMgr.BeginSend(vm);
            return(true);
        }
Exemple #4
0
        public bool YdToGwConfig(string content)
        {
            ListenVModel vm = new ListenVModel();

            vm.cfun    = ListenCFun.addvar.ToString();
            vm.content = content;
            string msg = "";

            return(CacheMgr.SendCollectVal(vm, out msg));
        }
Exemple #5
0
        private void GetYdModelsSendCmd(DataTable dtSource)
        {
            foreach (DataRow dr in dtSource.Rows)
            {
                CommandVModel cmd = ModelHandler <CommandVModel> .FillModel(dr);

                ListenVModel vm = new ListenVModel();
                vm.cfun    = ListenCFun.cmd.ToString();
                vm.content = JsonHelper.Serialize(cmd);
                CacheMgr.BeginSend(vm);
            }
        }
Exemple #6
0
        /// <summary>
        /// 发送采集数据
        /// </summary>
        /// <param name="vm"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static bool SendCollectVal(ListenVModel vm, out string msg)
        {
            bool rst = false;

            msg = "";
            try
            {
                if (start == false)
                {
                    //string ps1 = IniHepler.GetConfig(WebConfig.LpFileName, "Automatic", "Ip");
                    //string[] ar = ps1.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                    //if (ar.Count() != 2)
                    //{
                    //    msg = "IP地址格式错误";
                    //    return false;
                    //}
                    //ip = CommFunc.ConvertDBNullToString(ar[0]);
                    //port = CommFunc.ConvertDBNullToInt32(ar[1]);
                    string ps1 = IniHepler.GetConfig(WebConfig.LpFileName, "Automatic", "Port");
                    port  = CommFunc.ConvertDBNullToInt32(ps1);
                    start = true;
                }
                /////////////////////////////////////////
                string    data         = JsonHelper.Serialize(vm);
                IPAddress host         = IPAddress.Parse(ip);
                Socket    clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                clientSocket.ReceiveTimeout = 1000;
                clientSocket.SendTimeout    = 1000;
                byte[] dd = System.Text.Encoding.Default.GetBytes(data);
                lock (CacheMgr.staticLocker)
                {
                    clientSocket.Connect(host, port);
                    clientSocket.Send(dd);
                    if (clientSocket.Connected)
                    {
                        clientSocket.Shutdown(SocketShutdown.Both);
                    }
                    clientSocket.Close();
                }
                rst = true;
            }
            catch (Exception ex)
            {
                FileLog.WriteLog("网络发送数据错误:" + ex.Message + ex.StackTrace);
                msg = ex.Message;
            }
            return(rst);
        }
Exemple #7
0
        /// <summary>
        /// 下发命令数据
        /// </summary>
        /// <param name="tags"></param>
        /// <param name="dataValue"></param>
        /// <returns></returns>
        public APIRst SendVal(List <string> tags, string dataValue)
        {
            List <object> dd  = new List <object>();
            APIRst        rst = new APIRst()
            {
                rst = true
            };

            try
            {
                DataTable dtInfo = bll.GetTagInfo(string.Join(",", tags.ToArray()));
                foreach (var k in tags)
                {
                    DataRow[] arr = dtInfo.Select("LpszDbVarName='" + k + "'");
                    if (arr.Count() == 0)
                    {
                        dd.Add(new { tag = k, rst = false, msg = "没有此采集点" });
                        continue;
                    }
                    CommandVModel cmd = ModelHandler <CommandVModel> .FillModel(arr[0]);

                    cmd.Action        = 1;
                    cmd.LpszDbVarName = CommFunc.ConvertDBNullToString(arr[0]["TagName"]);
                    cmd.DataValue     = dataValue;
                    cmd.IsNDb         = true;
                    bll.UpdateMapDataVal(cmd.Module_id, cmd.Fun_id, cmd.DataValue);
                    //
                    ListenVModel vm = new ListenVModel()
                    {
                        cfun = ListenCFun.cmd.ToString(), content = JsonHelper.Serialize(cmd)
                    };
                    string msg = "";
                    bool   rr  = CacheMgr.SendCollectVal(vm, out msg);
                    dd.Add(new { tag = k, rst = rr, msg = msg });
                }
                rst.data = dd;
            }
            catch (Exception ex)
            {
                rst.rst  = false;
                rst.data = "";
                rst.err  = new APIErr()
                {
                    code = -1, msg = ex.Message
                };
            }
            return(rst);
        }
Exemple #8
0
        private void AssData(string rst)
        {
            ListenVModel vm = JsonHelper.Deserialize <ListenVModel>(rst);

            if (vm == null)
            {
                FileLog.WriteLog("服务端获取的数据错误:" + rst);
            }

            if (vm.cfun.Trim().ToLower().Equals(ListenCFun.cmd.ToString().ToLower()))
            {
                CommandVModel cmd = JsonHelper.Deserialize <CommandVModel>(vm.content);
                if (cmd.TransferType == 4)
                {/*IOService通信*/
                    DataProcess.IOService.Collection.CollectionHelper.WriteVar(cmd);
                    //DataProcess.IOService.Collection.CollectionHelper.WriteVar(cmd.Ledger, cmd.HandledBY, cmd.LpszDbVarName, cmd.DataValue);
                }
                else
                {
                    DataProcess.YdDrive.Collection.CollectionHelper.Instance(cmd);
                }
            }
            else if (vm.cfun.Trim().ToLower().Equals(ListenCFun.collect.ToString().ToLower()))
            {
                CommandVModel cmd = JsonHelper.Deserialize <CommandVModel>(vm.content);
                if (cmd.TransferType == 4)
                {
                    DataProcess.YdProcess.Helper.IOServiceSaveCollectCache(cmd.LpszDbVarName, cmd.DataValue, cmd.CollectTime.Value, 2, true, AlarmType.Sue, "");
                }
            }
            else if (vm.cfun.Trim().ToLower().Equals(ListenCFun.addvar.ToString().ToLower()))
            {
                CommandVModel cmd = JsonHelper.Deserialize <CommandVModel>(vm.content);
                List <string> tag = JsonHelper.Deserialize <List <string> >(cmd.DataValue);
                DataProcess.IOService.Collection.CollectionHelper.Instance(cmd.HandledBY, tag);
            }
            else if (vm.cfun.Trim().ToLower().Equals(ListenCFun.config.ToString().ToLower()))
            {
                NCSys.Reset = false;
            }
            else
            {
                FileLog.WriteLog("下发命令类型未存在:" + rst);
            }
        }
Exemple #9
0
        /// <summary>
        /// 设置邮件接口信息
        /// </summary>
        /// <param name="MailFrom">邮件发送人</param>
        /// <param name="MailSmtpHost">邮件服务器地址</param>
        /// <param name="MailSmtpPassword">邮件登陆密码</param>
        /// <param name="MailSmtpUser">邮件登陆名</param>
        /// <returns></returns>
        public APIRst SetMailConfig(string MailFrom, string MailSmtpHost, string MailSmtpPassword, string MailSmtpUser)
        {
            APIRst rst = new APIRst();

            try
            {
                if (string.IsNullOrEmpty(MailFrom))
                {
                    throw new Exception(" 邮件发送人不能为空");
                }
                if (string.IsNullOrEmpty(MailSmtpHost))
                {
                    throw new Exception(" 邮件服务器地址不能为空");
                }
                if (string.IsNullOrEmpty(MailSmtpPassword))
                {
                    throw new Exception(" 邮件登陆密码不能为空");
                }
                if (string.IsNullOrEmpty(MailSmtpUser))
                {
                    throw new Exception(" 邮件登陆名不能为空");
                }

                rst.data = bll.SetMailConfig(MailFrom, MailSmtpHost, MailSmtpPassword, MailSmtpUser);

                WebConfig.GetSysConfig();
                ListenVModel vm = new ListenVModel();
                vm.cfun    = ListenCFun.config.ToString();
                vm.content = "";
                CacheMgr.BeginSend(vm);
            }
            catch (Exception ex)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = ex.Message;
                FileLog.WriteLog("系统配置-短信接口信息错误(SetAlarmCfg):" + ex.Message + ex.StackTrace);
            }
            return(rst);
        }
Exemple #10
0
        public bool SendCmd(CommandVModel cmd, bool backgroup = true)
        {
            string msg = "";

            if (cmd == null)
            {
                throw new Exception("远程控制为空");
            }
            //目的适应NB表
            if (cmd.TransferType == 4 && !string.IsNullOrEmpty(cmd.DataValue))
            {
                string fs = cmd.FunType + cmd.DataValue;
                string tagName = "", dataValue = "";
                tagName = bll.GetYdToFun_idIOService(cmd.Module_id, fs, out dataValue);
                if (!string.IsNullOrEmpty(tagName) && !string.IsNullOrEmpty(dataValue))
                {
                    cmd.LpszDbVarName = tagName;
                    cmd.DataValue     = dataValue;
                }
            }
            //
            cmd.IsUI = true;
            ListenVModel vm = new ListenVModel();

            cmd.IsUI   = true;
            vm.cfun    = ListenCFun.cmd.ToString();
            vm.content = JsonHelper.Serialize(cmd);
            lock (ydToGwlock)
            {
                if (backgroup == true)
                {
                    CacheMgr.BeginSend(vm);
                }
                else
                {
                    CacheMgr.SendCollectVal(vm, out msg);
                }
            }
            return(true);
        }
Exemple #11
0
        public APIRst CollectData(string dataValue)
        {
            APIRst rst = new APIRst()
            {
                rst = true
            };

            try
            {
                Pack pack = JsonHelper.Deserialize <Pack>(dataValue);
                if (pack == null || pack.Data == null || pack.Data.Count == 0)
                {
                    rst = new APIRst()
                    {
                        rst = false, data = "", err = new APIErr()
                        {
                            code = -2, msg = "没有值"
                        }
                    };
                    FileLog.WriteLog("接收到数据格式不正确:" + dataValue);
                    return(rst);
                }
                string key = pack.DevAddr + "." + pack.DisNo + "." + pack.EleNo + ".";
                SortedList <string, Data> e  = new SortedList <string, Data>();
                SortedList <string, Data> e4 = new SortedList <string, Data>();
                List <Data> ld = new List <Data>();
                foreach (Data dd in pack.Data)
                {
                    if (dd.FunType.Equals("E") || dd.FunType.Equals("E1") || dd.FunType.Equals("E2") || dd.FunType.Equals("E3") || dd.FunType.Equals("E4"))
                    {
                        string funType = dd.FunType;
                        if (dd.FunType.Equals("E"))
                        {
                            funType = "E0";
                        }
                        if (dd.Type == 0)
                        {
                            e.Add(funType, dd);
                        }
                        else
                        {
                            e4.Add(funType, dd);
                        }
                    }
                    else
                    {
                        ld.Add(dd);
                    }
                }
                if (this.AddType(ref e, ref ld, 0) == false)
                {
                    FileLog.WriteLog("接收到非冻结数据总电能不等于尖峰平谷:" + dataValue);
                }
                if (this.AddType(ref e4, ref ld, 1) == false)
                {
                    FileLog.WriteLog("接收到冻结数据总电能不等于尖峰平谷:" + dataValue);
                }
                //if (e.Count > 0)
                //{
                //    FileLog.WriteLog("接收到实时尖峰平谷数据:" + dataValue);
                //    FileLog.WriteLog("实时压栈数据:" + JsonHelper.Serialize(ld));
                //}
                //if (e4.Count > 0)
                //{
                //    FileLog.WriteLog("接收到冻结尖峰平谷数据:" + dataValue);
                //    FileLog.WriteLog("冻结压栈数据:" + JsonHelper.Serialize(ld));
                //}
                foreach (Data dd in ld)
                {
                    if (dd.FunType.Equals("E1") || dd.FunType.Equals("E2") || dd.FunType.Equals("E3") ||
                        dd.FunType.Equals("E5") || dd.FunType.Equals("E6") || dd.FunType.Equals("E6") || dd.FunType.Equals("E8") ||
                        dd.FunType.Equals("E9") || dd.FunType.Equals("E10") || dd.FunType.Equals("E11") || dd.FunType.Equals("E12"))
                    {
                        continue;
                    }
                    CommandVModel cmd = new CommandVModel();
                    cmd.Ledger       = WebConfig.Ledger;
                    cmd.TransferType = 4;
                    cmd.FunType      = dd.FunType;

                    cmd.LpszDbVarName = key + dd.FunType;
                    cmd.DataValue     = dd.DataValue;
                    cmd.CollectTime   = dd.Time;

                    ListenVModel vm = new ListenVModel()
                    {
                        cfun = ListenCFun.collect.ToString(), content = JsonHelper.Serialize(cmd)
                    };
                    string msg = "";
                    bool   rr  = CacheMgr.SendCollectVal(vm, out msg);
                    if ((dd.FunType.Equals("E") || dd.FunType.Equals("E4")) && rr == true)
                    {
                        FileLog.WriteLog("成功发送数据:" + vm.content);
                    }
                    //if (rr==true)
                    //    FileLog.WriteLog("成功发送数据:" + vm.content);
                }
            }
            catch (Exception ex)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = ex.Message;
                FileLog.WriteLog("获取采集信息错误:" + ex.Message + ex.StackTrace);
            }
            return(rst);
        }