def mainProgram(): global RestartApplication, clv # -------------------------------------------------------------------------- # Initialize # -------------------------------------------------------------------------- debug.deactivate() if not RestartApplication: clv = cmd.CommandLineVariables() debug.activate(clv.debug) FortiusAntBody.Initialize(clv) if debug.on(debug.Any): logfile.Open() logfile.Console("FortiusANT started") logfile.Write (' Restart=%s debug=%s' % (RestartApplication, clv.debug)) clv.print() logfile.Console("------------------") RestartApplication = False #------------------------------------------------------------------------------- # Component info #------------------------------------------------------------------------------- if debug.on(debug.Any): # ---------------------------------------------------------------------- if getattr(sys, 'frozen', False): logfile.Write('Windows executable started') else: logfile.Write('Python version started') # ---------------------------------------------------------------------- logfile.Write('Version info for the components' ) logfile.Write(githubWindowTitle()) s = " %20s = %s" logfile.Write(s % ('FortiusAnt', __version__ )) logfile.Write(s % ('antDongle', ant.__version__ )) logfile.Write(s % ('antFE', fe.__version__ )) logfile.Write(s % ('antHRM', hrm.__version__ )) logfile.Write(s % ('antPWR', pwr.__version__ )) logfile.Write(s % ('antSCS', scs.__version__ )) logfile.Write(s % ('bleDongle', bleDongle.__version__ )) logfile.Write(s % ('constants', constants.__version__ )) logfile.Write(s % ('debug', debug.__version__ )) logfile.Write(s % ('FortiusAntBody', FortiusAntBody.__version__ )) logfile.Write(s % ('FortiusAntCommand', cmd.__version__ )) if UseGui: logfile.Write(s % ('FortiusAntGui', gui.__version__ )) logfile.Write(s % ('logfile', logfile.__version__ )) if UseGui: logfile.Write(s % ('RadarGraph', RadarGraph.__version__ )) logfile.Write(s % ('settings', settings.__version__ )) logfile.Write(s % ('structConstants', sc.__version__ )) logfile.Write(s % ('TCXexport', TCXexport.__version__ )) logfile.Write(s % ('usbTrainer', usbTrainer.__version__ )) logfile.Write(s % ('argparse', argparse.__version__ )) # logfile.Write(s % ('binascii', binascii.__version__ )) # logfile.Write(s % ('math', math.__version__ )) logfile.Write(s % ('numpy', numpy.__version__ )) logfile.Write(s % ('os', os.name )) if os.name == 'nt': v = sys.getwindowsversion() logfile.Write((s + '.%s') % ('windows', v.major, v.minor)) logfile.Write(s % ('pickle', pickle.format_version )) logfile.Write(s % ('platform', platform.__version__ )) # logfile.Write(s % ('glob', glob.__version__ )) # logfile.Write(s % ('random', random.__version__ )) logfile.Write(s % ('sys (python)', sys.version )) # logfile.Write(s % ('struct', struct.__version__ )) # logfile.Write(s % ('threading', threading.__version__ )) # logfile.Write(s % ('time', time.__version__ )) logfile.Write(s % ('usb', usb.__version__ )) if UseGui: logfile.Write(s % ('wx', wx.__version__ )) logfile.Write('FortiusANT code flags') logfile.Write(s % ('UseMultiProcessing', UseMultiProcessing)) logfile.Write(s % ('UseGui', UseGui)) logfile.Write(s % ('UseBluetooth', UseBluetooth)) logfile.Write("------------------") if not clv.gui: # -------------------------------------------------------------------------- # Console only, no multiprocessing required to separate GUI # -------------------------------------------------------------------------- Console = clsFortiusAntConsole() Console.Autostart() elif not UseMultiProcessing: # -------------------------------------------------------------------------- # No multiprocessing wanted, start GUI immediatly # -------------------------------------------------------------------------- clv.PedalStrokeAnalysis = False app = wx.App(0) frame = frmFortiusAnt(None, clv) app.SetTopWindow(frame) frame.Show() if clv.autostart: frame.Autostart() app.MainLoop() else: # -------------------------------------------------------------------------- # Multiprocessing wanted, start GUI in it's own process # -------------------------------------------------------------------------- # https://docs.python.org/3/library/multiprocessing.html # Create queue and sub-process # -------------------------------------------------------------------------- app_conn, gui_conn = multiprocessing.Pipe(True) pChild = multiprocessing.Process(target=FortiusAntChild, args=(clv, gui_conn) ) pChild.start() # -------------------------------------------------------------------------- # Poll child-process untill done # -------------------------------------------------------------------------- parent = clsFortiusAntParent(app_conn) # The child process has the GUI parent.ListenToChild() # -------------------------------------------------------------------------- # Wait for child-process to complete # -------------------------------------------------------------------------- pChild.join() # ------------------------------------------------------------------------------ # We're done # ------------------------------------------------------------------------------ if debug.on(debug.Any): logfile.Console('FortiusAnt ended') logfile.Close()
app.MainLoop() else: # -------------------------------------------------------------------------- # Multiprocessing wanted, start GUI in it's own process # -------------------------------------------------------------------------- # https://docs.python.org/3/library/multiprocessing.html # Create queue and sub-process # -------------------------------------------------------------------------- app_conn, gui_conn = multiprocessing.Pipe(True) pChild = multiprocessing.Process(target=FortiusAntChild, args=(clv, gui_conn)) pChild.start() # -------------------------------------------------------------------------- # Poll child-process untill done # -------------------------------------------------------------------------- parent = clsFortiusAntParent(app_conn) # The child process has the GUI parent.ListenToChild() # -------------------------------------------------------------------------- # Wait for child-process to complete # -------------------------------------------------------------------------- pChild.join() # ------------------------------------------------------------------------------ # We're done # ------------------------------------------------------------------------------ if debug.on(debug.Any): logfile.Console('FortiusAnt ended') logfile.Close()