/// <summary>
        /// 超级命令
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public Result SendSuperCmd(SuperCmdInfo info)
        {
            Result oResult = new Result();

            byte[] arrbType = { 0xFA, 0xFB, 0xFC };
            if (arrbType.ToList().Contains(info.type))
            {
                //正确执行后面的代码
            }
            else
            {
                oResult.message = "type参数错误";
                return(oResult);
            }

            try
            {
                CmdSuperCmd oCmdSuperCmd = new CmdSuperCmd(info);
                string      strCmd       = oCmdSuperCmd.GetPkg();
                lock (NICSServerProgram.mMyServer)
                {
                    var allSessions = NICSServerProgram.mMyServer.GetAllSessions();
                    int iCounter    = allSessions.Count(p => p.ClientID == info.client_id);
                    if (iCounter == 1)
                    {
                        MySession oMySession = allSessions.First(p => p.ClientID == info.client_id);
                        oMySession.MySend(strCmd);
                        NICSServerProgram.AddBypssMap(strCmd, DateTime.Now);
                        oResult.message = "命令下发成功";
                    }
                    else
                    {
                        oResult.message = "离线";
                    }
                }
            }
            catch (System.Exception ex)
            {
                oResult.message = ex.Message;
            }

            return(oResult);
        }
Exemple #2
0
        public CmdSuperCmd(SuperCmdInfo info)
        {
            KEY       = "CMD";
            BODY_KEY  = "BYPASS";
            CLINET_ID = info.client_id;

            List <byte> lst = new List <byte>();

            //控制器地址
            lst.Add(0xFA);
            //命令类型
            lst.Add(info.type);
            //参数1
            lst.Add(0);
            //参数2
            lst.Add(0);
            //参数3
            lst.Add(0);
            //参数4
            lst.Add(0);
            //参数5
            lst.Add(0);
            //参数6
            lst.Add(0x00);
            //参数7
            lst.Add(0x00);
            //参数8
            lst.Add(0x00);
            //计算校验(控制可以直接使用的)
            string strCrc = CRC.ToModbusCRC16(lst.ToArray(), true);  //是否翻转

            //16进制,转成16进制显示
            foreach (var m in lst)
            {
                CONTENT += Convert.ToString(m, 16).ToUpper().PadLeft(2, '0');
            }
            CONTENT = info.regulator_id + " " + info.host_ip + " " + info.host_port + " " + CONTENT + strCrc;
        }