Flight Simulator med Arduino och Python (7 / 9 steg)
Steg 7: Python Code
import win32api, win32conimportera följetong
# Första markörens Position Känslighet = 0,1
cx = 0
xMax = 1900
CY = 0
yMax = 1000
# Ta reda på vilken COM-port Arduino är på
för com i range(15):
försök:
ser = följetong. Följetong (com, 9600) # öppna serieporten
Print("found on com",com+1) # om du kom hit COM-porten öppnades OK
Break # Vi hittade det så sluta söka
utom:
skriva ut ("ingenting på COM", com + 1)
ser.flushInput() # ignorera buffert innehållet enCursor = 0 # Start med markören rörelsehindrade def swPressed(): medan 1: xTilt = int(data[0]) x = cx + xTilt/känslighet # x-markör = centrum värde (när knappen trycktes) + lutning värdet sw = swPressed() # Check knappen
swState = 0 # staten av växeln
swStateD1 = 0 # staten av växeln senast
återgå swStateD1 - swState # 0,1, -1: samma, bara man trycker precis släppt
# Läsa en linje och separata tecken för ny rad från resten
rx = ser.readline().decode().split('\r\n')
# print(rx) # Debug
# Nu separera data från kommatecken
data = rx[0].split(',')
yTilt = int(data[1])
zTilt = int(data[2])
swStateD1 = swState
swState = int(data[3])
x = max (min (xMax, x), 0) # gräns till samordnar den skärm
y = cy - yTilt/känslighet # y-markör = centrum värde (när knappen trycktes) + lutning värdet
y = max (min (yMax, y), 0) # gräns till samordnar den skärm
# Inaktivera markören om den aktiveras nu och trycker på switchen
om (enCursor och sw == 1):
enCursor = 0
win32api.keybd_event(0x20, 0,0,0) # tryck på blanksteg för att pausa Flight Simulator
win32api.keybd_event (0x20, 0, win32con. KEYEVENTF_KEYUP, 0)
paus
# Aktivera markören om det är inaktiverat nu och trycker på switchen
elif (~ enCursor och sw == 1):
enCursor = 1
# Klicka med vänster musknapp
(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)
om enCursor: win32api. SetCursorPos((int(x),int(y)))
# Vi är klara. Nära serieporten
ser.Close()