Beispiel #1
0
        //对解出的帧,分命令进行处理
        private void CmdProcess(Package resp)
        {
            switch (resp.CMD)
            {
            case CmdEnum.CMD_INVENTORY:
                if ((InvReqFlg == false) && (AntiReqFlg == false) && (AutoReadHandler != null) && (resp.DataLen == UIDLEN))
                {
                    AutoReadEventArgs args = new AutoReadEventArgs();
                    args.comm.ReaderID = resp.ReaderID;
                    args.comm.addr     = AddrStr;
                    args.comm.port     = port_baud;
                    args.ant           = resp.Ant;
                    for (int i = 0; i < UIDLEN; i++)
                    {
                        args.UID[i] = resp.Datas[i];
                    }
                    AutoReadHandler.BeginInvoke(this, args, null, null);
                    return;
                }
                else if ((AntiReqFlg == true) && (resp.DataLen == UIDLEN))
                {
                    AntiResult.add(resp.Datas, resp.Ant);
                    return;
                }
                break;

            case CmdEnum.CMD_GPI_TRRIGER:
                if (GPITriggerHandler != null)
                {
                    GPITriggerEventArgs args = new GPITriggerEventArgs();
                    args.comm.ReaderID = resp.ReaderID;
                    args.comm.addr     = AddrStr;
                    args.comm.port     = port_baud;
                    if (resp.DataLen == 0)    //兼容前期未返回端口号的读写器软件
                    {
                        args.Gpi = GpiEnum.GPI_1;
                    }
                    else
                    {
                        args.Gpi = (GpiEnum)resp.Datas[0];
                    }
                    GPITriggerHandler.BeginInvoke(this, args, null, null);
                }
                return;

            default:
                break;
            }
            lock (Resp)
            {
                if (!WaitHeartBeatCmdResp || resp.CMD != HeartBeatCmd)
                {
                    Resp.copy(resp);
                }
                else
                {
                    HeartBeatResp.copy(resp);
                }
            }
        }
 private void HandlerHeatBeatResp(HeartBeatResp resp)
 {
     if (resp.OneWay)
     {
         ExchangeClient client = endpoint as ExchangeClient;
         client.Request(new HeartBeatReq(true));
     }
 }
        public HeartBeatResp S1_009(HeartBeatReq heartBeatReq)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();

            try
            {
                string strhbReq = LogHelper.GetObjectMemberString(heartBeatReq);
                string strLog   = String.Format("Req:{0}:{{{1}}}", RequestIP, strhbReq);
                _log.Info(strLog);
            }
            catch (Exception ex)
            {
                string strLogErr = String.Format("Req Log Exception:{0}", ex.Message);
                _log.Error(strLogErr);
            }

            HeartBeatResp hbResponce = new HeartBeatResp();

            hbResponce.respCode = "9999";
            try
            {
                if (!String.IsNullOrEmpty(heartBeatReq.reqSysDate) && !String.IsNullOrEmpty(heartBeatReq.operationCode) && !String.IsNullOrEmpty(heartBeatReq.cityCode) && !String.IsNullOrEmpty(heartBeatReq.deviceId) && !String.IsNullOrEmpty(heartBeatReq.channelType))
                {
                    hbResponce.respCode = "0000";
                }
                else
                {
                    hbResponce.respCode = "0001";
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message);
                if (null != ex.InnerException)
                {
                    _log.Error(ex.InnerException.Message);
                }
            }

            try
            {
                string strhbResp = LogHelper.GetObjectMemberString(hbResponce);
                string strLog    = String.Format("Resp:{{{0}}}", strhbResp);

                _log.Info(strLog);
            }
            catch (Exception ex)
            {
                string strLogErr = String.Format("Resp Log Exception:{0}", ex.Message);
                _log.Error(strLogErr);
            }

            sw.Stop();
            TimeSpan ts = sw.Elapsed;

            _log.Debug(ts.TotalMilliseconds);

            return(hbResponce);
        }
        public object Decode(Remoting.Channel ch, Packet packet)
        {
            BinaryDataInput input = new BinaryDataInput(packet.Content);
            int             type  = packet.Header.Type;

            if (type == Packet.FLAG_HANDSNAKE)
            {
                HandSnakeResp resp = new HandSnakeResp();
                resp.DeserializeTo(input);
                return(resp);
            }
            else if (type == Packet.FLAG_HEARTBEAT)
            {
                HeartBeatResp req = new HeartBeatResp();
                req.DeserializeTo(input);
                return(req);
            }
            else if (type == Packet.FLAG_KICK)
            {
                KickClient kick = new KickClient();
                kick.DeserializeTo(input);
                return(kick);
            }
            else if (type == Packet.FLAG_MESSAGE)
            {
                int  mid   = input.ReadInt();
                byte mType = input.ReadByte();
                if (mType == AbstractMessage.TYPE_RESPONSE)
                {
                    Response response = new Response(mid);
                    response.Sequence  = input.ReadInt();
                    response.ErrorCode = input.ReadInt();
                    response.ErrorDes  = input.ReadUTF();
                    if (response.ErrorCode == Response.OK)
                    {
                        ResponseArg respArg = ResponseMappingInfo.Instance.CreateResponseMapping(mid) as ResponseArg;
                        if (respArg == null)
                        {
                            log.Error("Failed to handle response message,Cause : Cloud not found response mapper id :" + mid);
                        }
                        respArg.DeserializeTo(input);
                        response.Content = respArg;
                    }
                    return(response);
                }
                else if (mType == AbstractMessage.TYPE_PUSH)
                {
                    Push push = new Push(mid);
                    push.Identity = input.ReadInt();
                    ResponseArg respArg = ResponseMappingInfo.Instance.CreateResponseMapping(mid) as ResponseArg;
                    if (respArg == null)
                    {
                        log.Error("Failed to handle push message,Cause : Cloud not found response mapper id :" + mid);
                    }
                    respArg.DeserializeTo(input);
                    push.Content = respArg;
                    return(push);
                }
                else if (mType == AbstractMessage.TYPE_BROADCAST)
                {
                    BroadCast broadcast = new BroadCast(mid);
                    broadcast.Identity = input.ReadInt();
                    ResponseArg respArg = ResponseMappingInfo.Instance.CreateResponseMapping(mid) as ResponseArg;
                    if (respArg == null)
                    {
                        log.Error("Failed to handle broadcast message,Cause : Cloud not found response mapper id :" + mid);
                    }
                    respArg.DeserializeTo(input);
                    broadcast.Content = respArg;
                    return(broadcast);
                }
            }
            return(null);
        }