Stap 7: Python Code
invoer win32api, win32conseriële importeren
# Aanvankelijke cursorpositie Gevoeligheid = 0,1
cx = 0
xMax = 1900
CY = 0
yMax = 1000
# Erachter te komen welke COM-poort de Arduino is op
in het range(15) voor GMO:
Try:
ser seriële =. Serieel (com, 9600) # de seriële poort openen
Print("found on com",com+1) # als je hier de COM-poort OK is geopend
pauze # We vonden het dus stoppen met zoeken
met uitzondering van:
bedrukken ("niets COM", com + 1)
ser.flushInput() # Buffer inhoud negeren enCursor = 0 # Start met de Cursor Disbled def swPressed(): terwijl 1: x = cx + xTilt/gevoeligheid # x-Cursor centrum waarde = (toen knop werd ingedrukt) + kantelen van waarde sw = swPressed() # Controleer de knop
swState = 0 # de staat van de schakelaar
swStateD1 = 0 # de staat van de schakelaar de laatste keer
keren swStateD1 - swState # 0,1, -1: hetzelfde, enkel gedrukt, net vrijgegeven
# Lees een lijn en de newline tekens gescheiden van de rest
rx = ser.readline().decode().split('\r\n')
# print(rx) # Debug
# Nu de gegevens van de komma's te scheiden
gegevens rx[0].split(',') =
xTilt = int(data[0])
yTilt = int(data[1])
zTilt = int(data[2])
swStateD1 = swState # herinner de oude swState voordat we het updaten
swState = int(data[3])
x = max (min (xMax, x), 0) # limiet aan de coördinaten van een scherm
y = cy - yTilt/gevoeligheid
y = max (min (yMax, y), 0) # limiet aan de coördinaten van een scherm
# Het uitschakelen van de cursor als het nu ingeschakeld en de schakelaar is ingedrukt
als (enCursor en sw == 1):
enCursor = 0
win32api.keybd_event(0x20, 0,0,0) # druk op de spatiebalk om te pauzeren Flight Simulator
win32api.keybd_event (0x20, 0, win32con. KEYEVENTF_KEYUP, 0)
break
# Het inschakelen van de cursor als het nu uitgeschakeld en de schakelaar is ingedrukt
elif (~ enCursor en sw == 1):
enCursor = 1
# Klik op de linker-muisknop
(cx, cy) = win32api. GetCursorPos()
WIN32API.mouse_event (win32con. MOUSEEVENTF_LEFTDOWN,int(x),int(y),0,0)
WIN32API.mouse_event (win32con. MOUSEEVENTF_LEFTUP,int(x),int(y),0,0)
Als enCursor: win32api. SetCursorPos((int(x),int(y)))
# We zijn klaar. Sluit de seriële poort
ser.Close()