static void ReadMultipleTest(Stream ecuStream, SerialPort port) { SsmPacket ecuInitRequest = SsmPacket.CreateEcuIdentifierRequest(); byte[] buffer = ecuInitRequest.Data; ecuStream.Write(buffer, 0, buffer.Length); Thread.Sleep(100); byte[] receiveBuffer = new byte[1000]; int expectedLength = 68; int receiveLength = ecuStream.Read(receiveBuffer, 0, receiveBuffer.Length); SsmPacket ecuInitResponse = SsmPacket.ParseResponse(receiveBuffer, 0, receiveLength); // TPS and IPW UInt32[] addresses = new UInt32[] { 0x29, 0x20 }; for (int i = 0; i < 1000 && !Console.KeyAvailable; i++) { SsmPacket readRequest = SsmPacket.CreateMultipleReadRequest(addresses); buffer = readRequest.Data; ecuStream.Write(buffer, 0, buffer.Length); Thread.Sleep(100); expectedLength = 21; receiveLength = ecuStream.Read(receiveBuffer, 0, expectedLength); if (!Check("ReceiveLength", receiveLength, expectedLength)) { if (port != null) { port.DiscardInBuffer(); port.DiscardOutBuffer(); } continue; } SsmPacket readResponse = SsmPacket.ParseResponse(receiveBuffer, 0, receiveLength); if (!Check("CommandID", readResponse.Command, SsmCommand.ReadAddressesResponse)) { if (port != null) { port.DiscardInBuffer(); port.DiscardOutBuffer(); } continue; } Console.WriteLine(readResponse.Values[0] + " " + readResponse.Values[1]); } }
public void SsmPacketMultipleReadRequest() { List <int> addresses = new List <int>(); addresses.Add(0x000029); addresses.Add(0x000020); SsmPacket packet = SsmPacket.CreateMultipleReadRequest(addresses); IList <byte> expected = SamplePacketData.MultipleReadRequest; Utility.CompareArrays("MultipeReadRequest", expected, packet.Data); Assert.AreEqual(SsmDirection.ToEcu, packet.Direction, "Direction"); Assert.AreEqual(SsmCommand.ReadAddressesRequest, packet.Command, "Command"); Assert.AreEqual(2, packet.Addresses.Count, "Addresses.Count"); Assert.AreEqual(0x29, packet.Addresses[0], "Addresses[0]"); Assert.AreEqual(0x20, packet.Addresses[1], "Addresses[1]"); }
public void SsmPacketReadOverlongFromStream() { IList <int> addresses = new int[] { 1, 2, 3 }; SsmPacket request = SsmPacket.CreateMultipleReadRequest(addresses); IList <byte> values = new byte[] { 1, 2, 3 }; SsmPacket response = SsmPacket.CreateMultipleReadResponse(values); List <byte> buffer = new List <byte>(request.Data); buffer.AddRange(response.Data); buffer.AddRange(new byte[] { 0, 0, 0, 0 }); MemoryStream stream = new MemoryStream(buffer.ToArray()); SsmPacket actual = SsmPacketParser.ReadFromStream(stream); Utility.CompareArrays("ReadFromStream", response.Data, actual.Data); }
public void MockEcuStreamMultipleAddressRead() { MockEcuStream stream = MockEcuStream.CreateInstance(); List <int> addresses = new List <int>(); addresses.Add(0x000029); addresses.Add(0x000020); SsmPacket send = SsmPacket.CreateMultipleReadRequest(addresses); List <byte> payload = new List <byte>(); payload.Add(127); payload.Add(39); SsmPacket receive = SsmPacket.CreateMultipleReadResponse(payload); MockEcuStreamTest.SendReceive("Read", stream, send, receive); }
private void ReadFromStream(bool fragmented) { IList <int> addresses = new int[] { 1, 2, 3 }; SsmPacket request = SsmPacket.CreateMultipleReadRequest(addresses); IList <byte> values = new byte[] { 1, 2, 3 }; SsmPacket response = SsmPacket.CreateMultipleReadResponse(values); List <byte> buffer = new List <byte>(request.Data); buffer.AddRange(response.Data); MemoryStream stream = new MemoryStream(buffer.ToArray()); if (fragmented) { stream = FragmentedStream.GetInstance(stream); } SsmPacket actual = SsmPacketParser.ReadFromStream(stream); Utility.CompareArrays("ReadFromStream", response.Data, actual.Data); }
private void ReadFromStreamAsync(bool fragmented) { IList <int> addresses = new int[] { 1, 2, 3 }; SsmPacket request = SsmPacket.CreateMultipleReadRequest(addresses); IList <byte> values = new byte[] { 1, 2, 3 }; SsmPacket response = SsmPacket.CreateMultipleReadResponse(values); List <byte> buffer = new List <byte>(request.Data); buffer.AddRange(response.Data); MemoryStream stream = new MemoryStream(buffer.ToArray()); if (fragmented) { stream = FragmentedStream.GetInstance(stream); } SsmPacketParser parser = SsmPacketParser.CreateInstance(); IAsyncResult asyncResult = parser.BeginReadFromStream(stream, ReadCompleted, parser); asyncResult.AsyncWaitHandle.WaitOne(); Utility.CompareArrays("ReadFromStreamAsync", response.Data, this.packet.Data); }