Example #1
0
def main():
    global ser
    global joy

    ser = Serial("COM6", 115200)

    joy = pyxinput.vController()
    print("id : ", joy.id)

    while True:
        line = ser.readline().decode().replace('\n', '')
        [X1, Y1, X2, Y2, B1, B2, B3, B4] = [int(x) for x in line.split(',')]

        joy.set_value('AxisLx',
                      -((min(1024, max(424, int(X1))) - 424) / 600) * 2 - 1)
        joy.set_value('AxisLy',
                      ((min(1024, max(424, int(Y1))) - 424) / 600) * 2 - 1)
        joy.set_value('AxisRx',
                      -((min(1024, max(424, int(X2))) - 424) / 600) * 2 - 1)
        joy.set_value('AxisRy',
                      ((min(1024, max(424, int(Y2))) - 424) / 600) * 2 - 1)
        joy.set_value('TriggerR', (1 - B1))

        joy.set_value('BtnA', 1 - B3)
        joy.set_value('BtnX', 1 - B4)
        joy.set_value('BtnShoulderR', 1 - B2)
Example #2
0
    def __init__(self):
        """

        """

        self._button_x = False
        self._button_y = False
        self._button_a = False
        self._button_b = False

        self._button_left_shoulder = False
        self._button_right_shoulder = False

        self._button_dpad_up = False
        self._button_dpad_right = False
        self._button_dpad_down = False
        self._button_dpad_left = False

        self._button_left_thumb = False
        self._button_right_thumb = False

        self._button_start = False
        self._button_back = False

        self._virtual_controller = pyxinput.vController(percent=False)
Example #3
0
def main():
    simCon = pyxinput.vController(1)
    # infinite loop that detects for ('w+a') or ('w+d') in order to apply double movement
    while True:

        if keyboard.is_pressed('w+a'):
            move_left(simCon)

        elif keyboard.is_pressed('w+d'):
            move_right(simCon)

        elif keyboard.is_pressed('w'):
            move_forward(simCon)
            reset_stick_x(simCon)

        elif keyboard.is_pressed('a'):
            move_true_left(simCon)
        # reset_stick_y(simCon)

        elif keyboard.is_pressed('d'):
            move_true_right(simCon)
            #reset_stick_y(simCon)

        elif keyboard.is_pressed('s'):
            move_backward(simCon)
            reset_stick_x(simCon)

        elif keyboard.is_pressed('s+a'):
            move_backLeft(simCon)

        elif keyboard.is_pressed('s+d'):
            move_backRight(simCon)

        else:
            resetStick(simCon)
Example #4
0
def main():
    Amiro = pyxinput.vController(1)

    while True:

        if keyboard.is_pressed('w+a'):
            move_left(Amiro)
        
        elif keyboard.is_pressed('w+d'):
            move_right(Amiro)
        
        elif keyboard.is_pressed('w'):
            move_forward(Amiro)
            reset_stick_x(Amiro)

        elif keyboard.is_pressed('a'):
            move_true_left(Amiro)
          
        elif keyboard.is_pressed('d'):
            move_true_right(Amiro)
          
        elif keyboard.is_pressed('s'):
            move_backward(Amiro)
            reset_stick_x(Amiro)
        
        elif keyboard.is_pressed('s+a'):
            move_backLeft(Amiro)
        
        elif keyboard.is_pressed('s+d'):
            move_backRight(Amiro)
        
        else:
            resetStick(Amiro)
Example #5
0
def main():
    controller = vController()
    handlers = dict()

    for handler in json.load(open("controller.json", "r"))["handlers"]:
        handler_command = handler["command"]
        handler_class = handler_types.get(handler["type"])
        handler_args = handler.get("args", [])
        handlers[handler_command] = handler_class(controller=controller,
                                                  **handler_args)

    pygame.midi.init()
    if pygame.midi.get_default_input_id() == -1:
        log.error("No MIDI input found (device ID is -1)!")
        exit(-1)

    log.info("Initializing MIDI input '%i'.",
             pygame.midi.get_default_input_id())
    midi = pygame.midi.Input(pygame.midi.get_default_input_id())
    log.info("Ready!")

    while True:
        try:
            if midi.poll():
                command = midi.read(1)[0][0]
                log.debug("Command is: '%s'", command)
                handler = handlers.get(command[1], None)
                if handler is not None:
                    handler.handle(command)
            time.sleep(0.001)
        except KeyboardInterrupt:
            exit(1)
    def send_input(self, terminator, freq, steering_value_deg, lock_to_lock):
        print('creating virtual xinput controller')
        virtualSteeringWheel = pyxinput.vController()
        virtualSteeringWheel.percent = True
        virtualSteeringWheel.set_value('AxisLx', 0.0)

        last_frame_overtime = 0.0
        while not terminator.value:
            start = datetime.datetime.now()

            steering = steering_value_deg.value / (lock_to_lock.value / 2)
            steering = self.clamp(steering, -1.0, 1.0)
            virtualSteeringWheel.set_value('AxisLx', steering)

            # timing management in order to achieve target frequency
            end = datetime.datetime.now()
            real_delta_t = (end - start).microseconds / 1000
            combined_delta_t = real_delta_t + last_frame_overtime
            if combined_delta_t <= 1000 / freq.value:
                sleep_time = ((1000 / freq.value) - combined_delta_t)
                time.sleep(sleep_time / 1000)
                last_frame_overtime = 0.0
            else:
                last_frame_overtime += real_delta_t - (1000 / freq.value)
                real_end = datetime.datetime.now()
                # print('art. delta_t:', (real_end - start).microseconds / 1000)

        virtualSteeringWheel.set_value('AxisLx', 0.0)
        virtualSteeringWheel.UnPlug(True)
        print('virtual xinput controller unplugged')
Example #7
0
    def live_driving(self):
        controller = pyxinput.vController()
        paused = False
        old_screens = []
        while (True):

            if not paused:
                map_screen = grab_screen(region=self.map_region)
                map_screen = cv2.cvtColor(map_screen, cv2.COLOR_BGR2RGB)
                cam_screen = grab_screen(region=self.cam_region)
                cam_screen = cv2.cvtColor(cam_screen, cv2.COLOR_BGR2RGB)
                cam_screen = cv2.resize(cam_screen, (360, 240))
                if self.data_gen.view_resize:
                    cam_screen = cv2.resize(cam_screen,
                                            self.data_gen.view_resize)
                speed_screen = grab_screen(region=self.speed_region)
                speed_screen = cv2.cvtColor(speed_screen, cv2.COLOR_BGR2RGB)
                speed_screen = cv2.cvtColor(speed_screen,
                                            cv2.COLOR_RGB2GRAY)[:, :, None]
                if self.data_gen.seq_len == 1:
                    X = [
                        x for name, x in zip(
                            ['map_view', 'cam_view', 'speed_view'], [
                                map_screen[None, :, :, :], cam_screen[
                                    None, :, :, :], speed_screen[None, :, :, :]
                            ]) if self.inputs[name]
                    ]
                else:
                    if old_screens == []:
                        old_screens = [
                            cam_screen for i in range(self.data_gen.seq_len)
                        ]

                    old_screens.append(cam_screen)
                    old_screens = old_screens[-self.data_gen.seq_len:]
                    X = np.array(old_screens)[None, :, :, :, :]
                if self.data_gen.return_buttons:
                    ax_predictions, button_predictions = self.predict(X)
                else:
                    ax_predictions = self.predict(X)
                    button_predictions = []
                print(ax_predictions)  #, X[0].shape, X[1].shape)
                self.make_input(ax_predictions[0], button_predictions,
                                controller)
                self.clock.tick(self.frame_rate)
                keys = key_check()
                # p pauses game and can get annoying.
                if 'T' in keys:

                    if paused:
                        print("unpausing")
                        paused = False
                        time.sleep(1)
                    else:
                        print("pausing")
                        paused = True
                        time.sleep(1)
                if 'Q' in keys:
                    break
Example #8
0
def connect_virtual_controlers():
    v_controler_container = []
    while True:
        try:
            v_controler_container.append(pyxinput.vController())
            logging.debug(
                f'Controller {len(v_controler_container)} connected.')
        except:
            logging.debug(f'Controller FAILED connection.')

    return v_controler_container
Example #9
0
    def __init__(self):
        # Setup virtual controller
        self.controller = pyxinput.vController()

        # Really hacky way to wake it up but hey it should work
        time.sleep(0.5)
        self.controller.set_value('BtnA', 1)
        time.sleep(0.5)
        self.controller.set_value('BtnA', 0)

        self.analog_values_y = {'old': 0., 'current': 0.}
        self.analog_values_x = {'old': 0., 'current': 0.}

        self.prev_prediction = None
Example #10
0
    def run(self):
        virtualController = pyxinput.vController(
        )  # initialize virtual controller

        dataJson = self.socket.recv(ServerExecutor.PACKET_LENGTH)
        self.socket.send("1".encode())
        while (dataJson):
            data = json.loads(dataJson)
            decoded_code = self.events_code[data["event_code"]]
            virtualController.set_value(decoded_code, data["event_state"])

            print("[Controller-ID #{}] Ping precedent packet: {} milliseconds".
                  format(self.id_controller, data["previous_ping"]))
            dataJson = self.socket.recv(ServerExecutor.PACKET_LENGTH)
            self.socket.send("1".encode())
        else:
            print("[INFO] Connection with {} interrupted.".format(
                self.id_controller))
Example #11
0
    def __init__(self):
        super(Main, self).__init__()
        uic.loadUi('gui.txt', self)
        #Handles Configuration:
        config = open('config.txt', "r+")
        self.lineEdit.returnPressed.connect(self.handleCommands)
        # self.pushButtonInstall.clicked.connect(self.onClick)
        config = config.readlines()
        titleBarHidden = config[0]
        titleBarHidden = [
            int(i) for i in titleBarHidden.split() if i.isdigit()
        ][0]
        screenSizeX = config[1]
        screenSizeX = [int(i) for i in screenSizeX.split() if i.isdigit()][0]
        screenSizeY = config[2]
        screenSizeY = [int(i) for i in screenSizeY.split() if i.isdigit()][0]

        print("Title: " + str(titleBarHidden))
        #Handles Title and low level window control (gui)
        self.titleBar = titleBarHidden
        if (self.titleBar == 0):
            self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint
                                | QtCore.Qt.FramelessWindowHint)
        else:
            self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
            self.setWindowTitle("Universal DollyCam")
        self.working_dir = "."
        self.setFixedSize(screenSizeX, screenSizeY)
        self.hideVal = 0
        self.move(0, 0)
        self.textBrowser.setText("Universal Dollycam by c4syner" + "\n")
        #Handles virtual controller and modes for the dollycam
        self.controller = pyxinput.vController()
        self.init_mode = 0  #Init mode 1 is left joystick constant velocity
        self.mode = 0  #Mode 1 is left joystick velocity only

        #Constants:
        self.camLeftX = 0
Example #12
0
def handleController(msg):
    global xcontroller

    if (not xSupport):
        print('Sad! You don\'t have Windows :(')
        return

    if ('Toggle' in msg[0]):
        if (msg[1] == '1'):
            xcontroller = vController()
        elif (xcontroller != None):
            xcontroller.UnPlug(force=True)
            del xcontroller
            xcontroller = None
        return

    if xcontroller == None:
        return

    if ('down' == msg[0] or 'up' == msg[0]):
        if ('Btn' in msg[1]):
            typeInt = 1 if msg[0] == 'down' else 0
            xcontroller.set_value(msg[1], typeInt)
        elif ('Trigger' in msg[1]):
            typeInt = 255 if msg[0] == 'down' else 0
            xcontroller.set_value(msg[1], typeInt)

    elif ('Axis' in msg[0]):
        xcontroller.set_value(msg[0], float(msg[1]))

    elif ('Dpad' in msg[0]):
        xcontroller.set_value(msg[0], int(msg[1]))

    else:
        print(msg)
        print('^Not yet handled in driver^')
Example #13
0
 def __init__(self):
     self.controller = pyxinput.vController()
Example #14
0
import tensorflow as tf
import pyxinput
from mss import mss
import cv2
import numpy as np
import time

joystick = pyxinput.vController()
MODEL_PATH = "./model/frozen_model.pb"

with tf.gfile.GFile(MODEL_PATH, "rb") as f:
    restored_graph_def = tf.GraphDef()
    restored_graph_def.ParseFromString(f.read()) # Reads the model

with tf.Graph().as_default() as graph:   # this graph variable is available outside this with block as it is defined as_default
    tf.import_graph_def(restored_graph_def, input_map=None, return_elements=None, name="") # This is to import model graph into TensorFlow

input_tensor = graph.get_tensor_by_name("input_tensor:0")
output = graph.get_tensor_by_name("output:0")

sct = mss()
mon = {'top': 38, 'left': 0, 'width': 800, 'height': 600}
with tf.Session(graph=graph) as sess:
    print("STARTING YAAY")
    while True:
        img = np.array(sct.grab(mon))
        cv2.imshow("Seen", img)
        img = cv2.cvtColor(img, cv2.COLOR_BGRA2RGB)
        img = cv2.resize(img, (200, 150))
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
Example #15
0
import pyxinput
import time

MyVirtual = pyxinput.vController(percent=False)

while True:
    for x in range(10):
        MyVirtual.set_value('BtnX', 1)
        time.sleep(0.5)
        print("Pressed X")

    for x in range(10):
        MyVirtual.set_value('BtnX', 0)
        time.sleep(0.5)
        print("Released X")
Example #16
0
#!/usr/bin/python
import socket
import threading
import pyxinput
from time import sleep
import pickle
# Define server ip and port
ip = '192.168.122.1'
port = 2222
# Create virtual controller
MyVirtual = pyxinput.vController()
# Connect to Server
conn = socket.create_connection((ip, port))
from_server = conn.makefile(mode='rb')
#Decode Sever message
#unpickler = pickle.Unpickler(file)
while True:
    #decodedServerData = unpickler.load()
    decodedServerData = pickle.load(from_server)
    #print("Raw Data:", from_server)
    #print("Unpicked Data: ", decodedServerData)
    # pyxinput will only accept values one at a time, so we need to apply the items in the dictionary one by one
    for event, state in decodedServerData.items():
        MyVirtual.set_value(event, state)
        #print('\''+event+'\''+',', state)
import serial
import time
import pyxinput
import numpy as np

ser =  serial.Serial('COM4', 250000, timeout=0)

if ser.isOpen():
    ser.close()
ser.open()

steering = 1500
throttle = 1500

controller = pyxinput.vController()

t=s=AxisRx=A=B=0

control_file = 'data_file.npy'
input_file = 'input_file.npy'

while 1:
    while(ser.inWaiting()<10):
        pass
    #print(steering)
    steering = ord(ser.read())<<8|ord(ser.read())
    throttle = ord(ser.read())<<8|ord(ser.read())
    right_stick = ord(ser.read())<<8|ord(ser.read())
    A = ord(ser.read())<<8|ord(ser.read())
    B = ord(ser.read())<<8|ord(ser.read())
    s = (steering - 1500)*0.004
Example #18
0
    virtual_controller.set_value('BtnA', btn_a)
    virtual_controller.set_value('BtnX', btn_x)
    virtual_controller.set_value('BtnY', btn_y)


if __name__ == '__main__':
    print('Loading model...')
    PATH = 'models\\'
    FILE = 'neural-throne.tfl'
    model = neural_network_model()
    model.load(PATH + FILE)
    AUTO_KEY = 'F5'
    USER_KEY = 'F6'
    STOP_KEY = 'F9'
    WINDOW_NAME = 'Nuclear Throne'
    virtual_controller = pyxinput.vController()
    usermode = True
    running = True
    while running:
        if usermode:
            virtual_controller.set_value('BtnA', keyboard.is_pressed('enter'))
            virtual_controller.set_value('BtnB', keyboard.is_pressed('escape'))
            virtual_controller.set_value(
                'AxisLx',
                keyboard.is_pressed('right') - keyboard.is_pressed('left'))
            virtual_controller.set_value(
                'AxisLy',
                keyboard.is_pressed('up') - keyboard.is_pressed('down'))
        else:
            result, screen = getScreenShot(WINDOW_NAME)
            if result:
Example #19
0
  ___  __ _  ___  __ _  __| | __ _ _ __ ___  
 / _ \/ _` |/ _ \/ _` |/ _` |/ _` | '_ ` _ \ 
|  __/ (_| |  __/ (_| | (_| | (_| | | | | | |
 \___|\__, |\___|\__,_|\__,_|\__,_|_| |_| |_|
       __/ |                                 
      |___/         
	  https://egeadam.com \n
""")

print("First Controller Setup Started")
serleft = serial.Serial("COM6", 9600,
                        timeout=1)  #Edit for your COM port and your baudrate
#print("Second Controller Setup Started")
#serright = serial.Serial("COM7", 9600, timeout = 1) #Change your port name COM... and your baudrate

virtualGamepad = pyxinput.vController()
print("Setup finished")


def translate(value, leftMin, leftMax, rightMin, rightMax):
    leftSpan = leftMax - leftMin
    rightSpan = rightMax - rightMin
    valueScaled = float(value - leftMin) / float(leftSpan)

    return rightMin + (valueScaled * rightSpan)


def retrieveData():
    data = serleft.readline().decode('ascii')
    return data
Example #20
0
 def __init__(self):
     self.controller = vController()
Example #21
0
from flask import Flask, request, jsonify
import pyxinput, time

joypad = pyxinput.vController()
app = Flask(__name__)

BUTTONS = {1: "BtnA", 2: "BtnB", 3: "BtnX", 4: "BtnY"}


@app.route("/btn-click", methods=['POST'])
def btn_click():
    data = request.json.get("button", 1)
    btn = BUTTONS.get(data, "BtnA")

    time.sleep(0.1)
    joypad.set_value(btn, 1)
    time.sleep(0.3)
    joypad.set_value(btn, 0)

    return jsonify("Btn Accepted")


if __name__ == "__main__":
    app.run(debug=True)
Example #22
0
def main():
    print("Connecting to serial on port {}...".format(SERIAL_PORT))
    try:
        s = serial.Serial(SERIAL_PORT, SERIAL_BAUD)
    except SerialException:
        print("ERROR: '{}' serial port not available".format(SERIAL_PORT))
        sys.exit(1)

    print("Creating fake XBOX 360 Controller...")
    v = pyxinput.vController()
    print("Ready!")

    x_overflow_warning_shown = False
    y_overflow_warning_shown = False

    while True:
        buf = s.read_until()
        elems = buf.split(b" ")

        buttons = elems[0]
        x = float(int(elems[1])) / JOYSTICK_MAX_VALUE_X
        y = float(int(elems[2])) / JOYSTICK_MAX_VALUE_Y
        if (x > 1.0 or x < -1.0) and not x_overflow_warning_shown:
            print(
                "WARNING: X value was larger than expected - increase JOYSTICK_MAX_VALUE_X!"
            )
            x_overflow_warning_shown = True
        if (y > 1.0 or y < -1.0) and not y_overflow_warning_shown:
            print(
                "WARNING: Y value was larger than expected - increase JOYSTICK_MAX_VALUE_Y!"
            )
            y_overflow_warning_shown = True

        # N64 A -> Xbox A / XInput Button 1
        v.set_value("BtnA", (1 if buttons[0] == 52 else 0))
        # N64 B -> Xbox B / XInput Button 2
        v.set_value("BtnB", (1 if buttons[1] == 52 else 0))
        # N64 Z -> Xbox Back / XInput Button 7
        v.set_value("BtnBack", (1 if buttons[2] == 52 else 0))
        # N64 Start -> Xbox Start / XInput Button 8
        v.set_value("BtnStart", (1 if buttons[3] == 52 else 0))

        # D-pad
        d_value = 0
        d_value |= 1 if buttons[4] == 52 else 0
        d_value |= 2 if buttons[5] == 52 else 0
        d_value |= 4 if buttons[6] == 52 else 0
        d_value |= 8 if buttons[7] == 52 else 0
        v.set_value("Dpad", d_value)

        # Skip 8 & 9

        # N64 L -> Xbox LB / XInput Button 5
        v.set_value("BtnShoulderL", (1 if buttons[10] == 52 else 0))
        # N64 R -> Xbox RB / XInput Button 6
        v.set_value("BtnShoulderR", (1 if buttons[11] == 52 else 0))

        # N64 C-up -> Xbox Left Stick Click / XInput Button 9
        v.set_value("BtnThumbL", (1 if buttons[12] == 52 else 0))
        # N64 C-down -> Xbox X / XInput Button 3
        v.set_value("BtnX", (1 if buttons[13] == 52 else 0))
        # N64 C-left -> Xbox Y / XInput Button 4
        v.set_value("BtnY", (1 if buttons[14] == 52 else 0))
        # N64 C-right -> Xbox Right Stick Click / XInput Button 10
        v.set_value("BtnThumbR", (1 if buttons[15] == 52 else 0))

        v.set_value("AxisLx", x)
        v.set_value("AxisLy", y)
Example #23
0
 def __init__(self):
     self.MyVirtual = pyxinput.vController()
     self.control_throttle = 'TriggerR'
     self.control_brakes = 'TriggerL'
     self.control_steering = 'AxisLx'
Example #24
0
 def __init__(self):
     self.virtual_controller = pyxinput.vController()
     print("Virtual xbox 360 controller crated")