bool ReadBytesSetRead(SerialPort serialPort, AddressSection currentAddress, LoggerInformation loggerInformation, List <Hex> hexes) { var msg = ReadBytes(serialPort); lengthToRead = MaxReadingLength; if (msg.Equals("System.TimeoutException")) { return(false); } if ((recievemsg.Count > 8) && (recievemsg[0] == 0x00)) { switch (loggerInformation.LoggerType) { //MonT2 case 1: loggerInformation.MemoryStart[8] = 0x0000; loggerInformation.MemoryMax[8] = ((recievemsg[13] & 0xFF) << 8 | (recievemsg[12] & 0xFF)) * 2; if (MonT2Overflown) { loggerInformation.MemoryMax[8] = 0x81c0; } break; //MonT case 3: loggerInformation.MemoryStart[0] = 0x0000; loggerInformation.MemoryMax[0] = 0x2000; break; //G4 case 6: loggerInformation.MemoryStart[4] = (recievemsg[loggerInformation.RequestMemoryStartPointer + 1]) << 8 | (recievemsg[loggerInformation.RequestMemoryStartPointer]); loggerInformation.MemoryMax[4] = (recievemsg[loggerInformation.RequestMemoryMaxPointer + 1]) << 8 | (recievemsg[loggerInformation.RequestMemoryMaxPointer]); if (loggerInformation.MemoryStart[4] > loggerInformation.MemoryMax[4]) { hexes.Add(new Hex("FD0000", loggerInformation.MemoryStart[4].ToString("x04"))); loggerInformation.MemoryStart[4] = 0x0000; loggerInformation.MemoryMax[4] = 0x8000; } else { hexes.Add(new Hex("FD0000", "0000")); } if (loggerInformation.MemoryMax[4] < 80) { loggerInformation.MemoryMax[4] = 80; } break; } currentAddress.LengthMSB = (byte)((lengthToRead >> 8) & 0xff); currentAddress.LengthLSB = (byte)(lengthToRead & 0xff); return(true); } return(false); }
AddressSection RetrieveMaxAddress(LoggerInformation loggerInformation, AddressSection currentAddress) { if (lengthToRead >= (loggerInformation.MemoryMax[currentAddress.MemoryNumber] - currentAddress.MemoryAddress) && currentAddress.MemoryNumber != 8) { recoverCount = 0; lengthToRead = loggerInformation.MemoryMax[currentAddress.MemoryNumber] - currentAddress.MemoryAddress; currentAddress.MemoryAddress = loggerInformation.MemoryMax[currentAddress.MemoryNumber]; currentAddress.LengthMSB = (byte)((lengthToRead >> 8) & 0xff); currentAddress.LengthLSB = (byte)(lengthToRead & 0xff); } return(currentAddress); }
AddressSection GetNextAddress(AddressSection currentAddress, LoggerInformation loggerInformation) { if (currentAddress.MemoryAddress < loggerInformation.MemoryMax[currentAddress.MemoryNumber]) { currentAddress.MemoryAddress = ((currentAddress.MemoryAddMSB & 0xff) << 8) | (currentAddress.MemoryAddLSB & 0xff); currentAddress.MemoryAddress += lengthToRead; if (currentAddress.MemoryAddress >= loggerInformation.MemoryMax[currentAddress.MemoryNumber]) { lengthToRead = lengthToRead - currentAddress.MemoryAddress + loggerInformation.MemoryMax[currentAddress.MemoryNumber]; currentAddress.MemoryAddMSB = (byte)((loggerInformation.MemoryMax[currentAddress.MemoryNumber] >> 8) & 0xff); currentAddress.MemoryAddLSB = (byte)(loggerInformation.MemoryMax[currentAddress.MemoryNumber] & 0xff); } else { currentAddress.MemoryAddMSB = (byte)((currentAddress.MemoryAddress >> 8) & 0xff); currentAddress.MemoryAddLSB = (byte)((currentAddress.MemoryAddress) & 0xff); } return(currentAddress); } else { while (currentAddress.MemoryNumber < loggerInformation.MaxMemory) { currentAddress.MemoryNumber++; if (loggerInformation.MemoryMax[currentAddress.MemoryNumber] != 0) { if (loggerInformation.MemoryMax[currentAddress.MemoryNumber] > loggerInformation.MemoryStart[currentAddress.MemoryNumber]) { lengthToRead = MaxReadingLength; currentAddress.MemoryAddress = loggerInformation.MemoryStart[currentAddress.MemoryNumber]; currentAddress.MemoryAddMSB = (byte)((currentAddress.MemoryAddress >> 8) & 0xff); currentAddress.MemoryAddLSB = (byte)(currentAddress.MemoryAddress & 0xff); return(currentAddress); } } } } currentAddress.MemoryNumber++; return(currentAddress); }
bool ReadBytesReadLogger(SerialPort serialPort, LoggerInformation loggerInformation, AddressSection currentAddress, List <Hex> Hexes) { lengthToRead = MaxReadingLength; var msg = ReadBytes(serialPort); var addressRead = currentAddress.MemoryNumber.ToString("x02") + currentAddress.MemoryAddMSB.ToString("x02") + currentAddress.MemoryAddLSB.ToString("x02"); if (msg.ToString() == "System.TimeoutException") { return(false); } if (msg.Length >= lengthToRead || currentAddress.MemoryAddress == loggerInformation.MemoryMax[currentAddress.MemoryNumber]) { var finalmsg = string.Empty; if (msg.Length > 124) { if (loggerInformation.LoggerType == 1) { finalmsg = msg.ToString(12, 116); } else { finalmsg = msg.ToString(2, 116); } } else if ((msg.Length < (currentAddress.LengthLSB * 2) + 6) && currentAddress.MemoryNumber == 4) { return(false); } else { if (loggerInformation.LoggerType == 1) { finalmsg = msg.ToString(12, msg.Length - 12); } else { finalmsg = msg.ToString(2, msg.Length - 8); } } Hexes.Add(new Hex(addressRead, finalmsg)); } else if (currentAddress.MemoryNumber == 8) { var sendMessage = new byte[2]; sendMessage[0] = 0x00; sendMessage[1] = 0x55; serialPort.Write(sendMessage, 0, sendMessage.Length); return(false); } else { WriteBytes(new WakeUpByteWritter(), serialPort); ReadBytes(serialPort); return(false); } currentAddress.LengthMSB = (byte)((lengthToRead >> 8) & 0xff); currentAddress.LengthLSB = (byte)(lengthToRead & 0xff); return(true); }