def ModelStartCamera( refTime=None, raceFileName=None ): Shutdown() race = Model.race if race and race.enableUSBCamera: if refTime is None: refTime = race.startTime if raceFileName is None: raceFileName = Utils.getFileName() assert refTime is not None and raceFileName is not None if race.enableJChipIntegration: StartVideoBuffer( refTime, raceFileName ) else: PhotoFinish.SetCameraState( True ) return True return False
def StartVideoBuffer( refTime, raceFileName ): global videoBuffer if not videoBuffer: camera = PhotoFinish.SetCameraState( True ) if not camera: return False dirName = PhotoFinish.getPhotoDirName( raceFileName ) if not os.path.isdir( dirName ): try: os.makedirs( dirName ) except Exception as e: logException( e, sys.exc_info() ) return False videoBuffer = VideoBuffer( camera, refTime, dirName ) videoBuffer.start() return True
if __name__ == '__main__': import time import shutil race = Model.newRace() race._populate() app = wx.App(False) dirName = 'VideoBufferTest_Photos' if os.path.isdir(dirName): shutil.rmtree( dirName, True ) os.mkdir( dirName ) tRef = datetime.datetime.now() camera = PhotoFinish.SetCameraState( True ) vb = VideoBuffer.VideoBuffer( camera, tRef, dirName ) vb.start() time.sleep( 1.0 ) mainWin = wx.Frame(None, title="CrossMan", size=(600,400)) mainWin.Show() photoSyncDialog = PhotoSyncViewerDialog( mainWin, title = u"PhotoSyncViewer", size=(600,400) ) def doRefresh( bib ): t = (datetime.datetime.now() - tRef).total_seconds() wx.CallLater( 300, photoSyncDialog.refresh, vb, t, bib ) photoSyncDialog.Show() photoSyncDialog.reset() bib = 100 for d in xrange(0, 1000*60, 1000):
def Shutdown(): global videoBuffer if videoBuffer: videoBuffer.stop() videoBuffer = None PhotoFinish.SetCameraState( False )