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); }