def _main(): try: sc = SteamController(callback=dump) sc.handleEvents() sc._sendControl(struct.pack('>' + 'I' * 1, 0x81000000)) sc._sendControl(struct.pack('>' + 'I' * 6, 0x87153284, 0x03180000, 0x31020008, 0x07000707, 0x00301400, 0x2f010000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xad020000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xad020000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xa1000000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xad020000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0x8e000000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0x85000000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xa1000000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xb4000000)) #sc._sendControl(struct.pack('>' + 'I' * 5, 0x9610730b, 0xc7191248, 0x074eff14, 0x464e82d6, 0xaa960000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xa1000000)) #sc._sendControl(struct.pack('>' + 'I' * 5, 0x9610e0b5, 0xda3a1e90, 0x5b325088, 0x0a6224d2, 0x67690000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xa1000000)) #sc._sendControl(struct.pack('>' + 'I' * 5, 0x96107ef6, 0x0e193e8c, 0xe61d2eda, 0xb80906eb, 0x9fe90000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xa1000000)) #sc._sendControl(struct.pack('>' + 'I' * 5, 0x96106e4a, 0xa4753ef0, 0x017ab50a, 0x24390f1f, 0x71fa0000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0x83000000)) #sc._sendControl(struct.pack('>' + 'I' * 6, 0xae150100, 0x00000001, 0x02110000, 0x02030000, 0x000a6d92, 0xd2550400)) sc.run() except KeyboardInterrupt: pass except Exception as e: sys.stderr.write(str(e) + '\n') print("Bye")
def _main(): try: sc = SteamController(callback=dump) for line in sys.stdin: sc.handleEvents() words = [int('0x' + x, 16) for x in line.split()] sc._sendControl(struct.pack('>' + 'I' * len(words), *words)) sc.run() except KeyboardInterrupt: pass except Exception as e: sys.stderr.write(str(e) + '\n') print("Bye")
def _main(): try: sc = SteamController(callback=dump) sc.handleEvents() sc._sendControl(struct.pack('>' + 'I' * 1, 0x81000000)) sc._sendControl( struct.pack('>' + 'I' * 6, 0x87153284, 0x03180000, 0x31020008, 0x07000707, 0x00301400, 0x2f010000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xad020000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xad020000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xa1000000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xad020000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0x8e000000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0x85000000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xa1000000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xb4000000)) #sc._sendControl(struct.pack('>' + 'I' * 5, 0x9610730b, 0xc7191248, 0x074eff14, 0x464e82d6, 0xaa960000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xa1000000)) #sc._sendControl(struct.pack('>' + 'I' * 5, 0x9610e0b5, 0xda3a1e90, 0x5b325088, 0x0a6224d2, 0x67690000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xa1000000)) #sc._sendControl(struct.pack('>' + 'I' * 5, 0x96107ef6, 0x0e193e8c, 0xe61d2eda, 0xb80906eb, 0x9fe90000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0xa1000000)) #sc._sendControl(struct.pack('>' + 'I' * 5, 0x96106e4a, 0xa4753ef0, 0x017ab50a, 0x24390f1f, 0x71fa0000)) #sc._sendControl(struct.pack('>' + 'I' * 1, 0x83000000)) #sc._sendControl(struct.pack('>' + 'I' * 6, 0xae150100, 0x00000001, 0x02110000, 0x02030000, 0x000a6d92, 0xd2550400)) sc.run() except KeyboardInterrupt: pass except Exception as e: sys.stderr.write(str(e) + '\n') print("Bye")
class SCThread(QtCore.QThread): def __init__(self, buttons=None, stick_deadzone=0.1): super(SCThread, self).__init__() self.stick_deadzone = stick_deadzone self._stick_lock = False evm = EventMapper() evm.setPadButtonCallback(Pos.LEFT, self.padtouch) evm.setPadButtonCallback(Pos.RIGHT, self.padtouch) evm.setStickAxesCallback(self.stick_axes) evm.setFirstPadTouchCallback(Pos.LEFT, self.first_padtouch) evm.setFirstPadTouchCallback(Pos.RIGHT, self.first_padtouch) evm.setGyroCallback(self.gyro) if buttons is None: buttons = ( SCButtons.STEAM, SCButtons.A, SCButtons.B, SCButtons.X, SCButtons.Y, SCButtons.LT, SCButtons.RT, SCButtons.LB, SCButtons.RB, SCButtons.LGRIP, SCButtons.RGRIP, SCButtons.START, SCButtons.BACK ) for btn in buttons: evm.setButtonCallback(btn, self.button_press) self.sc = SteamController(callback=evm.process) self.sc.handleEvents() self.sc._sendControl(struct.pack('>' + 'I' * 6, 0x87153284, 0x03180000, 0x31020008, 0x07000707, 0x00301400, 0x2f010000)) def gyro(self, pitch, yaw, roll): self.emit(GYRO, pitch, yaw, roll) def stick_axes(self, evm, x, y): if (x**2 + y**2) < 2**30 * self.stick_deadzone: self._stick_lock = False return if self._stick_lock: return rads = math.atan2(x, y) degrees = (rads if rads > 0 else rads + 2 * math.pi) * 360 / (2 * math.pi) btn = _degrees_to_btn(degrees) if btn is None: return self.emit(BUTTON, btn, True) self._stick_lock = True def button_press(self, evm, btn, pressed): self.emit(BUTTON, btn, pressed) def padtouch(self, evm, pad, x, y): signal = PAD_TOUCH_LEFT if pad == Pos.LEFT else PAD_TOUCH_RIGHT self.emit(signal, x, y) def first_padtouch(self, pad, x, y): signal = FIRST_PAD_TOUCH_LEFT if pad == Pos.LEFT else FIRST_PAD_TOUCH_RIGHT self.emit(signal, x, y) def run(self): self.sc.run() def haptic_feedback_pad(self, pos, amplitude, **kwargs): self.sc.addFeedback(pos, amplitude=amplitude, **kwargs)
def _main(): app = QtGui.QApplication([]) win = pg.GraphicsWindow(title="Steam Controller") win.resize(1000, 600) win.nextRow() p1 = win.addPlot(name="plot1", title='Pitch') win.nextColumn() p2 = win.addPlot(name="plot2", title='Roll') p2.setYLink("plot1") win.nextColumn() p3 = win.addPlot(name="plot3", title='Yaw') p3.setYLink("plot1") win.nextRow() p4 = win.addPlot(name="plot4", title='Others', colspan=5) win.nextRow() p1.addLegend() p1.showGrid(x=True, y=True, alpha=0.5) p1.setYRange(-8000, 8000) p2.addLegend() p2.showGrid(x=True, y=True, alpha=0.5) p2.setYRange(-8000, 8000) p3.addLegend() p3.showGrid(x=True, y=True, alpha=0.5) p3.setYRange(-8000, 8000) p4.addLegend() p4.showGrid(x=True, y=True, alpha=0.5) p4.setYRange(-32767, 32767) imu = { 'gpitch' : [], 'groll' : [], 'gyaw' : [], 'q1' : [], 'q2' : [], 'q3' : [], 'q4' : [], } curves = { 'gpitch' : p1.plot(times, [], pen=(0, 2), name='vel'), 'groll' : p2.plot(times, [], pen=(0, 2), name='vel'), 'gyaw' : p3.plot(times, [], pen=(0, 2), name='vel'), 'q1' : p4.plot(times, [], pen=(0, 4), name='1'), 'q2' : p4.plot(times, [], pen=(1, 4), name='2'), 'q3' : p4.plot(times, [], pen=(2, 4), name='3'), 'q4' : p4.plot(times, [], pen=(3, 4), name='4'), } def update(sc, sci): global times if sci.status != 15361: return cur = time.time() times.append(cur) times = [x for x in times if cur - x <= 10.0] for name in imu.keys(): imu[name].append(sci._asdict()[name]) imu[name] = imu[name][-len(times):] curves[name].setData(times, imu[name]) app.processEvents() sc = SteamController(callback=update) sc.handleEvents() sc._sendControl(struct.pack('>' + 'I' * 6, 0x87153284, 0x03180000, 0x31020008, 0x07000707, 0x00301400, 0x2f010000)) def closeEvent(event): global run run = False event.accept() win.closeEvent = closeEvent app.processEvents() try: i = 0 while run: i = i + 1 sc.handleEvents() app.processEvents() except KeyboardInterrupt: print("Bye")