Example #1
0
        public Package(CmdEnum cmd, Opcode_enum opcode, byte[] uid, byte id, byte[] data, byte offset, byte len)
        {
            int pos = 0;

            this.CMD      = cmd;
            this.ReaderID = id;
            this.States   = 0x00;
            if ((uid != null) && (uid.Length >= 8))
            {
                this.Opcode = opcode;
            }
            else
            {
                this.Opcode = Opcode_enum.NON_ADDRESS_MODE;
            }
            this.Ant = Antenna_enum.ANT_1;
            if (this.Opcode == Opcode_enum.ADDRESS_MODE)
            {
                this.DataLen = (byte)(len + 8);
                Array.Copy(uid, 0, this.Datas, pos, 8);
                pos += 8;
            }
            else
            {
                this.DataLen = len;
            }
            Array.Copy(data, offset, this.Datas, pos, len);
            this.BCC = tool.GetBCC(this.Datas, 0, this.DataLen);
        }
 public static void ReceiveData(CmdEnum cmd, byte[] data)
 {
     if (cmd == CmdEnum.ResLogin)
     {
         ResponseLogin login = SerializeTool.Deserialize <ResponseLogin>(data);
         ResponseLogin(login);
     }
     else if (cmd == CmdEnum.ResAlive)
     {
         ResponseAlive alive = SerializeTool.Deserialize <ResponseAlive>(data);
         ResponseAlive(alive);
     }
     else if (cmd == CmdEnum.ResRegister)
     {
         ResponseRegister response = SerializeTool.Deserialize <ResponseRegister>(data);
         ResponseRegister(response);
     }
     else if (cmd == CmdEnum.ResCreateRoom)
     {
         ResponseCreateRoom response = SerializeTool.Deserialize <ResponseCreateRoom>(data);
         ResponseCreateRoom(response);
     }
     else if (cmd == CmdEnum.ResGetRooms)
     {
         ResponseGetRooms response = SerializeTool.Deserialize <ResponseGetRooms>(data);
         ResponseGetRooms(response);
     }
     else if (cmd == CmdEnum.ResDeleteRoom)
     {
         ResponseDeleteRoom response = SerializeTool.Deserialize <ResponseDeleteRoom>(data);
         ResponseDeleteRoom(response);
     }
 }
Example #3
0
        private Status_enum WaitResp(CmdEnum CMD, ref byte[] data, ref byte len, int timeout)
        {
            int CheckTime = timeout / checkInterval;

            RespInit();
            while (CheckTime-- != 0)//等待接收
            {
                lock (Resp)
                {
                    if (Resp.CMD == CMD)
                    {
                        if (Resp.States == 0x00)
                        {
                            for (int i = 0; i < Resp.DataLen; i++)
                            {
                                if (data == null)
                                {
                                    break;
                                }
                                data[i] = Resp.Datas[i];
                            }
                            len = Resp.DataLen;
                        }
                        break;
                    }
                }
                System.Threading.Thread.Sleep(checkInterval);
            }
            return(CheckTime > 0 ? (Status_enum)Resp.States : Status_enum.NO_RESPONSE);
        }
Example #4
0
        /// <summary>
        /// 检测命令参数
        /// </summary>
        /// <param name="cmdLine">命令行</param>
        /// <param name="cmd">命令</param>
        /// <param name="args">参数</param>
        /// <returns></returns>
        private static bool CheckCmd(string cmdLine, out CmdEnum cmd, out List <string> args)
        {
            cmd = default(CmdEnum);

            if (string.IsNullOrEmpty(cmdLine))
            {
                args = new List <string>();
                return(false);
            }

            args = cmdLine.Trim().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
            var c = args.FirstOrDefault();

            args.RemoveAt(0);

            try
            {
                cmd = (CmdEnum)Enum.Parse(typeof(CmdEnum), c);
                return(true);
            }
            catch
            {
                return(false);
            }
        }
Example #5
0
 //绑定操作类型到类并指定回调函数
 internal static void Bind <T>() where T : BaseCmd
 {
     using (T tmp = (T)(Activator.CreateInstance(typeof(T), new byte[] { })))
     {
         CmdEnum cmd = tmp.type;
         CmdLenghtDic[cmd]     = tmp.Used + tmp.Length;
         CmdDynamicMapDic[cmd] = tmp.isDynamic;
     }
 }
Example #6
0
 public Package(CmdEnum cmd, byte id, Antenna_enum ant)
 {
     this.CMD      = cmd;
     this.ReaderID = id;
     this.States   = 0x00;
     this.Opcode   = Opcode_enum.NON_ADDRESS_MODE;
     this.Ant      = ant;
     this.DataLen  = 0x00;
     this.BCC      = 0x00;
 }
Example #7
0
 public Package(CmdEnum cmd, byte id, byte[] data, byte offset, byte len)
 {
     this.CMD      = cmd;
     this.ReaderID = id;
     this.States   = 0x00;
     this.Opcode   = Opcode_enum.NON_ADDRESS_MODE;
     this.Ant      = Antenna_enum.ANT_1;
     this.DataLen  = len;
     Array.Copy(data, offset, this.Datas, 0, len);
     this.BCC = tool.GetBCC(this.Datas, 0, this.DataLen);
 }
 public Package CreateCommand(CmdEnum cmd, byte[] param)
 {
     Package result = null;
     switch (cmd)
     {
         case CmdEnum.SetColor:
             result = new Package(1, (int)CmdEnum.SetColor, param);
             break;
     }
     return result;
 }
Example #9
0
        //转为指令形式,从value中的current位置开始输出数组指令到cmd
        public static CmdEnum ToCmd(byte[] value, ref int current, out byte[] array)
        {
            //Debug.Log("当前位置" + current);
            CmdEnum cmd = ByteToCmd(value, current);

            if (cmd != CmdEnum.Null)   //如果指令映射的长度大于当前指令值
            {
                //根据获取的类型值查询对应数组长度
                int length = CmdLenghtDic[cmd];
                //获取动态数据的长度
                if (CmdDynamicMapDic[cmd])
                {
                    length += value[current + 1] + (value[current + 2] << 8) + (value[current + 3] << 16) + (value[current + 4] << 24);
                }
                if (length > 0)
                {
                    array = new byte[length];
                }
                else
                {
                    array = new byte[1] {
                        (byte)CmdEnum.Null
                    };
                    //current += 1;
                    return(CmdEnum.Null);
                }
                for (int i = 0; i < length; i++)
                {
                    array[i] = value[current + i];
                }
                //移动游标
                current += length - 1;
            }
            else
            {
                //current += 1;
                cmd   = CmdEnum.Heartbeat;
                array = new byte[1] {
                    (byte)cmd
                };
            }
            return(cmd);
        }
Example #10
0
        public Frame CreateFrameByCmdEnum(CmdEnum cmdEnum, TimeSpan startTime)
        {
            Frame result = null;
            Command cmd = null;
            switch (cmdEnum)
            {
                case CmdEnum.SetColor:
                    cmd = new SetColor(Colors.Black){Channel = Command.DefaultChannel};
                    break;
                case CmdEnum.Fade:
                    var length = (short)(DefaultLength.TotalSeconds * TicksPerSec);
                    cmd = new FadeColor(Colors.Black, Colors.Black, length){Channel = Command.DefaultChannel};
                    break;
                case CmdEnum.Blink:
                    cmd = new BlinkColor(Colors.Black, 50){Channel = Command.DefaultChannel};
                    break;
            }
            if(cmd != null)
                result = new Frame(startTime, DefaultLength) { Command = cmd };

            return result;
        }
Example #11
0
        /// <summary>
        /// 执行命令
        /// </summary>
        /// <param name="cmd">指令</param>
        /// <param name="args">参数</param>
        /// <param name="port">服务器端口</param>
        /// <returns></returns>
        private static string Exec(CmdEnum cmd, List <string> args, int port)
        {
            using (var memCached = MemCached.Create(new IPEndPoint(IPAddress.Loopback, port)))
            {
                switch (cmd)
                {
                case CmdEnum.get:
                    if (args.Count != 1)
                    {
                        return(string.Empty);
                    }
                    try
                    {
                        var result = memCached.Get(args[0]);
                        if (result.Status != OprationStatus.No_Error)
                        {
                            return(result.Status.ToString());
                        }
                        return(result.Value.ToString());
                    }
                    catch
                    {
                        return("The Value Is A Unknow Object");
                    }

                case CmdEnum.set:
                    if (args.Count != 3)
                    {
                        return(string.Empty);
                    }

                    var state = memCached.Set(args[0], args[1], TimeSpan.FromSeconds(int.Parse(args[2])));
                    return(state.ToString());

                case CmdEnum.add:
                    if (args.Count != 3)
                    {
                        return(string.Empty);
                    }

                    state = memCached.Add(args[0], args[1], TimeSpan.FromSeconds(int.Parse(args[2])));
                    return(state.ToString());

                case CmdEnum.replace:
                    if (args.Count != 3)
                    {
                        return(string.Empty);
                    }

                    state = memCached.Replace(args[0], args[1], TimeSpan.FromSeconds(int.Parse(args[2])));
                    return(state.ToString());

                case CmdEnum.delete:
                    if (args.Count != 1)
                    {
                        return(string.Empty);
                    }
                    state = memCached.Delete(args[0]);
                    return(state.ToString());

                case CmdEnum.flush:
                    if (args.Count != 1)
                    {
                        return(string.Empty);
                    }
                    memCached.Flush(TimeSpan.FromSeconds(int.Parse(args[0])));
                    return("OK");

                case CmdEnum.touch:
                    if (args.Count != 2)
                    {
                        return(string.Empty);
                    }
                    state = memCached.Touch(args[0], TimeSpan.FromSeconds(int.Parse(args[1])));
                    return(state.ToString());

                case CmdEnum.stat:
                    var lines = memCached.Stat().Select(item => string.Format("{0} => {1}", item.Key, item.Value));
                    return(string.Join(Environment.NewLine, lines));

                default:
                    return(string.Empty);
                }
            }
        }
Example #12
0
 /// <summary>
 /// Sent a command to the TellyMate
 /// </summary>
 public void SendCommand(CmdEnum tellyMateCmd)
 {
     _ezb.Uart.SendSerial(TellyMatePort, TellyMateBaudRate, new byte[] { 27, (byte)tellyMateCmd });
 }
Example #13
0
 private void OnRadio_CheckedChanged(object sender, EventArgs e)
 {
     var radioBtn = sender as RadioButton;
     if(radioBtn != null && radioBtn.Checked)
     {
         int en = Int32.Parse(radioBtn.Tag.ToString());
         _cmdEnum = (CmdEnum) en;
     }
 }
Example #14
0
 public LoomInfo(CmdEnum _proto, byte[] _data)
 {
     Proto = _proto;
     data  = new byte[_data.Length];
     Array.Copy(_data, 0, data, 0, _data.Length);
 }
 public static void Request(CmdEnum cmd, byte[] data)
 {
     EasyLoom.Instance.AddSendInfo(new LoomInfo(cmd, data));
 }
Example #16
0
 private Status_enum WaitResp(CmdEnum CMD, ref byte[] data, ref byte len)
 {
     return(WaitResp(CMD, ref data, ref len, DEFAULT_TIMEOUT));
 }
 public static void SendData(CmdEnum cmd, byte[] data)
 {
     SocketManager.Instance.mSocket.SendMessage(data);
 }
Example #18
0
        /// <summary>
        /// 执行命令
        /// </summary>
        /// <param name="cmd">指令</param>
        /// <param name="args">参数</param>
        /// <param name="port">服务器端口</param>
        /// <returns></returns>
        private static string Exec(CmdEnum cmd, List <string> args, int port)
        {
            var keyNotExists = "The Key Is Not Exists";
            var keyHasExists = "The Key Has Exists";
            var ok           = "OK";

            using (var memCached = MemCached.Create(new IPEndPoint(IPAddress.Loopback, port)))
            {
                switch (cmd)
                {
                case CmdEnum.get:
                    if (args.Count != 1)
                    {
                        return(string.Empty);
                    }
                    try
                    {
                        var result = memCached.Get(args[0]);
                        if (result.Status == false)
                        {
                            return(keyNotExists);
                        }
                        return(result.Value.ToString());
                    }
                    catch
                    {
                        return("The Value Is A Unknow Object");
                    }

                case CmdEnum.set:
                    if (args.Count != 3)
                    {
                        return(string.Empty);
                    }

                    var state = memCached.Set(args[0], args[1], TimeSpan.FromSeconds(int.Parse(args[2])));
                    return(state ? ok : keyNotExists);

                case CmdEnum.add:
                    if (args.Count != 3)
                    {
                        return(string.Empty);
                    }

                    state = memCached.Add(args[0], args[1], TimeSpan.FromSeconds(int.Parse(args[2])));
                    return(state ? ok : keyHasExists);

                case CmdEnum.replace:
                    if (args.Count != 3)
                    {
                        return(string.Empty);
                    }

                    state = memCached.Replace(args[0], args[1], TimeSpan.FromSeconds(int.Parse(args[2])));
                    return(state ? ok : keyNotExists);

                case CmdEnum.delete:
                    if (args.Count != 1)
                    {
                        return(string.Empty);
                    }
                    state = memCached.Delete(args[0]);
                    return(state ? ok : keyNotExists);

                case CmdEnum.flush:
                    if (args.Count != 1)
                    {
                        return(string.Empty);
                    }
                    memCached.Flush(TimeSpan.FromSeconds(int.Parse(args[0])));
                    return(ok);

                default:
                    return(string.Empty);
                }
            }
        }
 public static void Receive(CmdEnum cmd, byte[] data)
 {
     EasyLoom.Instance.AddReceiveInfo(new LoomInfo(cmd, data));
 }