示例#1
0
def main(dataPath, datacollector, display):
    """Main function of the odb2collector.

    :param String        dataPath:         Directory where the data will be stored.
    :param DataCollector datacollector:    DataCollector instance used.
    :param Display       display:          Display instance used to show messages.
    """
    ## Numer of bytes stored
    loggedBytes = 0

    ## Initiate the compressor
    gzip = Compressor()
    gzip.start()

    logEnding = CONFIGURATION["logending"]

    while True:
        message = [
            "Logged %skB" % (loggedBytes / 1024)
        ]
        
        print "\n".join(message)
        
        display.write_message(message)

        datafile = "%s/%s.%s" % (dataPath, _getCurrentTime(), logEnding)
        
        loggedBytes += datacollector.write_data_log(
            datafile,
            nbrOfOBDFrames=1000,
            messagesPerTimestamp=20
        )

        print "Collected data log..."
        gzip.add_file_for_compression(datafile)
def main(dataPath, datacollector, display):
    """Main function of the odb2collector.

    :param String        dataPath:         Directory where the data will be stored.
    :param DataCollector datacollector:    DataCollector instance used.
    :param Display       display:          Display instance used to show messages.
    """
    ## Numer of bytes stored
    loggedBytes = 0

    ## Initiate the compressor
    gzip = Compressor()
    gzip.start()

    logEnding = CONFIGURATION["logending"]

    while True:
        message = ["Logged %skB" % (loggedBytes / 1024)]

        print "\n".join(message)

        display.write_message(message)

        datafile = "%s/%s.%s" % (dataPath, _getCurrentTime(), logEnding)

        loggedBytes += datacollector.write_data_log(datafile,
                                                    nbrOfOBDFrames=1000,
                                                    messagesPerTimestamp=20)

        print "Collected data log..."
        gzip.add_file_for_compression(datafile)
def main(dataPath, datacollector, display):
    """Main function of the odb2collector.

    :param String        dataPath:         Directory where the data will be stored.
    :param DataCollector datacollector:    DataCollector instance used.
    :param Display       display:          Display instance used to show messages.
    """
    ## Numer of bytes stored
    loggedBytes = 0

    while True:

        message = [
            "Logged %skB" % (loggedBytes / 1024)
        ]
        
        print "\n".join(message)
        
        display.write_message(message)

        datafile = "%s/%s.log_v2" % (dataPath, _getCurrentTime())

        loggedBytes += datacollector.write_data_log(
            datafile,
            nbrOfOBDFrames=50000,
            messagesPerTimestamp=50
        )
    def write_data_log(self, logFileName, nbrOfOBDFrames, messagesPerTimestamp):
        """Stores an data log file to the given location.

        :param String  logFileName:             Path to store the log file.
        :param Integer nbrOfOBDFrames:          Number of OBD frames to be stored inside the log.
                                                This parameter does NOT affect the number of time
                                                stamps or GPS reports.
        :param Integer messagesPerTimestamp:    Number of OBD2 frames share the same time stamp.

        :return:    Returns the number of bytes stored in the log.
        :rtype:     Integer
        """
        ## create the log file
        logf  = file(logFileName, "ab")
        
        ## performance optimization
        ## reduces the __getattr__ calls for the major instances
        write      = logf.write
        gpsreader  = self._gpsreader
        obd2reader = self._obd2reader

        ## number of bytes written
        bytes = 0

        ## collect the requested number of OBD2 frames
        for idx in xrange(0, nbrOfOBDFrames, messagesPerTimestamp):

            ## time stamp
            timestamp = "#TIME__%s\n" % _getCurrentTime()
            write(timestamp)
            bytes += len(timestamp)

            ## read the number of frames requested
            try:
                logEntries = obd2reader.read_frames(nbrOfOBDFrames)
            except:
                obd2reader.reconnect()
                continue
            
            ## store the frames in the log
            logEntries = "\n".join(logEntries)
            write("%s\n" % logEntries)
            bytes += len(logEntries) + 1

            ## append the gpslog entries, when there are any
            gpsreports = ["#GPS__%s\n" % entry for entry in gpsreader.get_current_gps_entries()]
            
            ## no GPS report collected since last run
            if not gpsreports:
                continue

            ## store the reports in the log
            gpsreports = "\n".join(gpsreports)
            write("%s\n" % gpsreports)
            bytes += len(gpsreports) + 1


        # close the log file
        logf.close()
        
        ## return the number of bytes written
        return bytes
示例#5
0
    def write_data_log(self, logFileName, nbrOfOBDFrames,
                       messagesPerTimestamp):
        """Stores an data log file to the given location.

        :param String  logFileName:             Path to store the log file.
        :param Integer nbrOfOBDFrames:          Number of OBD frames to be stored inside the log.
                                                This parameter does NOT affect the number of time
                                                stamps or GPS reports.
        :param Integer messagesPerTimestamp:    Number of OBD2 frames share the same time stamp.

        :return:    Returns the number of bytes stored in the log.
        :rtype:     Integer
        """
        ## create the log file
        logf = file(logFileName, "ab")

        ## performance optimization
        ## reduces the __getattr__ calls for the major instances
        write = logf.write
        gpsreader = self._gpsreader
        obd2reader = self._obd2reader

        ## number of bytes written
        bytes = 0

        ## collect the requested number of OBD2 frames
        for idx in xrange(0, nbrOfOBDFrames, messagesPerTimestamp):

            ## time stamp
            timestamp = "#TIME__%s\n" % _getCurrentTime()
            write(timestamp)
            bytes += len(timestamp)

            ## read the number of frames requested
            try:
                logEntries = obd2reader.read_frames(nbrOfOBDFrames)
            except:
                obd2reader.reconnect()
                continue

            ## store the frames in the log
            logEntries = "\n".join(logEntries)
            write("%s\n" % logEntries)
            bytes += len(logEntries) + 1

            ## append the gpslog entries, when there are any
            gpsreports = [
                "#GPS__%s\n" % entry
                for entry in gpsreader.get_current_gps_entries()
            ]

            ## no GPS report collected since last run
            if not gpsreports:
                continue

            ## store the reports in the log
            gpsreports = "\n".join(gpsreports)
            write("%s\n" % gpsreports)
            bytes += len(gpsreports) + 1

        # close the log file
        logf.close()

        ## return the number of bytes written
        return bytes