Je ne me souvenais pas de l'activation / désactivation de l'IME, j'ai donc décidé de me fier à la machine. Obtenez le statut IME en Python et dites à Arduino via une communication série.
Python Utilisez les modules supplémentaires ci-dessous. Veuillez installer avec pip etc.
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 ci-dessous est IMC_Indique GET OPEN STATUS.
IMEStatus = win32api.SendMessage(hWnd2 , win32con.WM_IME_CONTROL, 0x005, 0)
#Changez COM7 en fonction du port série auquel se connecter.
ser = serial.Serial('COM7',9600)
if IMEStatus == 0:
ser.write(b"b")
else:
ser.write(b"a")
ser.close()
sleep(0.05) #Secondes (=50ms)
Arduino Il le reçoit en série et juge si la LED est allumée ou éteinte.
arduino.ino
const int PinLED = 13;
int responseDelay = 10; //Millimètres
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);
}
Recommended Posts