// 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); }
/// <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(); }
public bool BeginYdToGwConfig(string content) { ListenVModel vm = new ListenVModel(); vm.cfun = ListenCFun.addvar.ToString(); vm.content = content; CacheMgr.BeginSend(vm); return(true); }
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)); }
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); } }
/// <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); }
/// <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); }
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); } }
/// <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); }
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); }
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); }