• ホーム
  • ブログとニュース
  • 設計プロジェクト例
  • 顧問契約概要
  • お問い合わせ
  • …  
    • ホーム
    • ブログとニュース
    • 設計プロジェクト例
    • 顧問契約概要
    • お問い合わせ

     

    • ホーム
    • ブログとニュース
    • 設計プロジェクト例
    • 顧問契約概要
    • お問い合わせ
    • …  
      • ホーム
      • ブログとニュース
      • 設計プロジェクト例
      • 顧問契約概要
      • お問い合わせ

      PythonでBLE専用サービス(ble_manager.service)を作成する

      BLEデバイスと接続してそのデータを基にグラフィカル表示するlinuxベースのアプリケーション装置において、以下の観点からアプリケーションソフトウエアを再構築する。

      ①bluetoothデバイスと24時間通信継続する装置における通信の安定性を得ること。

      ②通信切断後の再接続のアプリ側と通信デーモン側の間の状態不一致を回避すること。

      FlutterBluePlus方式
      Flutter
      ├─ UI
      ├─ Graphics
      └─ Bluetooth ─ BlueZ


      Pythonサービス方式 

      systemd
      ├── ble_manager.service
      |  ├─ Bluetooth ─ BlueZ

       ├── Flutter.service
       ├─ UI
       └─ Graphics

      FlutterBluePlus方式にて、グラフィックス表示とbluetooth通信管理を一括で設計しているが、各種の検証試験において、BlueZデーモン側とアプリケーション側の両者間でbluetooth通信状態の不一致が発生するケースが発生している。通信シーケンスの改善を実施し、かつ状態遷移の各ポイントにおいて補償処理を追加することで、状態不一致はほぼ回避できている。

      Pythonサービス方式では、BLE制御をBlueZのD-BusAPI経由で独立したサービスとして動かせるため、Bluetooth機能をUIから分離する。Flutterは画面表示だけとし、BLE Managerは通信だけとし、役割を分離することで設計を明確にする。Pythonで ble_manager.service を作り、FlutterとはSocket通信で連携する構成である。Bluetooth通信の安定性が製品品質に直結するため、BLEをUIから独立したサービスに分離するアーキテクチャが最も堅牢で、将来の保守や機能追加にも対応しやすいと考える。

      両方の方式が完成したので、各アプリケーション毎にその適正を考慮して方式選択する予定である。

      前へ
      Copilotの従量課金での使用状況
      次へ
       サイトへ戻る
      strikingly iconStrikinglyを搭載
      クッキーの使用
      ブラウジングエクスペリエンス、セキュリティ、データ収集を向上させるためにクッキーを使用します。 同意すると、広告と分析のための クッキーの使用に同意したことになります。 クッキーの設定はいつでも変更できます。 詳しく見る
      同意する
      設定
      すべて拒否する
      クッキー設定
      こちらのクッキーは、セキュリティ、ネットワーク管理、アクセシビリティなどのコア機能を有効にします。こちらのクッキーをオフにすることはできません。
      こちらのクッキーは、訪問者がサイトをどのように操作しているかをよりよく理解し、エラーを発見するのに役立ちます。
      こちらのクッキーにより、サイトは、拡張機能とパーソナライズを提供するために行った選択を記憶することができます。
      保存