Listing 2. DriveAlert Class

class GetImage(threading.Thread):
    def __init__(self, cam = None, numImages = 1):
        self.cam       = cam
        self.JobBegin  = -1
        self.camCmd    = CamCOMMANDS[cam]
        self.numImages = NumCamImages[cam]
        self.Zip = None
        threading.Thread.__init__(self)

    def run(self):
        for i in range(self.numImages):
            self.JobBegin =
int(time.strftime("%H%M%S",time.localtime(time.time())))
            if QUIET == 0:
                print 'Getting %s image' %self.cam
            filename = time.strftime("%H%M%S",
time.localtime(time.time())) + '.jpg'
            execcmd = self.camCmd %filename
            self.p = popen2.Popen3("exec " + execcmd, 1024)
            self.errReader = PipeReader(self.p.childerr);
self.errReader.start()
            self.outReader = PipeReader(self.p.fromchild);
self.outReader.start()
            try:
                self.p.wait()
            except OSError, (errno, errnostr):
                if QUIET == 0:
                    print 'ERROR: GetImage self.p.wait Errno %s: %s'
%(`errno`, `errnostr`)
            except:
                if QUIET == 0:
                    print 'ERROR: self.p.wait Unknown error'
            time.sleep(IMAGE_DELAY)
        #Popen complete - create zipfiles
        self.Zip = ZipIt(self.cam)
        self.Zip.start()
        self.Zip.join() #Wait on zip file creation