#概要
IMEのOn/Offがどうしても覚えられないので、機械に頼ることにしました。
IMEの状態をPythonで取得して、シリアル通信でArduinoに教えます。
#Python
下記の追加モジュールを使用します。pipなどでインストールしてください。
- serial
- pywin32
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は、IMC_GETOPENSTATUSを示しています。
IMEStatus = win32api.SendMessage(hWnd2 , win32con.WM_IME_CONTROL, 0x005, 0)
#COM7は、接続先のシリアルポートに応じて変更してください。
ser = serial.Serial('COM7',9600)
if IMEStatus == 0:
ser.write(b"b")
else:
ser.write(b"a")
ser.close()
sleep(0.05) # 秒単位(=50ms)
#Arduino
シリアルで受けて、LEDのOn/Offを判断しています。
arduino.ino
const int PinLED = 13;
int responseDelay = 10; // ミリ秒単位
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);
}