以下の内容はhttps://lipoyang.hatenablog.com/entry/2025/09/08/161311より取得しました。


BLEでパワポのスライドショーを操作

やりたいこと

BLEデバイスPowerPointのスライドショーを操作したい。OSはWindows限定でよい。単に操作するだけならBLE HIDデバイスでキー入力(F5, ESC, ←, →など)を送ればよいが、同時にスライドショーの状態(実行中か、総スライド数、現在のスライド番号、ノートテキストなど) を取得したい。

背景

WiFi経由でPowerPointのスライドショーを操作する方法については以前に実証ずみ。

しかし、プレゼン会場はたいていの場合アウェイであり、会場のWiFiに依存する方法には不安がある。これを回避するためにテザリングをするのも不便である。かといって、デバイスWiFiのアクセスポイントにする方法では、PCをデバイスに接続している間はインターネットに接続できなくなってしまう。そこで今回は、BLEデバイスPowerPointのスライドショーを操作する方法を検討する。

1. PC側 (Python)

ライブラリのインストール
  • bleak: BLEライブラリ
  • pywin32: Windows APIを操作するためのライブラリ。
pip install bleak
pip install pywin32
bleak と pythoncom の相性問題

bleak と pythoncom は相性が悪く、以下のようなエラーが発生する。

Connection Error: Thread is configured for Windows GUI but callbacks are not working. Suspect unwanted side effects from importing 'pythoncom'.

これを回避するためには、bleak を import する前に下記を実行する。

import sys
sys.coinit_flags = 0  # MTA (Multi Threaded Apartment) モードに設定
設計
  • BLEの接続待ち、Notifyコールバック、Writeなどはメインスレッドで非同期で実行する。
  • PowerPointのCOM操作は、別のスレッドで実行する。
  • 両者のやりとりはキューを介しておこなう。
  • BLEデバイスへの接続はMACアドレス決め打ちでよしとする。
コード

ble_ppt.py · GitHub

2. BLEデバイス

使用するデバイスと開発環境
  • バイス : XIAO nRF52840
  • 開発環境 : PlatformIO / Arduinoフレームワーク
  • バイス指定 : seeed-xiao-mbed-nrf52840 (※seeed-xiao-afruitnrf52-nrf52840でないことに注意)
  • 依存ライブラリ : ArduinoBLE
  • platformio.ini は下記の通り
[env:seeed-xiao-mbed-nrf52840]
platform = https://github.com/Seeed-Studio/platform-seeedboards.git
board = seeed-xiao-mbed-nrf52840
framework = arduino
lib_deps = 
    arduino-libraries/ArduinoBLE@^1.4.1
コード

ble_ppt.cpp · GitHub




以上の内容はhttps://lipoyang.hatenablog.com/entry/2025/09/08/161311より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14