コード例 #1
0
        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);
        }
コード例 #2
0
 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);
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }