Ich konnte mich nicht an IME On / Off erinnern und entschied mich, mich auf die Maschine zu verlassen. Holen Sie sich den IME-Status in Python und teilen Sie Arduino die serielle Kommunikation mit.
Python Verwenden Sie die folgenden zusätzlichen Module. Bitte mit Pip etc. installieren.
python.py
from ctypes import *
from time import sleep
import win32gui
import win32con
import win32api
import serial
imm32 = WinDLL("imm32")
while True:
hWnd1 = win32gui.GetForegroundWindow()
hWnd2 = imm32.ImmGetDefaultIMEWnd(hWnd1)
#0x005 unten ist IMC_Zeigt GET OPEN STATUS an.
IMEStatus = win32api.SendMessage(hWnd2 , win32con.WM_IME_CONTROL, 0x005, 0)
#Ändern Sie COM7 entsprechend der seriellen Schnittstelle, zu der eine Verbindung hergestellt werden soll.
ser = serial.Serial('COM7',9600)
if IMEStatus == 0:
ser.write(b"b")
else:
ser.write(b"a")
ser.close()
sleep(0.05) #Sekunden (=50ms)
Arduino Es empfängt es seriell und beurteilt, ob die LED ein- oder ausgeschaltet ist.
arduino.ino
const int PinLED = 13;
int responseDelay = 10; //Millimeter
char input_char;
pinMode(PinLED, OUTPUT);
Serial.begin(9600);
void loop() {
if (Serial.available() >0){
input_char = Serial.read();
if(input_char == 'a'){
digitalWrite(PinLED, HIGH);
}else{
digitalWrite(PinLED, LOW);
}
delay(responseDelay);
}