public MainDataParsingService() { motorWord = new MotorModel(); batteryWord = new BmuModel(); mpptWord = new MpptModel(); ParsingService = this; CanFrame = new CanFrameModel(0, 0, new byte[8]); }
public void BytesToCanFrameConversion(ConcurrentQueue <byte> ByteQueue) { while ((ByteQueue.Count >= 12)) { byte tmp = 0; bool IsAvailable = false; byte[] tempArray = new byte[12]; ByteQueue.TryPeek(out tmp); if ((tmp == 0xFF)) { IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.Sync] = tmp; } IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.ByteID0] = tmp; } IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.ByteID1] = tmp; } IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.ByteCnt] = tmp; } IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.ByteData0] = tmp; } IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.ByteData1] = tmp; } IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.ByteData2] = tmp; } IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.ByteData3] = tmp; } IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.ByteData4] = tmp; } IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.ByteData5] = tmp; } IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.ByteData6] = tmp; } IsAvailable = ByteQueue.TryDequeue(out tmp); if (IsAvailable) { tempArray[(int)CanBytePosition.ByteData7] = tmp; } CanFrame = new CanFrameModel() { CANID = BitConverter.ToUInt16(tempArray, (int)CanBytePosition.ByteID0), CANCOUNT = tempArray[(int)CanBytePosition.ByteCnt], CANDATA = tempArray.Skip((int)CanBytePosition.ByteCnt + 1).ToArray(), }; ParseCanFrame(); } else { byte result; ByteQueue.TryDequeue(out result); } } }