コード例 #1
0
def launch_all(scratch_file=SCRATCH_PATH + "new.sb"):
    '''
    This method can be called when importing Scratch_Start.py.
    It launches both Scratch and the appropriate Scratch Controller.
    If scratch_file parameter is passed, then it will be loaded in Scratch.
    scratch_file must have a full path, and not a relative path
    '''
    global scratch_controller
    # Kill all Python Programs.  Any running *Scratch* Python Programs.
    write_debug("Start robot.")
    # dlg = wx.MessageDialog(self, 'This will close any open Scratch programs.  Please save and click Ok!', 'Alert!', wx.OK|wx.ICON_INFORMATION)
    # dlg.ShowModal()
    # dlg.Destroy()

    kill_all_open_processes()

    # Start Scratch
    start_command = "bash {0}scratch_direct {1}".format(
        SCRATCH_PATH, scratch_file)
    print("Launched Scratch")
    print(start_command)

    user_selection = read_state()
    if user_selection.find('BrickPi') >= 0:
        if auto_detect_robot.autodetect().find("BrickPi3") >= 0:
            program = "/home/pi/Dexter/BrickPi3/Software/Scratch/BrickPi3Scratch.py"
        else:  #BrickPi+, Kickstarter and Advanced,
            program = "/home/pi/Dexter/BrickPi+/Software/BrickPi_Scratch/BrickPiScratch.py"
    elif user_selection.find('GoPiGo') >= 0:
        if auto_detect_robot.autodetect().find("GoPiGo3") >= 0:
            program = "/home/pi/Dexter/GoPiGo3/Software/Scratch/GoPiGo3Scratch.py"
        else:
            program = "/home/pi/Dexter/GoPiGo/Software/Scratch/GoPiGoScratch.py"
    elif user_selection.find('PivotPi') >= 0:
        program = "/home/pi/Dexter/PivotPi/Software/Scratch/PivotPiScratch.py"
    else:
        program = "/home/pi/Dexter/GrovePi/Software/Scratch/GrovePiScratch.py"
    # start_command = "sudo python "+program
    # send_bash_command_in_background(start_command)

    param = []
    param.append('lxterminal')
    param.append('--title')
    param.append('Scratch Controller')
    param.append('-e')
    param.append("/usr/bin/python")
    param.append(program)
    scratch_controller = subprocess.Popen(param)
    send_bash_command_in_background(start_command)

    print("Programming Started.")
コード例 #2
0
def detect():
    try:
        detected_robots = auto_detect_robot.autodetect()
        print(detected_robots)
        # handling it this way to cover the cases of
        # multiple robot detection
        if detected_robots.find("GoPiGo") == 0:
            write_state("GoPiGo")
        elif detected_robots.find("BrickPi3") == 0:
            write_state("BrickPi3")
        elif detected_robots.find("GrovePi") == 0:
            write_state("GrovePi")
        else:
            write_state('sig')
    except:
        write_state("sig")
コード例 #3
0
def detect():
	try:
		detected_robots=auto_detect_robot.autodetect()
		print (detected_robots)
		# handling it this way to cover the cases of 
		# multiple robot detection
		if needed_robots.find("GoPiGo3") != -1:
			write_state("GoPiGo3")
		elif detected_robots.find("GoPiGo") != -1 and needed_robots.find("3") == -1:
			write_state("GoPiGo")
		elif detected_robots.find("BrickPi3")==0:
			write_state("BrickPi3")
		elif detected_robots.find("GrovePi")==0:
			write_state("GrovePi")
		else:
			write_state('dex')
	except:
			write_state("dex")
コード例 #4
0
def detect():
    try:
        detected_robots=auto_detect_robot.autodetect()
        print (detected_robots)
        # handling it this way to cover the cases of 
        # multiple robot detection
        if detected_robots.find("GoPiGo3") != -1:
            write_state("GoPiGo3")
        elif detected_robots.find("GoPiGo") != -1 and detected_robots.find("3") == -1:
            write_state("GoPiGo")
        elif detected_robots.find("BrickPi3")==0:
            write_state("BrickPi3")
        elif detected_robots.find("GrovePi")==0:
            write_state("GrovePi")
        else:
            write_state('dex')
    except Exception as e:
            write_state("dex")
            print(e)
コード例 #5
0
    def examples(self, event):
        write_debug("Examples Pressed.")
        # autodetect robots and pick the first one
        folder = auto_detect_robot.autodetect().split("-")[0]
        if (folder == "GoPiGo3"):
            directory = "nohup pcmanfm /home/pi/Dexter/GoPiGo3/Software/Scratch/Examples/"
        if (folder == "GoPiGo"):
            directory = "nohup pcmanfm /home/pi/Dexter/GoPiGo/Software/Scratch/Examples/"
        if (folder == "GrovePi"):
            directory = "nohup pcmanfm /home/pi/Dexter/GrovePi/Software/Scratch/Grove_Examples/"
        if (folder == "BrickPi+"):
            directory = "nohup pcmanfm /home/pi/Dexter/BrickPi+/Software/BrickPi_Scratch/Examples/"
        if (folder == "BrickPi3"):
            directory = "nohup pcmanfm /home/pi/Dexter/BrickPi3/Software/Scratch/Examples/"
        if (folder == "PivotPi"):
            directory = "nohup pcmanfm /home/pi/Dexter/PivotPi/Software/Scratch/Examples/"

        send_bash_command_in_background(directory)
        print("Opened up file manager")
        write_debug("Opened up file manager!")
コード例 #6
0
    def initialize(self):
        sizer = wx.GridBagSizer()

        x = 75
        y = 175
        dist = 60

        # Otomatik algılayabilirsek, kullanıcıya geribildirim verir
        if no_auto_detect == False:
            detected_robot = auto_detect_robot.autodetect()
            if detected_robot != "GoPiGo":
                detected_robot_str = wx.StaticText(
                    self,
                    -1,
                    label="Warning: Could not find a GoPiGo",
                    pos=(x - 30 + dist * 2, 4))
                detected_robot_str.SetForegroundColour('red')
                sizer.AddStretchSpacer((1, 1))
                sizer.Add(detected_robot_str, (0, 1))
                sizer.AddStretchSpacer((1, 1))

        # Hareket butonları

        left_button = wx.Button(self, -1, label="Left", pos=(x, y))
        sizer.Add(left_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button)

        stop_button = wx.Button(self, -1, label="Stop", pos=(x + dist * 2, y))
        stop_button.SetBackgroundColour('red')
        sizer.Add(stop_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button)

        right_button = wx.Button(self,
                                 -1,
                                 label="Right",
                                 pos=(x + dist * 4, y))
        sizer.Add(right_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button)

        fwd_button = wx.Button(self,
                               -1,
                               label="Forward",
                               pos=(x + dist * 2, y - dist))
        sizer.Add(fwd_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button)

        bwd_button = wx.Button(self,
                               -1,
                               label="Back",
                               pos=(x + dist * 2, y + dist))
        sizer.Add(bwd_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button)

        # Led buttonları
        x = 75
        y = 25
        left_led_button = wx.Button(self, -1, label="Left LED", pos=(x, y))
        sizer.Add(left_led_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick,
                  left_led_button)

        right_led_button = wx.Button(self,
                                     -1,
                                     label="Right LED",
                                     pos=(x + dist * 4, y))
        sizer.Add(right_led_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick,
                  right_led_button)

        y = 320
        battery_button = wx.Button(self,
                                   -1,
                                   label="Check Battery Voltage\t ",
                                   pos=(x, y))
        sizer.Add(battery_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick,
                  battery_button)

        firmware_button = wx.Button(self,
                                    -1,
                                    label="Check Firmware Version\t",
                                    pos=(x, y + dist / 2))
        sizer.Add(firmware_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick,
                  firmware_button)

        self.battery_label = wx.StaticText(self,
                                           -1,
                                           label=str(v) + "V",
                                           pos=(x + dist * 2 + 45, y + 6))
        sizer.Add(self.battery_label, (1, 0), (1, 2), wx.EXPAND)

        self.firmware_label = wx.StaticText(self,
                                            -1,
                                            label=str(f),
                                            pos=(x + dist * 2 + 45,
                                                 y + 6 + dist / 2))
        sizer.Add(self.firmware_label, (1, 0), (1, 2), wx.EXPAND)

        self.trim_label = wx.StaticText(
            self,
            -1,
            label=
            "You can adjust the trim of your GoPiGo to help it go straight forward.\nUse the slider below to adjust the trim difference between the left\nand right motors.",
            pos=(x, y + 6 + dist / 2 + 40))
        sizer.Add(self.firmware_label, (1, 0), (1, 2), wx.EXPAND)

        y = 460
        self.trim_label = wx.StaticText(self,
                                        -1,
                                        label=str(trim_val),
                                        pos=(x + dist * 2, y + 6))
        sizer.Add(self.trim_label, (1, 0), (1, 2), wx.EXPAND)

        trim_read_button = wx.Button(self,
                                     -1,
                                     label="  Trim Read ",
                                     pos=(x, y))
        sizer.Add(trim_read_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.trim_read_button_OnButtonClick,
                  trim_read_button)

        trim_test_button = wx.Button(self,
                                     -1,
                                     label="Trim Test ",
                                     pos=(x, y + dist / 2))
        sizer.Add(trim_test_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.trim_test_button_OnButtonClick,
                  trim_test_button)

        trim_write_button = wx.Button(self,
                                      -1,
                                      label="Trim Write",
                                      pos=(x, y + dist))
        sizer.Add(trim_write_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.trim_write_button_OnButtonClick,
                  trim_write_button)

        self.slider = wx.Slider(self,
                                value=0,
                                minValue=-100,
                                maxValue=100,
                                pos=(x + dist * 2, y + dist / 2),
                                size=(250, -1),
                                style=wx.SL_HORIZONTAL)
        self.slider.Bind(wx.EVT_SCROLL, self.OnSliderScroll)

        self.Show(True)
コード例 #7
0
    def test(self, event):
        # Test the hardware.  Test the selected hardware.
        write_debug("Demo robot.")
        folder = auto_detect_robot.autodetect()
        print("Preparing demo mode for {}".format(folder))
        if folder.find('BrickPi') >= 0:
            if auto_detect_robot.autodetect().find("BrickPi+"):
                # Run BrickPi+ Test.
                dlg = wx.MessageDialog(
                    self,
                    'Ok, start BrickPi+ Test. Make sure the BrickPi+ is powered by batteries, a motor is connected, and a touch sensor is connected to Port 1.  You should see the LEDs blink and the motors move when the touch sensor is pressed.  Then press Ok. ',
                    'Test BrickPi+!', wx.OK | wx.CANCEL | wx.ICON_INFORMATION)
                ran_dialog = False
                if dlg.ShowModal() == wx.ID_OK:
                    print("Run Hardware Test!")
                    program = "sudo python /home/pi/Dexter/BrickPi+/Software/BrickPi_Python/Sensor_Examples/BrickPi_Hardware_Test.py"
                    send_bash_command_in_background(program)
                    ran_dialog = True
                else:
                    print("Canceled!")
                dlg.Destroy()
            else:
                # Run BrickPi3 Test.
                dlg = wx.MessageDialog(
                    self,
                    'Ok, start BrickPi3 Test. Make sure the BrickPi3 is powered by batteries, a motor is connected, and a touch sensor is connected to Port 1.  You should see the LEDs blink and the motors move when the touch sensor is pressed.  Then press Ok. ',
                    'Test BrickPi3!', wx.OK | wx.CANCEL | wx.ICON_INFORMATION)
                ran_dialog = False
                if dlg.ShowModal() == wx.ID_OK:
                    print("Run Hardware Test.")
                    program = "sudo python /home/pi/Dexter/BrickPi3/Software/Python/Sensor_Examples/Brick_Hardware_Test.py"
                    send_bash_command_in_background(program)
                    ran_dialog = True
                else:
                    print("Canceled!")
                dlg.Destroy()

            # Depending on what the user chose, we either cancel or complete.
            if ran_dialog:
                dlg = wx.MessageDialog(self, 'Test Complete.', 'Complete',
                                       wx.OK | wx.ICON_INFORMATION)
                dlg.ShowModal()
                dlg.Destroy()
            else:
                dlg = wx.MessageDialog(self, 'Test Canceled.', 'Canceled',
                                       wx.OK | wx.ICON_HAND)
                dlg.ShowModal()
                dlg.Destroy()
        elif folder.find("GoPiGo3") >= 0:
            # Run GoPiGo Test.
            dlg = wx.MessageDialog(
                self,
                'This Demo program will make sure everything is working on your GoPiGo.  It is best to be working through wifi, but if the GoPiGo is connected to your computer with a cable right now, turn it upside down for the demo.  \n\nClick OK to begin.',
                'Demonstrate the GoPiGo',
                wx.OK | wx.CANCEL | wx.ICON_INFORMATION)
            ran_dialog = False
            if dlg.ShowModal() == wx.ID_OK:
                print("Begin Running GoPiGo3 Test!")
                program = "python /home/pi/Dexter/GoPiGo3/Software/Python/hardware_test.py"
                send_bash_command_in_background(program)
                ran_dialog = True
            else:
                print("Canceled.")
            dlg.Destroy()
            pass
        elif folder.find('GoPiGo') >= 0:
            # Run GoPiGo Test.
            dlg = wx.MessageDialog(
                self,
                'This Demo program will make sure everything is working on your GoPiGo.  The red LEDs in the front of the GoPiGo will blink once, and the GoPiGo will move forward, and then backwards.  So make sure it is on the floor so it does not fall off the table! \n\nMake sure your batteries are connected to the GoPiGo, motors are connected, and it is turned on.  Be sure to unplug the power supply wall adapter from the GoPiGo. It is best to be working through wifi, but if the GoPiGo is connected to your computer with a cable right now, turn it upside down for the demo.  \n\nClick OK to begin.',
                'Demonstrate the GoPiGo',
                wx.OK | wx.CANCEL | wx.ICON_INFORMATION)
            ran_dialog = False
            if dlg.ShowModal() == wx.ID_OK:
                print("Begin Running GoPiGo Test.")
                program = "sudo python /home/pi/Dexter/GoPiGo/Software/Python/hardware_test_2.py"
                send_bash_command_in_background(program)
                ran_dialog = True
            else:
                print("Canceled.")
            dlg.Destroy()

            # Depending on what the user chose, we either cancel or complete.
            if ran_dialog:
                dlg = wx.MessageDialog(self, 'Demo Complete', 'Complete',
                                       wx.OK | wx.ICON_INFORMATION)
                dlg.ShowModal()
                dlg.Destroy()
            else:
                dlg = wx.MessageDialog(self, 'Demo Canceled', 'Canceled',
                                       wx.OK | wx.ICON_HAND)
                dlg.ShowModal()
                dlg.Destroy()

        elif folder.find('GrovePi') >= 0:
            # Run GrovePi Test.
            dlg = wx.MessageDialog(
                self,
                'Ok, start GrovePi Test. Attach buzzer to D8 and a button to A0.  Press the button and the buzzer should sound.  Press Ok to start. ',
                'Test GrovePi!', wx.OK | wx.CANCEL | wx.ICON_INFORMATION)
            ran_dialog = False
            if dlg.ShowModal() == wx.ID_OK:
                print("Run GrovePi Test.")
                program = "sudo python /home/pi/Dexter/GrovePi/Software/Python/GrovePi_Hardware_Test.py"
                send_bash_command_in_background(program)
                ran_dialog = True
            else:
                print("Canceled")
            dlg.Destroy()

            # Depending on what the user chose, we either cancel or complete.
            if ran_dialog:
                dlg = wx.MessageDialog(self, 'Test Complete', 'Complete',
                                       wx.OK | wx.ICON_INFORMATION)
                dlg.ShowModal()
                dlg.Destroy()
            else:
                dlg = wx.MessageDialog(self, 'Test Canceled', 'Canceled',
                                       wx.OK | wx.ICON_HAND)
                dlg.ShowModal()
                dlg.Destroy()
コード例 #8
0
        panel = MainPanel(self)
        self.Center()


########################################################################
class Main(wx.App):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, redirect=False, filename=None):
        """Constructor"""
        wx.App.__init__(self, redirect, filename)
        dlg = MainFrame()
        dlg.Show()


#----------------------------------------------------------------------
if __name__ == "__main__":
    write_debug(" # Program # started # !")
    write_state(auto_detect_robot.autodetect())
    #write_state("GoPiGo")
    kill_all_open_processes()

    if len(sys.argv) == 1:
        app = Main()
        app.MainLoop()
    else:
        print(sys.argv[1])
        launch_all(sys.argv[1])
コード例 #9
0
    def __init__(self, parent):

        wx.Panel.__init__(self, parent=parent)
        #self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
        self.SetBackgroundColour(wx.WHITE)
        self.frame = parent

        title_font = wx.Font(15, wx.FONTSTYLE_NORMAL, wx.FONTFAMILY_DEFAULT,
                             wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)
        title_font.SetUnderlined(False)

        small_font = wx.Font(10, wx.FONTSTYLE_NORMAL, wx.FONTFAMILY_DEFAULT,
                             wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)
        small_font.SetUnderlined(False)

        # main sizer
        main_sizer = wx.BoxSizer(wx.VERTICAL)
        # Two horizontal sections
        top_sizer = wx.BoxSizer(wx.HORIZONTAL)
        bottom_sizer = wx.BoxSizer(wx.HORIZONTAL)

        # top has two vertical sections
        control_sizer = wx.BoxSizer(wx.VERTICAL)
        vital_signs_sizer = wx.BoxSizer(wx.VERTICAL)

        # bottom has just one section
        calibration_sizer = wx.BoxSizer(wx.VERTICAL)

        if no_auto_detect == True:
            detected_robot = auto_detect_robot.autodetect()
            print(detected_robot)
            if detected_robot != "GoPiGo3":
                detected_robot_str = wx.StaticText(
                    self, -1, label="Warning: Could not find a GoPiGo3")
                detected_robot_str.SetForegroundColour('red')
                warning_sizer = wx.BoxSizer(wx.HORIZONTAL)
                warning_sizer.Add(detected_robot_str, 0,
                                  wx.EXPAND | wx.ALIGN_CENTER)
                main_sizer.Add(warning_sizer, 0, wx.ALIGN_CENTER)

        # Remote Control
        control_label = wx.StaticText(self, -1, label="Remote Control:")
        control_label.SetFont(title_font)

        left_led_button = wx.Button(self, label="Left Blinker")
        self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick,
                  left_led_button)
        right_led_button = wx.Button(self, label="Right Blinker")
        self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick,
                  right_led_button)

        led_sizer = wx.BoxSizer(wx.HORIZONTAL)
        led_sizer.Add(left_led_button, 0, wx.ALIGN_LEFT | wx.TOP, 9)
        led_sizer.AddSpacer(70)
        led_sizer.Add(right_led_button, 0, wx.ALIGN_RIGHT | wx.TOP, 9)

        eyes_sizer = wx.BoxSizer(wx.HORIZONTAL)
        left_eye_button = wx.Button(self, label="Left Eye ")
        self.Bind(wx.EVT_BUTTON, self.left_eye_button_OnButtonClick,
                  left_eye_button)
        bmp = wx.Bitmap(ICON_PATH + "dex.png", type=wx.BITMAP_TYPE_PNG)
        robotbitmap = wx.StaticBitmap(self, bitmap=bmp)
        right_eye_button = wx.Button(self, label="Right Eye")
        self.Bind(wx.EVT_BUTTON, self.right_eye_button_OnButtonClick,
                  right_eye_button)

        eyes_sizer.Add(right_eye_button, 0, wx.ALIGN_CENTER)
        eyes_sizer.Add(robotbitmap, 0, wx.ALIGN_CENTER)
        eyes_sizer.Add(left_eye_button, 0, wx.ALIGN_CENTER)

        fwd_sizer = wx.BoxSizer(wx.HORIZONTAL)
        fwd_button = wx.Button(self, label="Forward")
        self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button)
        fwd_sizer.Add(fwd_button, 0, wx.ALIGN_CENTER)

        middle_sizer = wx.BoxSizer(wx.HORIZONTAL)
        left_button = wx.Button(self, label="Left")
        self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button)
        stop_button = wx.Button(self, label="Stop")
        stop_button.SetForegroundColour('red')
        self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button)
        right_button = wx.Button(self, label="Right")
        self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button)

        middle_sizer.Add(left_button, 0, wx.ALIGN_CENTER)
        middle_sizer.Add(stop_button, 0, wx.ALIGN_CENTER)
        middle_sizer.Add(right_button, 0, wx.ALIGN_CENTER)

        bwd_sizer = wx.BoxSizer(wx.HORIZONTAL)
        bwd_button = wx.Button(self, label="Back")
        self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button)
        bwd_sizer.Add(bwd_button, 0, wx.ALIGN_CENTER)

        # Vital Signs Values

        vital_signs_label = wx.StaticText(self, -1, label="Vital Signs:")
        vital_signs_label.SetFont(title_font)

        batterySizer = wx.BoxSizer(wx.HORIZONTAL)
        battery_button = wx.Button(self, label="Check Battery Voltage")
        self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick,
                  battery_button)
        self.battery_label = wx.StaticText(self, label=str(round(v, 1)) + "V")
        batterySizer.Add(battery_button, 0, wx.ALIGN_LEFT)
        batterySizer.AddSpacer(22)
        batterySizer.Add(self.battery_label, 0, wx.ALIGN_CENTER | wx.EXPAND)

        firmwareSizer = wx.BoxSizer(wx.HORIZONTAL)
        firmware_button = wx.Button(self, -1, label="Check Firmware Version")
        self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick,
                  firmware_button)
        self.firmware_label = wx.StaticText(self,
                                            -1,
                                            label=str(firmware_version))
        firmwareSizer.Add(firmware_button, 0, wx.ALIGN_LEFT)
        firmwareSizer.AddSpacer(15)
        firmwareSizer.Add(self.firmware_label, 0, wx.ALIGN_CENTER | wx.EXPAND)

        calibration_label = wx.StaticText(self,
                                          -1,
                                          label="Driving Calibration:")
        calibration_label.SetFont(title_font)

        calibrationDriveSizer = wx.BoxSizer(wx.VERTICAL)

        # drive_straight_label = []
        # for i in range(len(calibration_straigt_line)): # number of lines of instructions
        #     drive_straight_label.append(wx.StaticText(self, -1,label=calibration_straigt_line[i]))
        #     drive_straight_label[i].SetFont(small_font)
        #     calibrationDriveSizer.Add(drive_straight_label[i], 0, wx.ALIGN_LEFT)

        calibrationDriveInternalSizer = wx.BoxSizer(wx.HORIZONTAL)
        wheel_diameter_label = wx.StaticText(self, -1, label="Wheel Diameter:")
        self.wheel_diameter_input = wx.TextCtrl(self,
                                                value=str(wheel_diameter),
                                                size=(60, 40))
        # self.Bind(wx.EVT_TEXT, self.wheel_diameter_input_OnChanged, self.wheel_diameter_input)
        calibrationDriveInternalSizer.Add(wheel_diameter_label, 0,
                                          wx.ALIGN_CENTER)
        calibrationDriveInternalSizer.Add(self.wheel_diameter_input, 0,
                                          wx.ALIGN_CENTER | wx.EXPAND)
        calibrationDriveInternalSizer.AddSpacer(15)

        drive_straight_2m_button = wx.Button(self, -1, label="Drive 2m")
        self.Bind(wx.EVT_BUTTON, self.drive_straight_2m_button_OnButtonClick,
                  drive_straight_2m_button)
        drive_straight_6feet_button = wx.Button(self, -1, label="Drive 6 feet")
        self.Bind(wx.EVT_BUTTON,
                  self.drive_straight_6feet_button_OnButtonClick,
                  drive_straight_6feet_button)
        calibrationDriveInternalSizer.Add(drive_straight_2m_button, 0,
                                          wx.ALIGN_CENTER | wx.EXPAND)
        calibrationDriveInternalSizer.AddSpacer(15)
        calibrationDriveInternalSizer.Add(drive_straight_6feet_button, 0,
                                          wx.ALIGN_CENTER | wx.EXPAND)
        calibrationDriveSizer.Add(calibrationDriveInternalSizer, 0,
                                  wx.ALIGN_LEFT)

        calibrationTurnSizer = wx.BoxSizer(wx.VERTICAL)

        # turn_straight_label = []
        # for i in range(len(calibration_turn)): # number of lines of instructions
        #     turn_straight_label.append(wx.StaticText(self, -1, label=calibration_turn[i]))
        #     turn_straight_label[i].SetFont(small_font)
        #     calibrationTurnSizer.Add(turn_straight_label[i], 0, wx.ALIGN_LEFT)

        calibrationTurnInternalSizer = wx.BoxSizer(wx.HORIZONTAL)
        wheel_base_label = wx.StaticText(self,
                                         -1,
                                         label="Distance Between Wheels:")
        self.wheel_base_input = wx.TextCtrl(self,
                                            value=str(wheel_base_width),
                                            size=(60, 40))

        calibrationTurnInternalSizer.Add(wheel_base_label, 0, wx.ALIGN_CENTER)
        calibrationTurnInternalSizer.Add(self.wheel_base_input, 0,
                                         wx.ALIGN_CENTER | wx.EXPAND)
        calibrationTurnInternalSizer.AddSpacer(15)

        spin_one_rotation_button = wx.Button(self, -1, label="Spin 1 Rotation")
        self.Bind(wx.EVT_BUTTON, self.spin_one_rotation_button_OnButtonClick,
                  spin_one_rotation_button)
        calibrationTurnInternalSizer.Add(spin_one_rotation_button, 0,
                                         wx.ALIGN_CENTER | wx.EXPAND)
        calibrationTurnSizer.Add(calibrationTurnInternalSizer, 0,
                                 wx.ALIGN_LEFT)

        # Exit
        exit_sizer = wx.BoxSizer(wx.HORIZONTAL)
        exit_button = wx.Button(self, label="Exit")
        exit_button.Bind(wx.EVT_BUTTON, self.onClose)
        save_button = wx.Button(self, label="Save and Exit")
        save_button.Bind(wx.EVT_BUTTON, self.onSave)
        # The distance between wheels is invalid.
        self.msg_label = wx.StaticText(self, -1, size=(400, 30), label="")
        exit_sizer.Add(self.msg_label, 1, wx.ALIGN_LEFT | wx.EXPAND)
        exit_sizer.Add(exit_button, 0, wx.ALIGN_RIGHT | wx.RIGHT, 20)
        exit_sizer.Add(save_button, 0, wx.ALIGN_RIGHT)

        # Fill remote control section
        control_sizer.Add(control_label, 0, wx.ALIGN_CENTER | wx.BOTTOM, 10)
        control_sizer.Add(led_sizer, 0, wx.ALIGN_CENTER)
        control_sizer.Add(eyes_sizer, 0, wx.ALIGN_CENTER)
        control_sizer.Add(fwd_sizer, 0, wx.ALIGN_CENTER | wx.TOP, 10)
        control_sizer.Add(middle_sizer, 0, wx.ALIGN_CENTER)
        control_sizer.Add(bwd_sizer, 0, wx.ALIGN_CENTER)

        # Fill check buttons
        vital_signs_sizer.Add(vital_signs_label, 0, wx.ALIGN_LEFT | wx.BOTTOM,
                              10)
        vital_signs_sizer.Add(batterySizer, 0, wx.ALIGN_LEFT | wx.TOP, 9)
        vital_signs_sizer.Add(firmwareSizer, 0, wx.ALIGN_LEFT | wx.TOP, 20)

        # Fill calibration section
        calibration_sizer.Add(calibration_label, 0, wx.ALIGN_LEFT | wx.BOTTOM,
                              5)
        calibration_sizer.Add(calibrationDriveSizer, 0,
                              wx.ALIGN_LEFT | wx.TOP | wx.BOTTOM | wx.LEFT, 10,
                              30)
        calibration_sizer.Add(calibrationTurnSizer, 0,
                              wx.ALIGN_LEFT | wx.TOP | wx.BOTTOM | wx.LEFT, 10,
                              30)

        top_sizer.Add(control_sizer, 0, wx.ALIGN_LEFT | wx.BOTTOM | wx.RIGHT,
                      20)
        top_sizer.Add(vital_signs_sizer, 0, wx.ALIGN_LEFT | wx.LEFT, 40)

        bottom_sizer.Add(calibration_sizer, 0)

        main_sizer.Add(top_sizer, 0, wx.LEFT | wx.TOP, 30)
        main_sizer.Add(bottom_sizer, 0, wx.LEFT | wx.TOP, 30)
        main_sizer.Add(exit_sizer, 1, wx.ALIGN_RIGHT | wx.TOP | wx.RIGHT, 10)

        self.SetSizerAndFit(main_sizer)
コード例 #10
0
    def __init__(self, parent):
        wx.Panel.__init__(self, parent=parent)
        self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
        self.SetBackgroundColour(wx.WHITE)
        self.frame = parent

        # main sizer
        main_sizer = wx.BoxSizer(wx.VERTICAL)
        main_sizer.AddSpacer(10)

        # if we can auto-detect, then give feedback to the user
        if no_auto_detect == False:
            detected_robot = auto_detect_robot.autodetect()
            if detected_robot != "GoPiGo":
                detected_robot_str = wx.StaticText(
                    self, -1, label="Warning: Could not find a GoPiGo")
                detected_robot_str.SetForegroundColour('red')
                warning_sizer = wx.BoxSizer(wx.HORIZONTAL)
                warning_sizer.Add(detected_robot_str, 0,
                                  wx.EXPAND | wx.ALIGN_CENTER)
                main_sizer.Add(warning_sizer, 0, wx.ALIGN_CENTER)

        # LED buttons
        led_sizer = wx.BoxSizer(wx.HORIZONTAL)

        left_led_button = wx.Button(self, label="Left LED")
        self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick,
                  left_led_button)

        right_led_button = wx.Button(self, label="Right LED")
        self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick,
                  right_led_button)

        led_sizer.AddSpacer(30)
        led_sizer.Add(left_led_button, 0, wx.ALIGN_CENTER)
        led_sizer.AddSpacer(80)
        led_sizer.Add(right_led_button, 0, wx.ALIGN_CENTER)
        led_sizer.AddSpacer(30)

        fwd_sizer = wx.BoxSizer(wx.HORIZONTAL)
        fwd_button = wx.Button(self, label="Forward")
        self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button)
        fwd_sizer.Add(fwd_button, 0, wx.ALIGN_CENTER)

        middle_sizer = wx.BoxSizer(wx.HORIZONTAL)
        left_button = wx.Button(self, label="Left")
        self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button)
        stop_button = wx.Button(self, label="Stop")
        stop_button.SetBackgroundColour('red')
        self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button)
        right_button = wx.Button(self, label="Right")
        self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button)

        middle_sizer.Add(left_button, 0, wx.ALIGN_CENTER)
        middle_sizer.AddSpacer(20)
        middle_sizer.Add(stop_button, 0, wx.ALIGN_CENTER)
        middle_sizer.AddSpacer(20)
        middle_sizer.Add(right_button, 0, wx.ALIGN_CENTER)

        bwdSizer = wx.BoxSizer(wx.HORIZONTAL)
        bwd_button = wx.Button(self, label="Back")
        self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button)
        bwdSizer.Add(bwd_button, 0, wx.ALIGN_CENTER)

        batterySizer = wx.BoxSizer(wx.HORIZONTAL)
        battery_button = wx.Button(self, label="Check Battery Voltage")
        self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick,
                  battery_button)
        self.battery_label = wx.StaticText(self, label=str(round(v, 1)) + "V")
        batterySizer.AddSpacer(30)
        batterySizer.Add(battery_button, 0, wx.ALIGN_LEFT)
        batterySizer.AddSpacer(20)
        batterySizer.Add(self.battery_label, 0, wx.ALIGN_CENTER | wx.EXPAND)

        firmwareSizer = wx.BoxSizer(wx.HORIZONTAL)
        firmware_button = wx.Button(self, -1, label="Check Firmware Version")
        self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick,
                  firmware_button)
        self.firmware_label = wx.StaticText(self, -1, label=str(f))
        firmwareSizer.AddSpacer(30)
        firmwareSizer.Add(firmware_button, 0, wx.ALIGN_LEFT)
        firmwareSizer.AddSpacer(15)
        firmwareSizer.Add(self.firmware_label, 0, wx.ALIGN_CENTER | wx.EXPAND)

        trimbuttons_sizer = wx.BoxSizer(wx.HORIZONTAL)
        trim_read_button = wx.Button(self, label="  Trim Read ")
        self.Bind(wx.EVT_BUTTON, self.trim_read_button_OnButtonClick,
                  trim_read_button)
        trim_test_button = wx.Button(self, label="Trim Test ")
        self.Bind(wx.EVT_BUTTON, self.trim_test_button_OnButtonClick,
                  trim_test_button)
        trim_write_button = wx.Button(self, label="Trim Write")
        self.Bind(wx.EVT_BUTTON, self.trim_write_button_OnButtonClick,
                  trim_write_button)

        # trimbuttons_sizer.AddSpacer(30)
        trimbuttons_sizer.Add(trim_read_button, 0, wx.ALIGN_CENTER)
        trimbuttons_sizer.AddSpacer(30)
        trimbuttons_sizer.Add(trim_test_button, 0, wx.ALIGN_CENTER)
        trimbuttons_sizer.AddSpacer(30)
        trimbuttons_sizer.Add(trim_write_button, 0, wx.ALIGN_CENTER)

        trim_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.trim_label = wx.StaticText(self,
                                        -1,
                                        label="Trim: " + str(trim_val))
        self.slider = wx.Slider(self,
                                value=0,
                                minValue=-100,
                                maxValue=100,
                                size=(250, -1),
                                style=wx.SL_HORIZONTAL)
        self.slider.Bind(wx.EVT_SCROLL, self.OnSliderScroll)

        trim_sizer.Add(self.trim_label, 0, wx.ALIGN_CENTER)
        trim_sizer.AddSpacer(30)
        trim_sizer.Add(self.slider, 0, wx.ALIGN_CENTER)

        # Exit
        exit_sizer = wx.BoxSizer(wx.HORIZONTAL)
        exit_button = wx.Button(self, label="Exit")
        exit_button.Bind(wx.EVT_BUTTON, self.onClose)
        exit_sizer.Add(exit_button, 0, wx.ALIGN_RIGHT)
        exit_sizer.AddSpacer(30)

        main_sizer.Add(led_sizer, 0, wx.ALIGN_CENTER)
        main_sizer.AddSpacer(10)
        main_sizer.Add(fwd_sizer, 0, wx.ALIGN_CENTER)
        main_sizer.AddSpacer(10)
        main_sizer.Add(middle_sizer, 0, wx.ALIGN_CENTER)
        main_sizer.AddSpacer(10)
        main_sizer.Add(bwdSizer, 0, wx.ALIGN_CENTER)
        main_sizer.AddSpacer(40)
        main_sizer.Add(trimbuttons_sizer, 0, wx.ALIGN_CENTER)
        main_sizer.AddSpacer(5)
        main_sizer.Add(trim_sizer, 0, wx.ALIGN_CENTER)
        main_sizer.AddSpacer(30)
        main_sizer.Add(batterySizer, 0)
        main_sizer.Add(firmwareSizer, 0)
        main_sizer.AddSpacer(20)
        main_sizer.Add(exit_sizer, 0, wx.ALIGN_RIGHT)

        self.SetSizerAndFit(main_sizer)
コード例 #11
0
    def initialize(self):
        sizer = wx.GridBagSizer()

        x=75
        y=175 
        dist=60

        # if we can auto-detect, then give feedback to the user
        if no_auto_detect == False:
            detected_robot = auto_detect_robot.autodetect()
            if detected_robot != "GoPiGo":
                detected_robot_str = wx.StaticText(self,-1,
                    label="Warning: Could not find a GoPiGo",pos=(x-30+dist*2,4))
                detected_robot_str.SetForegroundColour('red')
                sizer.AddStretchSpacer((1,1))
                sizer.Add(detected_robot_str,(0,1))
                sizer.AddStretchSpacer((1,1))

        # Motion buttons
        left_button = wx.Button(self,-1,label="Left", pos=(x,y))
        sizer.Add(left_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button)

        stop_button = wx.Button(self,-1,label="Stop", pos=(x+dist*2,y))
        stop_button.SetBackgroundColour('red')
        sizer.Add(stop_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button)

        right_button = wx.Button(self,-1,label="Right", pos=(x+dist*4,y))
        sizer.Add(right_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button)
        
        fwd_button = wx.Button(self,-1,label="Forward", pos=(x+dist*2,y-dist))
        sizer.Add(fwd_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button)
        
        bwd_button = wx.Button(self,-1,label="Back", pos=(x+dist*2,y+dist))
        sizer.Add(bwd_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button)
        
        # Led buttons
        x=75
        y=25
        left_led_button = wx.Button(self,-1,label="Left LED", pos=(x,y))
        sizer.Add(left_led_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick, left_led_button)

        right_led_button = wx.Button(self,-1,label="Right LED", pos=(x+dist*4,y))
        sizer.Add(right_led_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick, right_led_button)       
        
        y=320
        battery_button = wx.Button(self,-1,label="Check Battery Voltage\t ", pos=(x,y))
        sizer.Add(battery_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick, battery_button)

        firmware_button = wx.Button(self,-1,label="Check Firmware Version\t", pos=(x,y+dist/2))
        sizer.Add(firmware_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick, firmware_button)        
        # Set up labels
        # self.label = wx.StaticText(self,-1,label=u'  ',pos=(25,y+150))       
        # self.label_top = wx.StaticText(self,-1,label=u'Test',pos=(25,0))
        # sizer.Add( self.label, (1,0),(1,2), wx.EXPAND )
        # sizer.Add( self.label_top, (1,0),(1,2), wx.EXPAND )
        
        self.battery_label = wx.StaticText(self,-1,label=str(v)+"V",pos=(x+dist*2+45,y+6))
        sizer.Add( self.battery_label, (1,0),(1,2), wx.EXPAND )
        
        self.firmware_label = wx.StaticText(self,-1,label=str(f),pos=(x+dist*2+45,y+6+dist/2))
        sizer.Add( self.firmware_label, (1,0),(1,2), wx.EXPAND )
        
        self.trim_label = wx.StaticText(self,-1,label="You can adjust the trim of your GoPiGo to help it go straight forward.\nUse the slider below to adjust the trim difference between the left\nand right motors.",pos=(x,y+6+dist/2+40))
        sizer.Add( self.firmware_label, (1,0),(1,2), wx.EXPAND )
        
        y=460
        self.trim_label = wx.StaticText(self,-1,label=str(trim_val),pos=(x+dist*2,y+6))
        sizer.Add( self.trim_label, (1,0),(1,2), wx.EXPAND )
        
        trim_read_button = wx.Button(self,-1,label="  Trim Read ", pos=(x,y))
        sizer.Add(trim_read_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.trim_read_button_OnButtonClick, trim_read_button)

        trim_test_button = wx.Button(self,-1,label="Trim Test ", pos=(x,y+dist/2))
        sizer.Add(trim_test_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.trim_test_button_OnButtonClick, trim_test_button)
        
        trim_write_button = wx.Button(self,-1,label="Trim Write", pos=(x,y+dist))
        sizer.Add(trim_write_button, (0,1))
        self.Bind(wx.EVT_BUTTON, self.trim_write_button_OnButtonClick, trim_write_button)
        
        self.slider = wx.Slider(self, value=0, minValue=-100, maxValue=100, pos=(x+dist*2, y+dist/2),size=(250, -1), style=wx.SL_HORIZONTAL)
        self.slider.Bind(wx.EVT_SCROLL, self.OnSliderScroll)
        
        self.Show(True)     
コード例 #12
0
ファイル: control_panel_gui.py プロジェクト: CleoQc/GoPiGo
    def __init__(self, parent):
        wx.Panel.__init__(self, parent=parent)
        self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
        self.SetBackgroundColour(wx.WHITE)
        self.frame = parent

        # main sizer
        main_sizer = wx.BoxSizer(wx.VERTICAL)
        main_sizer.AddSpacer(10)

        # if we can auto-detect, then give feedback to the user
        if no_auto_detect == False:
            detected_robot = auto_detect_robot.autodetect()
            if detected_robot != "GoPiGo":
                detected_robot_str = wx.StaticText(self,-1,
                    label="Warning: Could not find a GoPiGo")
                detected_robot_str.SetForegroundColour('red')
                warning_sizer = wx.BoxSizer(wx.HORIZONTAL)
                warning_sizer.Add(detected_robot_str, 0, wx.EXPAND| wx.ALIGN_CENTER)
                main_sizer.Add(warning_sizer, 0, wx.ALIGN_CENTER)

        # LED buttons
        led_sizer = wx.BoxSizer(wx.HORIZONTAL)

        left_led_button = wx.Button(self, label="Left LED")
        self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick, left_led_button)

        right_led_button = wx.Button(self, label="Right LED")
        self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick, right_led_button)       

        led_sizer.AddSpacer(30)
        led_sizer.Add(left_led_button, 0, wx.ALIGN_CENTER)
        led_sizer.AddSpacer(80)
        led_sizer.Add(right_led_button, 0, wx.ALIGN_CENTER)
        led_sizer.AddSpacer(30)


        fwd_sizer = wx.BoxSizer(wx.HORIZONTAL)
        fwd_button = wx.Button(self, label="Forward")
        self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button)
        fwd_sizer.Add(fwd_button, 0, wx.ALIGN_CENTER)

        middle_sizer = wx.BoxSizer(wx.HORIZONTAL)
        left_button = wx.Button(self, label="Left")
        self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button)
        stop_button = wx.Button(self, label="Stop")
        stop_button.SetBackgroundColour('red')
        self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button)
        right_button = wx.Button(self, label="Right")
        self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button)

        middle_sizer.Add(left_button, 0, wx.ALIGN_CENTER)
        middle_sizer.AddSpacer(20)
        middle_sizer.Add(stop_button,  0, wx.ALIGN_CENTER)
        middle_sizer.AddSpacer(20)
        middle_sizer.Add(right_button,  0, wx.ALIGN_CENTER)
        
        bwdSizer = wx.BoxSizer(wx.HORIZONTAL)
        bwd_button = wx.Button(self, label="Back")
        self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button)
        bwdSizer.Add(bwd_button,  0, wx.ALIGN_CENTER)

        batterySizer = wx.BoxSizer(wx.HORIZONTAL)
        battery_button = wx.Button(self, label="Check Battery Voltage")
        self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick, battery_button)
        self.battery_label = wx.StaticText(self, label=str(round(v,1))+"V")
        batterySizer.AddSpacer(30)
        batterySizer.Add(battery_button, 0, wx.ALIGN_LEFT )
        batterySizer.AddSpacer(20)
        batterySizer.Add( self.battery_label,0, wx.ALIGN_CENTER|wx.EXPAND )

        firmwareSizer = wx.BoxSizer(wx.HORIZONTAL)
        firmware_button = wx.Button(self,-1,label="Check Firmware Version")
        self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick, firmware_button)        
        self.firmware_label = wx.StaticText(self,-1,label=str(f))
        firmwareSizer.AddSpacer(30)
        firmwareSizer.Add(firmware_button, 0, wx.ALIGN_LEFT)
        firmwareSizer.AddSpacer(15)
        firmwareSizer.Add( self.firmware_label, 0, wx.ALIGN_CENTER|wx.EXPAND )

        trimbuttons_sizer = wx.BoxSizer(wx.HORIZONTAL)
        trim_read_button = wx.Button(self, label="  Trim Read ")
        self.Bind(wx.EVT_BUTTON, self.trim_read_button_OnButtonClick, trim_read_button)
        trim_test_button = wx.Button(self, label="Trim Test ")
        self.Bind(wx.EVT_BUTTON, self.trim_test_button_OnButtonClick, trim_test_button)
        trim_write_button = wx.Button(self, label="Trim Write")
        self.Bind(wx.EVT_BUTTON, self.trim_write_button_OnButtonClick, trim_write_button)

        # trimbuttons_sizer.AddSpacer(30)
        trimbuttons_sizer.Add( trim_read_button, 0, wx.ALIGN_CENTER )
        trimbuttons_sizer.AddSpacer(30)
        trimbuttons_sizer.Add( trim_test_button, 0,  wx.ALIGN_CENTER)
        trimbuttons_sizer.AddSpacer(30)
        trimbuttons_sizer.Add( trim_write_button, 0,  wx.ALIGN_CENTER )

        trim_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.trim_label = wx.StaticText(self, -1, label="Trim: "+str(trim_val))
        self.slider = wx.Slider(self, value=0, minValue=-100, maxValue=100, size=(250, -1), style=wx.SL_HORIZONTAL)
        self.slider.Bind(wx.EVT_SCROLL, self.OnSliderScroll)

        trim_sizer.Add( self.trim_label, 0, wx.ALIGN_CENTER )
        trim_sizer.AddSpacer(30)
        trim_sizer.Add( self.slider, 0, wx.ALIGN_CENTER )

        # Exit
        exit_sizer = wx.BoxSizer(wx.HORIZONTAL)
        exit_button = wx.Button(self, label="Exit")
        exit_button.Bind(wx.EVT_BUTTON, self.onClose)
        exit_sizer.Add(exit_button,0, wx.ALIGN_RIGHT)
        exit_sizer.AddSpacer(30)


        main_sizer.Add(led_sizer, 0,  wx.ALIGN_CENTER)
        main_sizer.AddSpacer(10)
        main_sizer.Add(fwd_sizer, 0,  wx.ALIGN_CENTER)
        main_sizer.AddSpacer(10)
        main_sizer.Add(middle_sizer, 0,  wx.ALIGN_CENTER)
        main_sizer.AddSpacer(10)
        main_sizer.Add(bwdSizer, 0,  wx.ALIGN_CENTER)
        main_sizer.AddSpacer(40)
        main_sizer.Add(trimbuttons_sizer, 0, wx.ALIGN_CENTER)
        main_sizer.AddSpacer(5)
        main_sizer.Add(trim_sizer, 0, wx.ALIGN_CENTER)
        main_sizer.AddSpacer(30)
        main_sizer.Add(batterySizer, 0)
        main_sizer.Add(firmwareSizer, 0)
        main_sizer.AddSpacer(20)
        main_sizer.Add(exit_sizer, 0, wx.ALIGN_RIGHT)
        
        self.SetSizerAndFit(main_sizer)
コード例 #13
0
    def __init__(self, parent):

        wx.Panel.__init__(self, parent=parent)
        #self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
        self.SetBackgroundColour(wx.WHITE)
        self.frame = parent


        title_font = wx.Font( 15,
                        wx.FONTSTYLE_NORMAL,
                        wx.FONTFAMILY_DEFAULT,
                        wx.FONTSTYLE_NORMAL,
                        wx.FONTWEIGHT_BOLD)
        title_font.SetUnderlined(False)

        small_font = wx.Font( 10,
                        wx.FONTSTYLE_NORMAL,
                        wx.FONTFAMILY_DEFAULT,
                        wx.FONTSTYLE_NORMAL,
                        wx.FONTWEIGHT_BOLD)
        small_font.SetUnderlined(False)

        # main sizer
        main_sizer = wx.BoxSizer(wx.VERTICAL)
        # Two horizontal sections
        top_sizer = wx.BoxSizer(wx.HORIZONTAL)
        bottom_sizer = wx.BoxSizer(wx.HORIZONTAL)

        # top has two horizontal sections
        control_sizer = wx.BoxSizer(wx.VERTICAL)
        vital_signs_sizer = wx.BoxSizer(wx.VERTICAL)


        if no_auto_detect == True:
            detected_robot = auto_detect_robot.autodetect()
            print(detected_robot)
            if detected_robot != "GoPiGo3":
                detected_robot_str = wx.StaticText(self,-1,
                    label="Warning: Could not find a GoPiGo3")
                detected_robot_str.SetForegroundColour('red')
                warning_sizer = wx.BoxSizer(wx.HORIZONTAL)
                warning_sizer.Add(detected_robot_str, 0, wx.EXPAND| wx.ALIGN_CENTER)
                main_sizer.Add(warning_sizer, 0, wx.ALIGN_CENTER)


        # Remote Control
        control_label = wx.StaticText(self, -1, label="Remote Control:")
        control_label.SetFont(title_font)

        left_led_button = wx.Button(self, label="Left Blinker")
        self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick, left_led_button)
        right_led_button = wx.Button(self, label="Right Blinker")
        self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick, right_led_button)

        led_sizer = wx.BoxSizer(wx.HORIZONTAL)
        led_sizer.Add(left_led_button, 0, wx.ALIGN_LEFT|wx.TOP,9)
        led_sizer.AddSpacer(70)
        led_sizer.Add(right_led_button, 0, wx.ALIGN_RIGHT|wx.TOP,9)

        eyes_sizer = wx.BoxSizer(wx.HORIZONTAL)
        left_eye_button = wx.Button(self, label="Left Eye ")
        self.Bind(wx.EVT_BUTTON, self.left_eye_button_OnButtonClick, left_eye_button)
        bmp = wx.Bitmap(ICON_PATH+"dex.png",type=wx.BITMAP_TYPE_PNG)
        robotbitmap=wx.StaticBitmap(self, bitmap=bmp)
        right_eye_button = wx.Button(self, label="Right Eye")
        self.Bind(wx.EVT_BUTTON, self.right_eye_button_OnButtonClick, right_eye_button)

        eyes_sizer.Add(right_eye_button, 0, wx.ALIGN_CENTER)
        eyes_sizer.Add(robotbitmap, 0, wx.ALIGN_CENTER)
        eyes_sizer.Add(left_eye_button, 0, wx.ALIGN_CENTER)

        fwd_sizer = wx.BoxSizer(wx.HORIZONTAL)
        fwd_button = wx.Button(self, label="Forward")
        self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button)
        fwd_sizer.Add(fwd_button, 0, wx.ALIGN_CENTER)

        middle_sizer = wx.BoxSizer(wx.HORIZONTAL)
        left_button = wx.Button(self, label="Left")
        self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button)
        stop_button = wx.Button(self, label="Stop")
        stop_button.SetForegroundColour('red')
        self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button)
        right_button = wx.Button(self, label="Right")
        self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button)

        middle_sizer.Add(left_button, 0, wx.ALIGN_CENTER)
        middle_sizer.Add(stop_button,  0, wx.ALIGN_CENTER)
        middle_sizer.Add(right_button,  0, wx.ALIGN_CENTER)

        bwd_sizer = wx.BoxSizer(wx.HORIZONTAL)
        bwd_button = wx.Button(self, label="Back")
        self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button)
        bwd_sizer.Add(bwd_button,  0, wx.ALIGN_CENTER)

        # Vital Signs Values

        vital_signs_label = wx.StaticText(self, -1, label="Vital Signs:")
        vital_signs_label.SetFont(title_font)

        batterySizer = wx.BoxSizer(wx.HORIZONTAL)
        battery_button = wx.Button(self, label="Check Battery Voltage")
        self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick, battery_button)
        self.battery_label = wx.StaticText(self, label=str(round(v,1))+"V")
        batterySizer.Add(battery_button, 0, wx.ALIGN_LEFT )
        batterySizer.AddSpacer(22)
        batterySizer.Add( self.battery_label,0, wx.ALIGN_CENTER|wx.EXPAND )

        firmwareSizer = wx.BoxSizer(wx.HORIZONTAL)
        self.firmware_label = wx.StaticText(self,-1,label="Firmware Version: "+str(firmware_version))
        firmwareSizer.Add( self.firmware_label, 0, wx.ALIGN_CENTER|wx.EXPAND )

        SerialNoSizer = wx.BoxSizer(wx.HORIZONTAL)
        self.serial_label = wx.StaticText(self,-1,label="Serial Number: "+str(serial))
        SerialNoSizer.Add( self.serial_label, 0, wx.ALIGN_CENTER|wx.EXPAND )

        tickSizer = wx.BoxSizer(wx.HORIZONTAL)
        self.ticks_label = wx.StaticText(self,-1,label="Ticks per Motor: "+str(ticks))
        tickSizer.Add( self.ticks_label, 0, wx.ALIGN_CENTER|wx.EXPAND )

        versionSizer = wx.BoxSizer(wx.HORIZONTAL)
        print(library_version)
        if library_version != "":
            self.version_label = wx.StaticText(self,-1,label="Driver Version: "+str(library_version))
            versionSizer.Add( self.version_label, 0, wx.ALIGN_CENTER|wx.EXPAND )

        # Exit
        exit_sizer = wx.BoxSizer(wx.HORIZONTAL)
        exit_button = wx.Button(self, label="Exit")
        exit_button.Bind(wx.EVT_BUTTON, self.onClose)
        self.msg_label = wx.StaticText(self, -1, size=(400,30), label="")
        exit_sizer.Add(self.msg_label, 1, wx.ALIGN_LEFT|wx.EXPAND)
        exit_sizer.Add(exit_button, 0, wx.ALIGN_RIGHT|wx.RIGHT, 20)

        # Fill remote control section
        control_sizer.Add(control_label, 0, wx.ALIGN_CENTER|wx.BOTTOM,10)
        control_sizer.Add(led_sizer, 0, wx.ALIGN_CENTER)
        control_sizer.Add(eyes_sizer, 0, wx.ALIGN_CENTER)
        control_sizer.Add(fwd_sizer, 0, wx.ALIGN_CENTER|wx.TOP,10)
        control_sizer.Add(middle_sizer, 0, wx.ALIGN_CENTER)
        control_sizer.Add(bwd_sizer, 0, wx.ALIGN_CENTER)

        # Fill check buttons
        vital_signs_sizer.Add(vital_signs_label, 0, wx.ALIGN_LEFT|wx.BOTTOM, 10)
        vital_signs_sizer.Add(batterySizer, 0, wx.ALIGN_LEFT|wx.TOP,9)
        vital_signs_sizer.Add(firmwareSizer, 0, wx.ALIGN_LEFT|wx.TOP,10)
        vital_signs_sizer.Add(SerialNoSizer, 0, wx.ALIGN_LEFT|wx.TOP,10)
        vital_signs_sizer.Add(tickSizer, 0, wx.ALIGN_LEFT|wx.TOP,10)
        vital_signs_sizer.Add(versionSizer, 0, wx.ALIGN_LEFT|wx.TOP,10)

        main_sizer.Add(control_sizer, 0, wx.LEFT|wx.TOP, 30, 20)
        main_sizer.Add(vital_signs_sizer, 0, wx.LEFT|wx.TOP, 30, 40)

        # main_sizer.Add(top_sizer, 0, wx.LEFT|wx.TOP, 30)
        main_sizer.Add(bottom_sizer, 0, wx.LEFT|wx.TOP, 30)
        main_sizer.Add(exit_sizer, 1, wx.ALIGN_RIGHT|wx.TOP|wx.RIGHT, 10)

        self.SetSizerAndFit(main_sizer)
コード例 #14
0
    def __init__(self, parent):

        wx.Panel.__init__(self, parent=parent)
        self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
        self.SetBackgroundColour(wx.WHITE)
        self.frame = parent

        # main sizer
        main_sizer = wx.BoxSizer(wx.VERTICAL)
        main_sizer.AddSpacer(30)

        if no_auto_detect == True:
            detected_robot = auto_detect_robot.autodetect()
            print(detected_robot)
            if detected_robot != "GoPiGo3":
                detected_robot_str = wx.StaticText(
                    self, -1, label="Warning: Could not find a GoPiGo3")
                detected_robot_str.SetForegroundColour('red')
                warning_sizer = wx.BoxSizer(wx.HORIZONTAL)
                warning_sizer.Add(detected_robot_str, 0,
                                  wx.EXPAND | wx.ALIGN_CENTER)
                main_sizer.Add(warning_sizer, 0, wx.ALIGN_CENTER)

        led_sizer = wx.BoxSizer(wx.HORIZONTAL)
        left_led_button = wx.Button(self, label="Left LED")
        self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick,
                  left_led_button)
        right_led_button = wx.Button(self, label="Right LED")
        self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick,
                  right_led_button)

        led_sizer.AddSpacer(30)
        led_sizer.Add(left_led_button, 0, wx.ALIGN_CENTER)
        led_sizer.AddSpacer(80)
        led_sizer.Add(right_led_button, 0, wx.ALIGN_CENTER)
        led_sizer.AddSpacer(30)

        eyesSizer = wx.BoxSizer(wx.HORIZONTAL)
        left_eye_button = wx.Button(self, label="Left eye")
        self.Bind(wx.EVT_BUTTON, self.left_eye_button_OnButtonClick,
                  left_eye_button)
        icon_sizer = wx.BoxSizer(wx.HORIZONTAL)
        bmp = wx.Bitmap(ICON_PATH + "dex.png", type=wx.BITMAP_TYPE_PNG)
        robotbitmap = wx.StaticBitmap(self, bitmap=bmp)
        right_eye_button = wx.Button(self, label="Right eye")
        self.Bind(wx.EVT_BUTTON, self.right_eye_button_OnButtonClick,
                  right_eye_button)

        eyesSizer.AddSpacer(30)
        eyesSizer.Add(right_eye_button, 0)
        eyesSizer.Add(robotbitmap, 0)
        eyesSizer.Add(left_eye_button, 0)
        eyesSizer.AddSpacer(30)

        fwd_sizer = wx.BoxSizer(wx.HORIZONTAL)
        fwd_button = wx.Button(self, label="Forward")
        self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button)
        fwd_sizer.Add(fwd_button, 0, wx.ALIGN_CENTER)

        middle_sizer = wx.BoxSizer(wx.HORIZONTAL)
        left_button = wx.Button(self, label="Left")
        self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button)
        stop_button = wx.Button(self, label="Stop")
        stop_button.SetBackgroundColour('red')
        self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button)
        right_button = wx.Button(self, label="Right")
        self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button)

        middle_sizer.Add(left_button, 0, wx.ALIGN_CENTER)
        middle_sizer.Add(stop_button, 0, wx.ALIGN_CENTER)
        middle_sizer.Add(right_button, 0, wx.ALIGN_CENTER)

        bwdSizer = wx.BoxSizer(wx.HORIZONTAL)
        bwd_button = wx.Button(self, label="Back")
        self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button)
        bwdSizer.Add(bwd_button, 0, wx.ALIGN_CENTER)

        batterySizer = wx.BoxSizer(wx.HORIZONTAL)
        battery_button = wx.Button(self, label="Check Battery Voltage")
        self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick,
                  battery_button)
        self.battery_label = wx.StaticText(self, label=str(round(v, 1)) + "V")
        batterySizer.AddSpacer(30)
        batterySizer.Add(battery_button, 0, wx.ALIGN_LEFT)
        batterySizer.AddSpacer(20)
        batterySizer.Add(self.battery_label, 0, wx.ALIGN_CENTER | wx.EXPAND)

        firmwareSizer = wx.BoxSizer(wx.HORIZONTAL)
        firmware_button = wx.Button(self, -1, label="Check Firmware Version")
        self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick,
                  firmware_button)
        self.firmware_label = wx.StaticText(self, -1, label=str(f))
        firmwareSizer.AddSpacer(30)
        firmwareSizer.Add(firmware_button, 0, wx.ALIGN_LEFT)
        firmwareSizer.AddSpacer(15)
        firmwareSizer.Add(self.firmware_label, 0, wx.ALIGN_CENTER | wx.EXPAND)

        # Exit
        exit_sizer = wx.BoxSizer(wx.HORIZONTAL)
        exit_button = wx.Button(self, label="Exit")
        exit_button.Bind(wx.EVT_BUTTON, self.onClose)
        exit_sizer.Add(exit_button, 0, wx.ALIGN_RIGHT)
        exit_sizer.AddSpacer(30)

        main_sizer.Add(led_sizer, 0, wx.ALIGN_CENTER)
        main_sizer.Add(eyesSizer, 0, wx.ALIGN_CENTER)
        main_sizer.AddSpacer(20)
        main_sizer.Add(fwd_sizer, 0, wx.ALIGN_CENTER)
        main_sizer.Add(middle_sizer, 0, wx.ALIGN_CENTER)
        main_sizer.Add(bwdSizer, 0, wx.ALIGN_CENTER)
        main_sizer.AddSpacer(30)
        main_sizer.Add(batterySizer, 0, wx.ALIGN_LEFT)
        main_sizer.Add(firmwareSizer, 0, wx.ALIGN_LEFT)
        main_sizer.AddSpacer(20)
        main_sizer.Add(exit_sizer, 0, wx.ALIGN_RIGHT)
        self.SetSizerAndFit(main_sizer)
コード例 #15
0
    def initialize(self):
        sizer = wx.GridBagSizer()

        x = 75
        y = 175
        dist = 60

        # if we can auto-detect, then give feedback to the user
        if no_auto_detect == False:
            detected_robot = auto_detect_robot.autodetect()
            if detected_robot != "GoPiGo3":
                detected_robot_str = wx.StaticText(
                    self,
                    -1,
                    label="Warning: Could not find a GoPiGo3",
                    pos=(x - 30 + dist * 2, 4))
                detected_robot_str.SetForegroundColour('red')
                sizer.AddStretchSpacer((1, 1))
                sizer.Add(detected_robot_str, (0, 1))
                sizer.AddStretchSpacer((1, 1))

        # Motion buttons
        left_button = wx.Button(self, -1, label="Left", pos=(x, y))
        sizer.Add(left_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.left_button_OnButtonClick, left_button)

        stop_button = wx.Button(self, -1, label="Stop", pos=(x + dist * 2, y))
        stop_button.SetBackgroundColour('red')
        sizer.Add(stop_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.stop_button_OnButtonClick, stop_button)

        right_button = wx.Button(self,
                                 -1,
                                 label="Right",
                                 pos=(x + dist * 4, y))
        sizer.Add(right_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.right_button_OnButtonClick, right_button)

        fwd_button = wx.Button(self,
                               -1,
                               label="Forward",
                               pos=(x + dist * 2, y - dist))
        sizer.Add(fwd_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.fwd_button_OnButtonClick, fwd_button)

        bwd_button = wx.Button(self,
                               -1,
                               label="Back",
                               pos=(x + dist * 2, y + dist))
        sizer.Add(bwd_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.bwd_button_OnButtonClick, bwd_button)

        # Led buttons
        x = 75
        y = 25
        left_led_button = wx.Button(self, -1, label="Left LED", pos=(x, y))
        sizer.Add(left_led_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.left_led_button_OnButtonClick,
                  left_led_button)

        right_led_button = wx.Button(self,
                                     -1,
                                     label="Right LED",
                                     pos=(x + dist * 4, y))
        sizer.Add(right_led_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.right_led_button_OnButtonClick,
                  right_led_button)

        y = 320
        battery_button = wx.Button(self,
                                   -1,
                                   label="Check Battery Voltage\t ",
                                   pos=(x, y))
        sizer.Add(battery_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.battery_button_OnButtonClick,
                  battery_button)

        firmware_button = wx.Button(self,
                                    -1,
                                    label="Check Firmware Version\t",
                                    pos=(x, y + dist / 2))
        sizer.Add(firmware_button, (0, 1))
        self.Bind(wx.EVT_BUTTON, self.firmware_button_OnButtonClick,
                  firmware_button)
        # Set up labels

        self.battery_label = wx.StaticText(self,
                                           -1,
                                           label=str(v) + "V",
                                           pos=(x + dist * 2 + 45, y + 6))
        sizer.Add(self.battery_label, (1, 0), (1, 2), wx.EXPAND)

        self.firmware_label = wx.StaticText(self,
                                            -1,
                                            label=str(f),
                                            pos=(x + dist * 2 + 45,
                                                 y + 6 + dist / 2))
        sizer.Add(self.firmware_label, (1, 0), (1, 2), wx.EXPAND)

        sizer.Add(self.firmware_label, (1, 0), (1, 2), wx.EXPAND)

        y = 460

        self.Show(True)