/// <summary> /// ͬ���豸���ز��� /// </summary> /// <param name="devid">�豸ID</param> private void commiDevice(object arg) { string tag = Convert.ToString(arg); if (string.IsNullOrEmpty(tag)) return; isDownLoaded = false; SynDeviceParam syn = new SynDeviceParam(); isSuccessSynDevice = syn.CommiDevice(tag); while (!this.frmPrb.Visible) Thread.Sleep(100); isDownLoaded = true; }
public void ProcessRequest(HttpContext context) { //设备ID和下载指令,tag格式,其中多个设备和指令需以"|"分割 StreamReader reader = new StreamReader(context.Request.InputStream); string tag = reader.ReadToEnd(); if (string.IsNullOrEmpty(tag)) return; string cmd = basefun.valtag(tag, "指令"); if ("设备同步黑白名单" == cmd) { SynDeviceParam syn = new SynDeviceParam(); string msg = syn.downCardALL(); bool success = true; if (!string.IsNullOrEmpty(msg)) { success = false; msg = basefun.setvaltag("", "提示", msg); } msg = basefun.setvaltag(msg, "成功", success ? "true" : "false"); context.Response.Write(msg); } Debug.WriteLine(DateTime.Now.ToString("HH:mm.ss.fff") + " 发出请求"); string reqid = basefun.valtag(tag, "reqID"); //已经在处理请求的返回结果信息 if (reqlist.ContainsKey(reqid)) { reqParam reqparam = reqlist[reqid]; reqparam.dtreq = DateTime.Now; string[] devs = new string[0]; if (!string.IsNullOrEmpty(reqparam.reqdev)) devs = reqparam.reqdev.Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); if (reqparam.taglist.Count >= devs.Length) reqlist.Remove(reqid); string msg = ""; foreach (string t in reqparam.taglist) msg += t + ";"; Debug.WriteLine(DateTime.Now.ToString("HH:mm.ss.fff") + " 结果:" + msg); context.Response.Write(msg); return; } List<string> keys = new List<string>(); foreach (string k in reqlist.Keys) keys.Add(k); DateTime dt = DateTime.Now.AddMinutes(-1); foreach (string k in keys) { if (reqlist[k].dtreq < dt) reqlist.Remove(k); } string devid = basefun.valtag(tag, "设备ID"); if (string.IsNullOrEmpty(reqid) || string.IsNullOrEmpty(devid) || string.IsNullOrEmpty(cmd)) return; reqParam param = new reqParam(); param.reqid = reqid; param.reqdev = devid; reqlist.Add(reqid, param); //对设备启动或停止监控, patrol持续巡检 CommiManager mgr = CommiManager.GlobalManager; CommiTarget target = getService(); NameValueCollection info = new NameValueCollection(); string tagdev = basefun.setvaltag("", "reqID", reqid); tagdev = basefun.setvaltag(tagdev, "指令", cmd); string[] devids = devid.Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < devids.Length; i++) { tagdev = basefun.setvaltag(tagdev, "设备ID", devids[i]); //暂停巡检 info["device"] = devids[i]; if (null != target) { CmdFileTrans cmdtrans = new CmdFileTrans(false); cmdtrans.ExtService(CmdSrvType.HaltDevice, info); mgr.SendCommand(target, cmdtrans, true); } ThreadManager.QueueUserWorkItem(delegate(object obj) { syncommi(obj); }, tagdev); } }
/// <summary> /// 下载设备参数 /// </summary> /// <param name="tagdev">设备下载参数指令,tag格式</param> private static void syncommi(object objtag) { string tagdev = Convert.ToString(objtag); string reqid = basefun.valtag(tagdev, "reqID"); SynDeviceParam syn = new SynDeviceParam(); Debug.WriteLine(DateTime.Now.ToString("HH:mm.ss.fff") + " 启动通讯:" + reqid); bool success = syn.CommiDevice(tagdev); Debug.WriteLine(DateTime.Now.ToString("HH:mm.ss.fff") + " 完成通讯:" + reqid + " " + (success ? "成功" : "失败")); if (!reqlist.ContainsKey(reqid)) return; reqParam param = reqlist[reqid]; string devid = basefun.valtag(tagdev, "设备ID"); tagdev = basefun.setvaltag("", "设备ID", devid); tagdev = basefun.setvaltag(tagdev, "成功", success ? "true" : "false"); tagdev = basefun.setvaltag(tagdev, "完成时间", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); param.taglist.Add(tagdev); }