void HandleDataMessage(MessageHeader header, SecsMessage msg) { int systembyte = header.SystemBytes; if (header.DeviceId != DeviceId && msg.S != 9 && msg.F != 1) { _logger.MessageIn(msg, systembyte); _logger.Warning("Received Unrecognized Device Id Message"); SendDataMessageAsync(new SecsMessage(9, 1, false, "Unrecognized Device Id", Item.B(header.Bytes)), NewSystemId); return; } if (msg.F % 2 != 0) { if (msg.S != 9) { //Primary message _logger.MessageIn(msg, systembyte); PrimaryMessageReceived?.Invoke(this, new PrimaryMessageWrapper(this, header, msg)); return; } // Error message var headerBytes = (byte[])msg.SecsItem.Values; systembyte = BitConverter.ToInt32(new[] { headerBytes[9], headerBytes[8], headerBytes[7], headerBytes[6] }, 0); } // Secondary message _logger.MessageIn(msg, systembyte); TaskCompletionSourceToken ar; if (_replyExpectedMsgs.TryGetValue(systembyte, out ar)) { ar.HandleReplyMessage(msg); } }
private void HandleDataMessage(MessageHeader header, SecsMessage secsMessage) { var systemByte = header.SystemBytes; if (header.DeviceId != DeviceId && secsMessage.S != 9 && secsMessage.F != 1) { Logger.Error("Received Unrecognized Device Id Message"); SecsMessage replyWrongDeviceIdMsg = new SecsMessage( 9, 1, false, Resources.S9F1, Item.B(header.EncodeTo(new byte[10])));// 将header作为消息体返回 SendDataMessageAsync(replyWrongDeviceIdMsg, NewSystemId); if (_replyExpectedMsgs.TryGetValue(systemByte, out var ar1)) { ar1.HandleReplyMessage(replyWrongDeviceIdMsg); } return; } if (secsMessage.F % 2 != 0) { if (secsMessage.S != 9) { _taskFactory.StartNew((wrapper) => { PrimaryMessageReceived?.Invoke(this, wrapper as PrimaryMessageWrapper); }, new PrimaryMessageWrapper(this, header, secsMessage)); return; } // Error message var headerBytes = secsMessage.SecsItem.GetValues <byte>();// 解析出MessageHeader的Bytes systemByte = BitConverter.ToInt32(new byte[] { headerBytes[9], headerBytes[8], headerBytes[7], headerBytes[6] }, 0); } if (_replyExpectedMsgs.TryGetValue(systemByte, out var ar)) { ar.HandleReplyMessage(secsMessage); } }