void YZXCPU_Receiver_MessageReceivedEvent(object sender,
                                                  YZXRequestReceivedEventArgs <YZXCPURequest> e)
        {
            YZXCPURequest  req      = e.RequestMessage;
            string         id       = e.ResponseReceiverId;
            YZXCPUResponse response = ParseHMIRequest(req);

            Server.SendResponse(id, response);
        }
        /// <summary>
        /// 解析接受到的请求
        /// </summary>
        /// <param name="CPURequest">CPU请求</param>
        /// <returns>CPU响应</returns>
        public YZXCPUResponse ParseHMIRequest(YZXCPURequest CPURequest)
        {
            string id = CPURequest.ResponseReceiverId;

            YZXCPUResponse response = new YZXCPUResponse();

            response.OPCode = CPURequest.OPCode;

            string address = CPURequest.OPAddress;

            response.OPAddress = CPURequest.OPAddress;


            switch (CPURequest.OPCode)
            {
            case (int)YZXCPUOPType.ReadUshort:
                return(ReadUshort(CPURequest));

            case (int)YZXCPUOPType.WriteUshort:
                break;

            case (int)YZXCPUOPType.ReadBit:
                break;

            case (int)YZXCPUOPType.WriteBit:
                break;

            case (int)YZXCPUOPType.SetBit:
                break;

            case (int)YZXCPUOPType.ResetBit:
                break;

            case (int)YZXCPUOPType.ReadUint:
                return(ReadUint(CPURequest));

            case (int)YZXCPUOPType.WriteUint:
                break;

            case (int)YZXCPUOPType.GetAvailableMemery:
                return(GetAvailableMemery(CPURequest));

            case (int)YZXCPUOPType.GetAvailableUnit:
                return(GetAvailableUnit(CPURequest));
            }

            return(response);
        }
        private YZXCPUResponse GetAvailableUnit(YZXCPURequest CPURequest)
        {
            string id = CPURequest.ResponseReceiverId;

            YZXCPUResponse response = new YZXCPUResponse();

            response.OPCode    = CPURequest.OPCode;
            response.OPAddress = CPURequest.OPAddress;

            List <string> Names = new List <string>();

            foreach (YZXUnit memory in Units.Values)
            {
                Names.Add(memory.Name);
            }

            response.OPString[0] = string.Join(",", Names);

            return(response);
        }
        private YZXCPUResponse ReadUint(YZXCPURequest CPURequest)
        {
            string id = CPURequest.ResponseReceiverId;

            YZXCPUResponse response = new YZXCPUResponse();

            response.OPCode = CPURequest.OPCode;

            string address = CPURequest.OPAddress;

            response.OPAddress = CPURequest.OPAddress;

            uint u = (uint)GetUint(address);

            response.OPValue = BitConverter.GetBytes(u);
            Console.WriteLine(string.Format("响应了请求{0} -> {1} -> {2} {3}",
                                            response.OPAddress,
                                            u,
                                            response.OPValue[0],
                                            response.OPValue[1]));
            return(response);
        }
        private YZXCPUResponse GetAvailableMemery(YZXCPURequest CPURequest)
        {
            string id = CPURequest.ResponseReceiverId;

            YZXCPUResponse response = new YZXCPUResponse();

            response.OPCode    = CPURequest.OPCode;
            response.OPAddress = CPURequest.OPAddress;

            List <string> Names   = new List <string>();
            List <int>    Lengths = new List <int>();

            foreach (YZXCPUMemory memory in Mermories.Values)
            {
                Names.Add(memory.Name);
                Lengths.Add(memory.Length);
            }

            response.OPString[0] = string.Join(",", Names);
            response.OPString[1] = string.Join(",", Lengths);

            return(response);
        }