Exemplo n.º 1
0
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, wx.ID_ANY, title="Image Viewer")
        self.formViewer = FormIdentitas(self)
        self.mainViewer = ViewerPanel(self)
        self.sesiJeda = FormJeda(self)
        self.sesiLatihan = FormLatihan(self)

        self.sesiLatihan.Hide()
        self.sesiJeda.Hide()
        self.mainViewer.Hide()
        self.formViewer.Show()

        self.folderPath = ""
        self.wait = True
        self.latihan = True
        self.jenisJeda = 'INS1'  #[INS1|INS2|OPN|REST|END]
        self.jumlahLatihan = 1
        self.lockPanel = False
        self.txtINS1 = "Kepada anda akan disajikan\nFoto-foto berwarna HITAM PUTIH dan SEPHIA\n\n\n\nTugas Anda adalah\nMENARIK joystick untuk foto HITAM PUTIH\nMENDORONG Joystick untuk foto SEPHIA\n\n\nPada saat MENARIK, foto akan membesar\nPada saat MENDORONG, foto akan mengecil\nAnda diminta untuk MENARIK/MENDORONG joystick hingga maksimal\n(Tidak dapat bergerak lagi)\n\n\nSetelah itu Anda diminta untuk mengembalikan joystick ke posisi tengah kembali dan\nfoto baru akan ditampilkan\n\n\n\nGeser joystick ke kanan untuk memulai"

        self.txtINS2 = 'Berikut ini adalah sesi latihan\n\n\n\nKepada Anda akan disajikan foto pemandangan berwarna HITAM PUTIH dan SEPHIA\n\n\nTARIK joystick mendekati tubuh jika yang tersaji adalah foto berwarna HITAM PUTIH\nDORONG joystick menjauhi tubuh jika yang tersaji adalah foto berwarna SEPHIA\n\n\nIngat anda harus MENDORONG\MENARIK joystick hingga MAKSIMAL dan \nMENGEMBALIKAN joystick ke posisi tengah untuk melihat foto berikutnya\n\n\nLAKUKAN SECEPAT DAN SEAKURAT MUNGKIN\n\n\n\nGeser joystick ke kanan untuk memulai'

        self.txtOPN = 'Berikut ini adalah sesi program\n\n\n\nTARIK joystick untuk gambar HITAM PUTIH\nDORONG joystick untuk gambar SEPHIA\n\n\nIngat anda harus MENDORONG\MENARIK joystick hingga MAKSIMAL dan\nMENGEMBALIKAN joystick ke posisi tengah untuk melihat foto berikutnya\n\n\nLAKUKAN SECEPAT DAN SEAKURAT MUNGKIN\n\n\n\nGeser joystick ke kanan untuk memulai'

        self.txtREST = 'SESI 1 telah berakhir\n\n\nSilahkan tunggu instruksi selanjutnya'

        self.txtEND = 'Sesi program telah selesai\n\n\nTerima kasih atas partisipasi anda'

        self.dec = decimal.Decimal
        self.ONEPLACE = self.dec(10)**-1

        self.sesiJeda.WritePesan(self.txtINS1)
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.formViewer, 1, wx.EXPAND)
        self.sizer.Add(self.mainViewer, 1, wx.EXPAND)
        self.sizer.Add(self.sesiJeda, 1, wx.EXPAND)
        self.sizer.Add(self.sesiLatihan, 1, wx.EXPAND)
        self.SetSizer(self.sizer)

        self.Show()
        self.sizer.Fit(self)

        self.ShowFullScreen(True)
        self.joystick = wx.Joystick()
        self.joystick.SetCapture(self)
        print "self.joystick", self.joystick
        self.Bind(wx.EVT_JOY_MOVE, self.onMove)
        self.JOY_DO_SOMETHING = True
        pos = self.joystick.GetPosition()
        x, y = pos
        posx = (x - 32767) * 2 / 65535.
        posy = -(y - 32767) * 2 / 65535.  #posy = (float(y)-32767.0)/32767.0

        print "[%f,%f]" % (posx, posy)
Exemplo n.º 2
0
    def __init__(self, parent, log):

        self.log = log

        wx.Panel.__init__(self, parent, -1)

        # Try to grab the control. If we get it, capture the stick.
        # Otherwise, throw up an exception message and play stupid.
        try:
            self.stick = wx.Joystick()
            self.stick.SetCapture(self)
            # Calibrate our controls
            wx.CallAfter(self.Calibrate)
            wx.CallAfter(self.OnJoystick)
        except NotImplementedError, v:
            wx.MessageBox(str(v), "Exception Message")
            self.stick = None
Exemplo n.º 3
0
    def __init__(self):
        wx.Frame.__init__(self,
                          None,
                          wx.ID_ANY,
                          "PWS Willem Melching",
                          size=(1366, 740))
        panel = wx.Panel(self)

        notebook = Tabs(panel)
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(notebook, 1, wx.ALL | wx.EXPAND, 5)
        panel.SetSizer(sizer)
        self.Layout()

        self.Show()

        self.joy = wx.Joystick()
        self.joy.SetCapture(self)
        self.joy.SetMovementThreshold(10)
        self.Bind(wx.EVT_JOYSTICK_EVENTS, self.onJoystick)
Exemplo n.º 4
0
    def __init__(self, parent, title):
        ######################################################################
        wx.Frame.__init__(self, parent, title=title, size=(300, 600))
        panel = wx.Panel(self, -1)
        self.top_sizer = wx.BoxSizer(wx.VERTICAL)

        self.tbArduinoDebug = wx.TextCtrl(panel)
        self.lblDebug = wx.StaticText(panel, -1, "debug", (150, 50))

        self.row1_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.row1_sizer.Add(self.lblDebug)
        self.row1_sizer.Add(self.tbArduinoDebug)

        self.lblSliderL = wx.StaticText(panel,
                                        -1,
                                        "Left", (25, 50),
                                        style=wx.ALIGN_RIGHT)
        self.sldLeft = wx.Slider(
            panel, -1, 0, -255, 255, wx.DefaultPosition, (250, 50),
            wx.SL_AUTOTICKS | wx.SL_HORIZONTAL | wx.SL_LABELS)

        self.row2_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.row2_sizer.Add(self.lblSliderL)
        self.row2_sizer.Add(self.sldLeft)

        self.lblSliderR = wx.StaticText(panel,
                                        -1,
                                        "Right", (25, 50),
                                        style=wx.ALIGN_RIGHT
                                        | wx.ALIGN_CENTER_VERTICAL)
        self.sldRight = wx.Slider(
            panel, -1, 0, -255, 255, wx.DefaultPosition, (250, 50),
            wx.SL_AUTOTICKS | wx.SL_HORIZONTAL | wx.SL_LABELS)
        self.sldLeft.Bind(wx.EVT_SLIDER, self.OnSliderLeft)
        self.sldRight.Bind(wx.EVT_SLIDER, self.OnSliderRight)

        self.row3_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.row3_sizer.Add(self.lblSliderR)
        self.row3_sizer.Add(self.sldRight)

        self.btnZero = wx.Button(panel, -1, "Zero", (25, 50))
        self.btnZero.Bind(wx.EVT_BUTTON, self.OnButtonZero)

        self.row4_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.row4_sizer.Add(self.btnZero)

        self.lblSliderServo1 = wx.StaticText(panel,
                                             -1,
                                             "Servos:",
                                             style=wx.ALIGN_CENTER
                                             | wx.ALIGN_CENTER_VERTICAL)

        self.row5_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.row5_sizer.Add(self.lblSliderServo1)

        self.sldServo1 = wx.Slider(
            panel, -1, 0, 0, 179, wx.DefaultPosition, (250, 50),
            wx.SL_AUTOTICKS | wx.SL_HORIZONTAL | wx.SL_LABELS)
        self.sldServo2 = wx.Slider(
            panel, -1, 0, 0, 179, wx.DefaultPosition, (250, 50),
            wx.SL_AUTOTICKS | wx.SL_HORIZONTAL | wx.SL_LABELS)
        self.sldServo3 = wx.Slider(
            panel, -1, 0, 0, 179, wx.DefaultPosition, (250, 50),
            wx.SL_AUTOTICKS | wx.SL_HORIZONTAL | wx.SL_LABELS)
        self.sldServo4 = wx.Slider(
            panel, -1, 0, 0, 179, wx.DefaultPosition, (250, 50),
            wx.SL_AUTOTICKS | wx.SL_HORIZONTAL | wx.SL_LABELS)
        self.sldServo5 = wx.Slider(
            panel, -1, 0, 0, 179, wx.DefaultPosition, (250, 50),
            wx.SL_AUTOTICKS | wx.SL_HORIZONTAL | wx.SL_LABELS)

        self.sldServo1.Bind(wx.EVT_SLIDER, self.OnSliderServo1)
        self.sldServo2.Bind(wx.EVT_SLIDER, self.OnSliderServo2)
        self.sldServo3.Bind(wx.EVT_SLIDER, self.OnSliderServo3)
        self.sldServo4.Bind(wx.EVT_SLIDER, self.OnSliderServo4)
        self.sldServo5.Bind(wx.EVT_SLIDER, self.OnSliderServo5)
        self.row6_sizer = wx.BoxSizer(wx.VERTICAL)

        self.row6_sizer.Add(self.sldServo1)
        self.row6_sizer.Add(self.sldServo2)
        self.row6_sizer.Add(self.sldServo3)
        self.row6_sizer.Add(self.sldServo4)
        self.row6_sizer.Add(self.sldServo5)

        self.lblSpeed = wx.StaticText(panel,
                                      -1,
                                      "Speed:",
                                      style=wx.ALIGN_CENTER
                                      | wx.ALIGN_CENTER_VERTICAL)
        self.sldSpeed = wx.Slider(
            panel, -1, 0, -50, 50, wx.DefaultPosition, (250, 50),
            wx.SL_AUTOTICKS | wx.SL_HORIZONTAL | wx.SL_LABELS)
        self.lblAngle = wx.StaticText(panel,
                                      -1,
                                      "Angle:",
                                      style=wx.ALIGN_CENTER
                                      | wx.ALIGN_CENTER_VERTICAL)
        self.sldAngle = wx.Slider(
            panel, -1, 0, -100, 100, wx.DefaultPosition, (250, 50),
            wx.SL_AUTOTICKS | wx.SL_HORIZONTAL | wx.SL_LABELS)
        self.sldSpeed.Bind(wx.EVT_SLIDER, self.OnSliderSpeed)
        self.sldSpeed.Bind(wx.EVT_LEFT_UP, self.OnSliderUp)
        self.row7_sizer = wx.BoxSizer(wx.VERTICAL)

        self.row7_sizer.Add(self.lblSpeed)
        self.row7_sizer.Add(self.sldSpeed)
        self.row7_sizer.Add(self.lblAngle)
        self.row7_sizer.Add(self.sldAngle)

        self.top_sizer.Add(self.row1_sizer)
        self.top_sizer.Add(self.row2_sizer)
        self.top_sizer.Add(self.row3_sizer)
        self.top_sizer.Add(self.row4_sizer)
        self.top_sizer.Add(self.row5_sizer)
        self.top_sizer.Add(self.row6_sizer)
        self.top_sizer.Add(self.row7_sizer)

        panel.SetSizer(self.top_sizer)

        pub = rospy.Publisher('chatter', String)
        self.pub_lmotor = rospy.Publisher('lmotor_cmd', Int16)
        self.pub_rmotor = rospy.Publisher('rmotor_cmd', Int16)
        self.pub_servo1 = rospy.Publisher('servo1_cmd', Int16)
        self.pub_servo2 = rospy.Publisher('servo2_cmd', Int16)
        self.pub_servo3 = rospy.Publisher('servo3_cmd', Int16)
        self.pub_servo4 = rospy.Publisher('servo4_cmd', Int16)
        self.pub_servo5 = rospy.Publisher('servo5_cmd', Int16)
        self.pub_lwheel_vtarget = rospy.Publisher('lwheel_vtarget', Float32)
        self.pub_rwheel_vtarget = rospy.Publisher('rwheel_vtarget', Float32)
        rospy.init_node('knex_arduino_connector')
        rospy.Subscriber("arduino_debug", String, self.arduino_debug_callback)
        TIMER_ID = 200
        self.timer = wx.Timer(self, TIMER_ID)
        self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)
        SPEED_TIMER_ID = 201
        self.speed_timer = wx.Timer(self, SPEED_TIMER_ID)
        self.Bind(wx.EVT_TIMER, self.OnSpeedTimer, self.speed_timer)
        self.ds1 = 0
        self.ds2 = 0

        self.joy = wx.Joystick(1)
        self.joy.SetCapture(self)
        self.Bind(wx.EVT_JOY_BUTTON_DOWN, self.OnJoyBtnDown)
        self.Bind(wx.EVT_JOY_BUTTON_UP, self.OnJoyBtnUp)
        self.Bind(wx.EVT_JOY_MOVE, self.OnJoyMove)
        rospy.loginfo("done initializing")