public void it_builds_a_DataFrame_parsing_string() { var text = @"Data Value, Data Label 12, twelve 11, eleven"; var dataFrame = DataFrameParser.Parse(text); dataFrame[0, 0].Should().Be(12); }
private void ProcessData() { while (receivedData.Count >= 256) { // skip to byte that indicates the start of a data frame bool lookingForFrame = true; while (lookingForFrame && receivedData.Count >= 128) { var nextByte = receivedData.Dequeue(); var followingByte = receivedData.Peek(); if (nextByte == DataFrameParser.MessageEnd && followingByte == DataFrameParser.MessageStart) { lookingForFrame = false; break; } } if (lookingForFrame) { continue; } byte messageStart = receivedData.Dequeue(); byte messageSize = receivedData.Dequeue(); char messageType = (char)receivedData.Dequeue(); if (messageSize < 4) { continue; } // message size minus four reserved bytes byte[] data = new byte[messageSize - 4]; for (int i = 0; i < data.Length; i++) { data[i] = receivedData.Dequeue(); } byte messageEnd = receivedData.Dequeue(); if (messageType == CommandType.Status) { StatusFrameReceived?.Invoke(DataFrameParser.ParseStatusFrame(data)); } else { DataFrameReceived?.Invoke(DataFrameParser.ParseDateFrame(data, messageType)); } } }