пытаюсь сделать управление машинкой джойстиком от PS3 через компьютер dualshock 3 -> Mac OSX->arduino HC-06 1. джойстик подключаю к маку через блютус считываю данные с него pygame либой для питона 2. программа на питоне подключается через сериал порт к HC-06 и отправляет данные уже машинке проблема в следующем, при подключенном джойстике почему то занят порт сериал порт выдает такую ошибку [Errno 16] could not open port /dev/tty.HC-06-DevB: [Errno 16] Resource busy: '/dev/tty.HC-06-DevB' кто нибудь сталкивался? Код (Python): import pygame import time import serial class RC: connected = False def __init__(self): pygame.init() numJoysticks = pygame.joystick.get_count() for i in range(0, numJoysticks): name = pygame.joystick.Joystick(i).get_name() pygame.joystick.Joystick(i).init() print pygame.joystick.Joystick(i).get_name() + " initialized" self.connected = True break # button map buttons = { 0: 'select', 1: 'L3', 2: 'r3', 3: 'start', 4: 'dpad_up', 5: 'dpad_right', 6: 'dpad_down', 7: 'dpad_left', 8: 'L2', 9: 'r2', 10: 'L1', 11: 'r1', 12: 'triangle', 13: 'circle', 14: 'x', 15: 'square', 16: 'ps' } # axis map # up and right are positive for analog sticks L3 and r3 # tilting forward/right is positive # button axes are force sensors with values 0-1, 0 being when lightly pressed, 1 when pressed in fully # axis 7 seems unused... axes = { 0: ['L3_horizontal', 1], 1: ['L3_vertical', -1], 2: ['r3_horizontal', 1], 3: ['r3_vertical', -1], 4: ['tilt_leftright', 1], # value 0 when controller is level. this is rotation along axis going through centre of controller front to back 5: ['tilt_backfront', 1], # value 0 when controller is level. this is rotation along axis going through centre of controller left to right 6: ['tilt_combined', -1], # value -1 when level, 1 when flipped. this just combines axes 4 and 5 8: ['dpad_up', 1], 9: ['dpad_right', 1], 10: ['dpad_down', 1], 11: ['dpad_left', 1], 12: ['L2', 1], 13: ['r2', 1], 14: ['L1', 1], 15: ['r1', 1], 16: ['triangle', 1], 17: ['circle', 1], 18: ['x', 1], 19: ['square', 1] } def getEvents(self): eventList = {} events = pygame.event.get() for event in events: if event.type == pygame.JOYBUTTONDOWN: eventList[self.buttons[event.button]] = { 'axisValue': -1 } if event.type == pygame.JOYAXISMOTION: eventList[self.axes[event.axis][0]] = { 'axisValue': self.axes[event.axis][1] * event.value } return eventList class BT: def __init__(self): self.port="/dev/tty.HC-06-DevB" self.speed=9600 def connect(self): while True: try: self.ser = serial.Serial(self.port, self.speed, timeout=3) break except Exception,e: print e pass def echo(self): self.ser.write('A') return self.ser.read(1) bt=BT() bt.connect() while True: print bt.echo() sixAxis=RC() while True: events = sixAxis.getEvents() if events != None: for buttonName in events: print "button: " + buttonName + " axisValue: " + str(events[buttonName]['axisValue']) print bt.echo() time.sleep(0.1)
дело в том что я могу подключать несколько джойстиков одновременно и все они работают по блютусу, но они как то влияют на сериал порт похоже