5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PythonとArduinoを連携してIMEのOn/OffをLEDで表示する

Last updated at Posted at 2020-05-06

#概要
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);
}
5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?