Ejemplo n.º 1
0
        /// <summary>
        /// 启动 Hmi Pro
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        ExecRest startHmiPro(object data)
        {
            var start = (CmdActions.StartHmiPro)data;
            var rest  = new ExecRest();

            try {
                rest.DebugMessage = YUtil.CheckProcessIsExist(hmiProName) ? "HmiPro 进程存在" : "HmiPro 进程不存在";
                //强制启动
                if (start.IsForced)
                {
                    YUtil.KillProcess(hmiProName);
                    YUtil.Exec(hmiProPath, start.StartArgs); rest.Message = "强制启动 HmiPro 成功";
                    //只有当进程不存在的时候才启动
                }
                else if (!YUtil.CheckProcessIsExist(hmiProName))
                {
                    YUtil.Exec(hmiProPath, start.StartArgs);
                    rest.Message = "启动 HmiPro 成功";
                }
                rest.Code = ExecCode.Ok;
            } catch (Exception e) {
                rest.Message      = "启动 HmiPro 失败";
                rest.Code         = ExecCode.StartHmiProFailed;
                rest.DebugMessage = e.Message;
            }
            return(rest);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// http相关处理
        /// </summary>
        /// <param name="ar"></param>
        private void processHttpContext(IAsyncResult ar)
        {
            Logger.Info("[HttpParse] 接受到数据");
            var context = HttpListener.EndGetContext(ar);

            HttpListener.BeginGetContext(processHttpContext, null);
            var response = context.Response;
            var request  = context.Request;

            response.AddHeader("Asylum", "IntelliManu Pro Asylum");
            response.ContentType = "text/plain;charset=UTF-8";
            if (request.ContentType != null)
            {
                Logger.Debug("[HttpParse] Request 类型: " + request.ContentType);
            }
            ExecRest rest     = new ExecRest();
            var      postData = new StreamReader(request.InputStream, request.ContentEncoding).ReadToEnd();

            try {
                var cmd = JsonConvert.DeserializeObject <Cmd>(postData);
                cmd.Where = CmdWhere.FromHttp;
                rest      = cmdPrase.Exec(cmd);
            } catch (Exception e) {
                rest.Code         = ExecCode.FormatError;
                rest.DebugMessage = e.Message;
                rest.Message      = "提交格式错误,不满足 Cmd 的格式";
                Logger.Error("解析命令出错:" + postData, e);
            }
            using (var stream = response.OutputStream) {
                var data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(rest));
                stream.Write(data, 0, data.Length);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 关闭 HmiPro
        /// 目前仅支持强制关闭
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        ExecRest closeHmiPro(object data)
        {
            var close = (CmdActions.CloseHmiPro)data;
            var rest  = new ExecRest();

            try {
                YUtil.KillProcess(hmiProName);
                rest.Message = "关闭 HmiPro 成功";
                rest.Code    = ExecCode.Ok;
            } catch (Exception e) {
                rest.DebugMessage = e.Message;
                rest.Code         = ExecCode.CloseHmiProFailed;
            }
            return(rest);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 对外接口,解析 Cmd
        /// </summary>
        /// <param name="cmd"></param>
        /// <returns></returns>
        public ExecRest Exec(Cmd cmd)
        {
            Logger.Debug("[CmdParseService] 执行命令:" + cmd.Action);
            var rest  = new ExecRest();
            var types = YUtil.GetTypes(cmd.Action, Assembly.GetExecutingAssembly());

            if (types.Count == 1)
            {
                var type = types[0];
                if (executors.TryGetValue(type, out var exec))
                {
                    var data = cmd.Args != null
                        ? JsonConvert.DeserializeObject(JsonConvert.SerializeObject(cmd.Args), type)
                        : null;

                    try {
                        rest = exec(data);
                    } catch (Exception e) {
                        rest.DebugMessage = e.Message;
                        rest.Code         = ExecCode.ExecFailed;
                        rest.Message      = "执行解析逻辑异常";
                    }
                }
                else
                {
                    rest.Code    = ExecCode.NotFoundAction;
                    rest.Message = "Action 对应的 Type 未注册";
                }
            }
            else if (types.Count > 1)
            {
                rest.Code    = ExecCode.MapManyTypes;
                rest.Message = "Action 对应了多个 Types";
            }
            else
            {
                rest.Code    = ExecCode.NotFoundType;
                rest.Message = "Action 未对应 Type";
            }
            return(rest);
        }