# TWELITE STAGE APP

TWELITE 統合環境

{% hint style="success" %}
[資料の取り扱いについて](https://twelite.gitbook.io/general/about_documents)をご参照ください。  お気付きの点がありましたら、当サポート窓口にご連絡いただければ幸いです。
{% endhint %}

{% hint style="info" %}
本資料は TWELITE STAGE APP バージョン 0.9 に対応します。
{% endhint %}

TWELITE STAGE APP (トワイライト ステージ アプリ) は、TWELITE 無線マイコンシリーズのアプリを書き換えたり、実行結果を閲覧するツールです。

{% hint style="info" %}
Windows/macOS/Linux ではコンパイラ・サンプルコードなどを格納した MWSDK が含まれます。これら詳細は以下を参照下さい。

* MWSDK全般 - <https://sdk.twelite.info/>
* MWXライブラリ - <https://mwx.twelite.info/>
  {% endhint %}

様々なプラットフォームで動作するように設計されています。

* Windows10
* macOS (High Sierra 以降)
* Linux (Ubuntu18.04)
* M5stack

※ プラットフォームによって、動作条件や配布形式、また実装機能が異なります。

![ビルド＆書き換え](/files/-M5a-cmBgYRCqehRSuu1)

![シリアル電文（無線パケット）のモニター](/files/-M5a05ca_FhIPXiyoVsj)

## 本資料について

* <https://twelite.gitbook.io/general/about_documents>を参照ください。
* 対応プラットフォームを示すため以下の記載しているページがあります。
  * `Windows` -- Windows10
  * `macOS` -- Mac OS X, macOS
  * `Linux` -- Linux (Ubuntuなど)
  * `M5Stack` -- M5Stack core, faces


# LICENSE

ライセンス

モノワイヤレス 株式会社が配布するTWELITE\_Stageの実行形式は `MW-SLA-1J,1E` が適用されます。

{% hint style="success" %}
ソースコードについては[`MW-OSSLA-1J,1E`](https://mwm5.twelite.info/v/latest/license)が適用されます。概要はリンク先を参照ください。

お客様がソースコードからビルドした場合は、非商用目的でより制限の緩和された`MW-OSSLA-1J,1E`による運用が可能です。

一部の配布パッケージ(2020/10/9現在では M5Stack用 0.8.9a パッケージのみ)では`MW-SLA-1J,1E` と `MW-OSSLA-1J,1E` とのデュアルライセンスを適用しているものもあります。パッケージ内のライセンス記述を確認してください。

商用利用では`MW-SLA-1J,1E`を選択いただくことになりますのでご注意ください。
{% endhint %}

### 利用したオープンソース成果物

高品質なソースコードを提供いただいたオープンソースプロジェクトに感謝いたします。

| 名前              | 記述                                                                                                                                                           |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| SDL2            | Simple DirectMedia Layer Copyright (C) 1997-2020 Sam Lantinga                                                                                                |
| getopt          | <p></p><p>Copyright (c) 1987, 1993, 1994</p><ul><li>The Regents of the University of California.  All rights reserved.</li></ul>                             |
| regex           | <p></p><p>regex - Regular expression pattern matching and replacement</p><ul><li>By:  Ozan S. Yigit (oz) Dept. of Computer Science York University</li></ul> |
| printf          | Copyright (c) 2014 Marco Paland                                                                                                                              |
| 東雲フォント          | <p>2001 The Electronic Font Open Laboratory</p><p><a href="http://openlab.ring.gr.jp/efont/"><http://openlab.ring.gr.jp/efont/></a></p>                      |
| M+ BITMAP FONTS | Copyright 2002-2005 COZ <coz@users.sourceforge.jp>                                                                                                           |


# 改訂履歴

reviese

ソースコードの変更履歴は <https://github.com/monowireless/mwm5> を参照ください。

## 0.9.9 - MWSTAGE2020\_10収録版

* 最上位メニューにも \[ｳｪﾌﾞ] ボタンを追加し、関連リンクをブラウザで開けるようにした。
* Linux版のフォルダ、ウェブ、VS Code で開く機能を実装した。
* TWELITE 無線モジュールが頻繁に UART 出力している場合に、書き込みメニューへ遷移しづらいことがあった

## 0.9.8a

> <https://github.com/monowireless/TWELITE_STAGE_Bin_M5Stack/releases/tag/0.9.8a>

M5Stack版で `MW-SLA-1J,E` / `MW-OSSLA-1J,E` のデュアルライセンスとし、`readme-j.txt` を更新した。

## 0.9.8

ビューア一覧表示に\[ｳｪﾌﾞ]ボタンを追加し、関連サイトを開く機能を追加など。

### 改定内容

* ビューア＞コマンダーの追加&#x20;
  * 標準アプリ 0x80 コマンド
  * NOTICE PALのLED制御 (App\_Wingsにコマンドを送付)
* ビューア＞PALビューアのNOTICE PAL対応。
* Actエクストラのメニューを追加
  * Act\_samplesより高度なもの
  * 外部のオープンソースライブラリ（センサー手続きなど）を利用したもの
* マウスによる操作を拡大 (リスト、ボタン、タブ)
  * マウス移動でフォーカス、左クリックで確定、右クリックは\[ESC]キー入力
* 画面表示負荷の低減
  * アプリケーションがバックグラウンドの時はスクリーンセーバーを無効にした
  * アプリケーションがバックグラウンドの時は、描画回数を減らして CPU 負荷を減らした
* ビルドプロジェクト(Act, TWE\_Apps, Actエクストラ)の一覧の機能強化
  * 項目選択時に下部に概要を表示 (000desc.txtを読み込む。TWE\_Descクラスにより処理)
  * プロジェクトフォルダを開く（またはVSCodeで開く)機能
  * 関連ウェブサイトを開く機能
  * ALt+Shift+m mwxライブラリ、Alt+Shift+t twesettingsライブラリを開く機能
  * ビルドメニュー中で選択中のフォルダやビルドエラーファイルを開けるようにした。
* ログ（シリアルポート入出力）機能の追加
  * (Alt/Cmd+L)でログの開始・終了
  * ログファイルを {TWELITE\_Stage 実行形式のあるディレクトリ}/log に格納
  * ファイル名は twestage\_{日付-時刻}.log
  * Shift+Alt/Cmd+L でログファイルディレクトリを開く
* その他、変更・修正など
  * シリアル(FTDI)デバイス名、IDの表示方法を変更
  * App\_UARTでインタラクティブモードに遷移しなかった問題を修正
  * ディレクトリドロップ時の挙動を変更した (これまではバイナリ書き込みになる場合があったが、メニュー遷移とした)
  * ターミナル長押し時\[C]でリセットに加え、画面クリアするようにした。

### 既知の問題

* M5Stack で設定を保存するときにハングアップし、設定内容が初期化される場合があります。

## 0.8.9

2020\_05 リリース版

* ウインドウアイコンの追加
* BINファイル一覧画面での最大リスト数の制約を緩和 (win/linux/mac)
* Glancerビューアの追加
* 解説文面等の調整
* コンソール画面の描画の調整
* ファーム書き込み後の移動先画面(インタラクティブモードかターミナルか）の設定が動作していなかった
* Alt(or Cmd)+W の割り当てを変更
* その他不具合の修正

## 0.8.6

Linux 版リリース初版

## 0.8.5

リリース初版


# 最新版の取得

get latest version

TWELITE STAGE アプリは以下の方法で配布しています。

### TWELITE STAGE SDK

> <https://mono-wireless.com/jp/products/stage/index.html>

Windows/Mac/Linuxプラットフォーム用で、開発ツールなどを含め一式を配布します。

### TWELITE STAGEバイナリ配布

最新のTWELITE STAGE SDK から TWELITE STAGE アプリのみの更新がある場合は、以下より配布します。

{% hint style="warning" %}
TWELITE STAGEアプリは、安定板として配布される最新版のTWELITE STAGE SDKでの動作を目的としています。より旧いSDKでは動作しなかったり正常動作しない場合があります。
{% endhint %}

Windows10

> <https://github.com/monowireless/TWELITE_Stage_BIN_Win>

Mac (macOS)

> <https://github.com/monowireless/TWELITE_Stage_BIN_macOS>

M5Stack

> <https://github.com/monowireless/TWELITE_STAGE_Bin_M5Stack>

### MWM5ライブラリ

TWELITE STAGE のソースコードを含む MWM5 ライブラリは以下より入手できます。

> <https://github.com/monowireless/mwm5>


# インストール

install

環境に依存して、本アプリケーションが動作しない、また、各種設定が必要な場合があります。問題が発生した場合は、本資料の記述を参考に環境を整備いただくようお願いいたします。

{% hint style="warning" %}
開発環境を構築するためには、ソフトウェア群のインストール、またこれらの利用許諾に同意する必要があります。また、PC、ワークステーション上でセキュリティ設定等が必要になる場合があります。

* 配布時には十分注意しておりますが、ウィルスなどの確認はお客様のほうでも留意いただくようお願いいたします。
* お客様のセキュリティの考え方や運用（例：外部アプリケーションのインストールの可否）については、お客様の環境の管理者にご確認ください。

また、開発環境をインストールまた動作するにあたり、OSが介在し設定等必要になる場合があります（例：開発元が不明なアプリケーションの実行。開発環境または紹介するツール群の多くは、アプリケーションは開発元を証明する仕組みが組み込まれせん）。設定方法については、一般の情報を参考いただくようお願いいたします。
{% endhint %}


# Windows

TWELITE\_Stage インストール (Windows10)

`Windows`&#x20;

### 環境

以下の環境で開発しています。

* Windows10 バージョン 1903
* VisualStudio 2019 (32bit ビルド)

### 動作に必要要件

* FTDI 社の FT232 シリーズが動作するようにデバイスドライバのインストールが必要な場合があります。MONOSTICK や TWELITE-R が認識できていない場合は、<https://www.ftdichip.com> より D2XX ドライバを導入してみてください。
* **Visual Studio 2019 の  Visual C++ 頒布可能コード**（ランタイムライブラリ）が必要になる場合があります。アプリケーションの起動時にエラーが出て起動しない場合は、本パッケージで再配布する **TWELITE\_Stage¥INSTALL¥VC\_redist.x86.exe** またはマイクロソフト社のウェブサイトから入手して、インストールしてください。配布バイナリは 32bit です。


# macOS

TWELITE\_Stage インストール (macOS)

`macOS` &#x20;

### 環境

以下の環境で開発しています。

* macOS Mojave (10.14.6)
* macOS Catalina (10.15.4)

### 追加的なインストールや警告ダイアログについて

* ダウンロードアーカイブには署名しておりません。実行時には、インターネットからダウンロードされたアプリケーションとしてセキュリティ警告が出る場合があります。
* TWELITE\_Stage をインストールしたパスからの実行許可を要求される場合があります。
* ビルド実行時に make ユーティリティのインストールダイアログが出る場合があります。
* ツールチェインにはコード署名がなされていますが、コード署名が正しく認証されない場合は、ビルドツールチェイン (ba-elf-gcc など) の実行形式一つずつについて、動作許可を求められる場合があります。

上記は TWELITE\_Stage の動作のためには許可を与えたり、インストール作業が必要になります。

#### 参考: make ユーティリティの手動インストール

{% tabs %}
{% tab title="OS X" %}
※ OSバージョンの違いなどにより、別の手順で行う必要がある場合があります。

コマンドドライン (bash) にて、make を実行した時エラーが出る場合は XCode のインストールを行います。

```bash
$ xcode-select --install
```

インストール完了後、make を入力して以下のメッセージが出れば OK です。

```bash
$ make
make: *** No targets specified and no makefile found.  Stop.
```

{% endtab %}
{% endtabs %}

### シリアルポートの取り扱いについて

MONOSTICKやTWELITE-R には FTDI社 (<https://www.ftdichip.com>) の FT232 シリーズの半導体が使用されています。利用するためにはデバイスドライバについて対処が必要になる場合があります。

TWELITE\_Stageを起動しても、シリアルポートが表示されない場合は、FTDI社のドライバをアンロードする必要があります。

#### 参考：FTDI社のユーティリティ

{% hint style="danger" %}
このユーティリティは当社のMONOSTICKやTWELITE-Rが挿入された時に、OS標準のデバイスドライバのロードを抑制するものですが、当社以外のデバイスに(同じUSBのIDを持つもの)対しても抑制します。
{% endhint %}

<https://www.ftdichip.com/Drivers/D2XX.htm> より D2xxHelper をダウンロードして使用してください。当アーカイブ TWELITE\_Stage/INSTALL フォルダにも同じものを収録しています。

#### 参考：FTDI社デバイスドライバの手動アンロード

{% tabs %}
{% tab title="OS X" %}
FTDI 関連のドライバをアンロードします。

```bash
$ sudo kextunload -b com.apple.driver.AppleUSBFTDI
```

{% endtab %}
{% endtabs %}


# Linux

TWELITE\_Stage インストール (Linux)

`Linux` &#x20;

{% hint style="warning" %}
TWELITE R2 のUSBデバイスIDが従来の0403:6001から0403:6015に変わっています。udevの設定追加が必要です。
{% endhint %}

{% hint style="danger" %}
32bit版は用意しておりません。
{% endhint %}

{% hint style="warning" %}
Linux環境はディストリビューションやバージョンによって、用意されているパッケージの種類が違っています。個別にパッケージ等のインストールや設定が必要になる場合があります。

エラーメッセージ等を手がかりに一般の情報を参照いただくようお願いいたします。
{% endhint %}

### 環境

TWELITE STAGE は以下の環境で開発・動作確認しています。

* Ubuntu 16.04, 18.04, 20.04
* NNLinux Beta8 64bit
* Centos7

### デバイスドライバ

TWELITE STAGE から MONOSTICK や TWELITE-R を認識するためには、ftdi\_sioモジュールをアンロードし、また、USBデバイスに対して読み書き権限が必要になります。

{% hint style="info" %}
USBデバイスのIDは以下のようになります。

* ベンダーID 0x0403
* プロダクトID 0x6001(MONOSTICK,TWELITE R) または 0x6015 (TWELITE R2)&#x20;
  {% endhint %}

この設定を自動化するための udev の設定スクリプト(Ubuntu, CentOS) を用意しています。`/etc/udev/rules.d` に定義をコピーして、設定をリロードしています。設定後は USB デバイスを抜き差ししてから `TWELITE_Stage.run` を実行してください。起動直後の画面で USB デバイスが表示されれば、設定が反映されています。

#### Ubuntu 16.04, 18.04. 20.04

```
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
$ sudo ./set_udev_sudo.sh
```

定義ファイル（読みやすいように改行しています）

```
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
   MODE="0666",
   RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015",
   MODE="0666",
   RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
```

#### Centos 7

```
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/centos/
$ sudo ./set_udev_sudo.sh
```

定義ファイル（読みやすいように改行しています）

```
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
   MODE="0666", 
   RUN+="/bin/sh -c '/usr/sbin/rmmod ftdi_sio'"
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015",
   MODE="0666", 
   RUN+="/bin/sh -c '/usr/sbin/rmmod ftdi_sio'"
```

### アプリケーション登録

必要に応じてお使いのデスクトップ環境に合わせて、プログラムを登録してください。

#### Ubuntu 16.04, 18.04, 20.04

Ubuntu用の定義ファイル生成スクリプトを用意しています。

```
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
$ ./make_launch_icon.sh
```

このスクリプトは `.desktop` ファイル（アプリ定義）を`$HOME/.local/share/applications` に作成します。

スクリプト実行後に、アプリケーション一覧に TWELITE STAGE のアイコンが追加されます。


# M5Stack

`M5Stack`&#x20;

M5Stack用の書き換えは以下をご覧ください。

{% embed url="<https://github.com/monowireless/TWELITE_STAGE_Bin_M5Stack>" %}

## ハードウェア接続

{% hint style="info" %}
M5Stack Core または faces をお使いの方は TWELITE STAGE ボードを利用することを推奨します。
{% endhint %}

#### TWELITE STAGE ボード

TWELITE STAGE ボードのデータシートをご覧ください。

{% embed url="<https://mono-wireless.com/jp/products/stage-board/>" %}

#### 最小限の接続

TWELITE DIPとの接続例です。シリアルポート(UART)のTX,RXのみのシンプルな接続です。この接続では TWELITE 上のファームウェアの書き込みなどが行えません。

```
[M5Stack 15P]

    GPIO03
    GPIO01
    GPIO16 --- TWELITE DIO6/UART0 TX (TWELITE DIP #10)
    GPIO17 --- TWELITE DIO7/UART0 RX (TWELITE DIP #3)
    GPIO02
    GPIO05
    GPIO25
    GPIO26
    GPIO35
    GPIO36
       RST
       BAT
       3V3 --- TWELITE VCC (TWELITE DIP #28)
        5V
       GND --- TWELITE GND (TWELITE DIP #1,14)
```

#### シリアルポート以外の接続

以下の配線をすることで PGM/RESET/SET ピンが接続されます。TWELITE STAGEアプリケーションの全機能を利用する場合は以下の接続が必要になります。

{% hint style="warning" %}
ハードウェアの接続構成によっては、結線してはいけない場合もあります。ハードウェアの接続については M5Stack の資料も参考の上、十分注意して行ってください。

例： M5Stack faces の GPIO05 ピンは、キーパッドの割り込みピン（出力）が接続されているため、M5Stack側で出力制御を行うことはできません（故障の原因になりえます）。TWELITE STAGEアプリケーションでは、キーパッドに対応するI2Cデバイスを検出した場合は、出力制御しないようにしています。
{% endhint %}

```
[M5Stack 15P]

    GPIO03
    GPIO01
    GPIO16 --- TWELITE DIO6/UART0 TX (TWELITE DIP #10)
    GPIO17 --- TWELITE DIO7/UART0 RX (TWELITE DIP #3)
    GPIO02 --- TWELITE PGM   (TWELITE DIP #7)
    GPIO05 --- TWELITE DIO12 (TWELITE DIP #15)
    GPIO25
    GPIO26 --- TWELITE RESET (TWELITE DIP #21)
    GPIO35
    GPIO36
       RST
       BAT
       3V3 --- TWELITE VCC (TWELITE DIP #28)
        5V
       GND --- TWELITE GND (TWELITE DIP #1,14)
```

※ 上記配線にはPS/2接続は記載していません。


# 使用方法

operation manual


# キー操作・マウス操作

`Windows` `macOS` `Linux` `M5Stack`&#x20;

TWELITE STAGEアプリを通じた操作について解説します。

### 共通のキー&#x20;

`Windows` `macOS` `Linux` `M5Stack`&#x20;

| キー     | 意味           |
| ------ | ------------ |
| ESC    | キャンセル、前画面に戻る |
| Enter  | 入力、選択        |
| カーソル↑↓ | 項目の選択        |

### ヘルプ画面

`Windows` `macOS` `Linux`&#x20;

Windows/macOS/Linuxでは、Alt(またはCmd)を押し続けることでヘルプ画面を表示します。ヘルプ画面ではAlt(Cmd)と一緒に操作できるキーの説明や一部動作状況を表示します。

![Alt(Cmd)を入力中の表示](/files/-MJBJbPKjfW8-8O7Bvo-)

### Alt(Cmd)+操作

`Windows` `macOS` `Linux`&#x20;

Windows/macOS/LinuxでのAlt(Cmd)を押しながらの操作について解説します。表中ではAlt(Cmd)+の表記は省略しています。Alt(Cmd)を押すとヘルプ画面が出てきて使用可能なキーは確認できますが、下表に補足します。

| キー              | 意味                                                                                                                                                                |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| I               | <p>+ + + を入力します。インタラクティブモードに入るキーシーケンスです。<br>※ スリープによる間欠動作を行うアプリは + + + ではインタラクティブモードになりません。</p>                                                                   |
| R               | モジュールをリセットする。TWELITE R や MONOSTICK の機能を用いてリセットピンの制御を行います。                                                                                                         |
| A, S, D         | A, B, C ボタンを押します。                                                                                                                                                 |
| Shift + A, S, D | A, B, C ボタンを長押しします。                                                                                                                                               |
| C               | 表示されている画面の文字列をクリップボードにコピーします。（画面によって範囲は異なります）                                                                                                                     |
| V               | クリップボードからキーボード入力としてペーストします。                                                                                                                                       |
| F               | フルスクリーンに遷移します。Shift+Fは、可能であれば、より拡大します。                                                                                                                            |
| G               | <p>画面の描画方法を変更します。320x240の液晶画面をエミュレートしていますが、拡大時の描画方式として（1. 液晶モニタ風の描画 / 2. ブラウン管風の描画  / 3. ドットを目立たせた拡大 / 4. ドットをぼやかせた拡大）の４種類が選択できます。</p><p>※ 設定メニューで起動時設定にできます。</p> |
| J               | <p>画面サイズを選択します。選択可能な画面サイズは（640x480 / 960x720 / 1280x720 / 1280x960 / 320x240）です。</p><p>※ 設定メニューで起動時設定にできます。</p>                                                   |
| Q               | TWELITE STAGE を終了します。                                                                                                                                             |
| 0               | シリアルポートを切断し、再度シリアルポートの一覧を表示します。                                                                                                                                   |
| 1,2,..          | シリアルポートを選択します。                                                                                                                                                    |
| L               | シリアルポートの入出力のログを開始します。終了時にはログファイルが Windows であればメモ帳、macOS であれば ログビューアで開かれます。Shift+L でログ格納フォルダを開きます。                                                                 |

### マウスによるA,B,Cボタン

`Windows` `macOS` `Linux`&#x20;

Windows/macOS/Linuxでは、M5Stack にあるハードウェアボタンをエミュレートするため、画面下部にマウスを移動すると `[ A ]` `[ B ] [ C ]` といったオーバーレイ表示が行われます。ボタンはクリック（ボタン押上）と、長押しクリックをエミュレートします。

![画面下部の仮想\[ B \]ボタンが表示されている例](/files/-MJBJp7pzZUUgxgafw9b)

### マウスによる画面中の操作 (v0.9.7以降)

`Windows` `macOS` `Linux`&#x20;

Windows/macOS/Linuxでは、TWELITE STAGE の画面構成は文字列のみで構成されますが、メニューやボタン、タブについてはマウスによる操作が可能です。

![ボタン\[△(c)\]にポインタを移動した例](/files/-MJBK2JdkL97woi8R7s-)

| マウス        | 意味                                                |
| ---------- | ------------------------------------------------- |
| マウスポインタの移動 | クリック操作が可能な範囲にポインタを移動すると、文字列が反転したり文字の色が変わります。      |
| 左クリック      | 要素を選択します。クリック直後に要素中の文字列が太字表示になり、約0.3秒後に選択が実行されます。 |
| 右クリック      | ESCキーの入力を行います。                                    |
| ホイール       | リスト項目では項目の上下選択を行います。                              |


# 画面

### Windows/Mac/Linux

`Windows` `macOS` `Linux`&#x20;

![画面例 (Windows10)](/files/-MJAqhSTtueu_ua9i3gZ)

TWELITE STAGEはコンソール画面（コマンドライン）から起動するアプリケーションです。コンソール画面とウインドウ画面の両方に情報が出力されます。

コンソール画面には、ターミナルと同様の出力が行われます。

{% hint style="info" %}
一部の環境でコンソール画面の入力を受け付けますが、確認済みの正式機能という位置づけではありません。
{% endhint %}

### M5Stack

`M5Stack`&#x20;

![App\_Tweliteビューア画面例(最新版ではありません)](/files/-MJFLUgXTAfgZi-iLkh4)

M5Stackでは、320x240画面上の液晶と３つのボタンを用いて操作します。各種操作にはキーボードを必須とするものもあるため[キーボード接続](/0.9/usage/use_with_m5stack#kbdo)を推奨します。


# シリアルポート選択

`Windows` `macOS` `Linux`&#x20;

Windows/macOS/Linux では、始動時にTWELITE無線マイコンが接続されているシリアルポートを選択する画面になります。

{% hint style="warning" %}
シリアルポートは Alt(Cmd)+0,1,2,... のキー操作でいつでも切り替えが可能です。
{% endhint %}


# メインメニュー

`Windows` `macOS` `Linux` `M5Stack`&#x20;

階層化されたメニューの最上位です。

![メニュー](/files/-MJAq3c3nQJ8Z0qiwfZI)


# ビューア

`Windows` `macOS` `Linux` `M5Stack`&#x20;

ビューアは、シリアルポート経由で接続したTWELITE 無線マイコンからの情報を表示したり、反対に司令（コマンド）を送ったりします。

各々のビューアは、比較的小規模なプログラムで mwm5 ライブラリの使用方法のサンプルを兼ねています。

###

###


# ターミナル

`Windows` `macOS` `Linux` `M5Stack`&#x20;

ANSIエスケープシーケンス（の一部）に対応した簡易ターミナルです。TWELITE 無線マイコンと直接入出力を行います。

![](/files/-MJBEbgxX8uEQF8-PmJ2)

| 操作         |                                                                                                                                    |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| \[ A ]     | + + + シーケンスの入力（インタラクティブモード）                                                                                                        |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                                                                                                                   |
| \[ B ]     | 大きなフォントで表示する。最初の画面の部分領域を表示します。カーソルが画面中に表示されるように領域を選びますが、画面出力によっては見たい部分が見えない場合もあります。                                                |
| \[ B ] 長押し | 折返し制御のON/OFF。標準では折返し表示を行うようになっていますが、折り返ししないように表示することもできます。画面右端以降の文字列は表示されません。                                                      |
| \[ C ]     | ファーム書換画面に移動します。ファームウェアの開発中には頻繁にソースコードの修正、動作確認、ビルド＆書き込みを行うため、ショートカットを用意しています。                                                       |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。                                                                                                |
| ESC ESC    | <p>ESCキーを２回素早く入力することで、この画面を抜けます。</p><p>※ 殆どの画面ではESCキーを１回押すことで画面から抜ける操作となっていますが、ターミナルではESCキーの単独入力を使用する場合があるため、２回連続入力の割当になっています。</p> |


# 標準アプリ ビューア

`Windows` `macOS` `Linux` `M5Stack`&#x20;

[App\_Twelite(標準アプリ)](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/)の[0x81コマンド](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/step3-81.html)を解釈します。

![](/files/-MJBFBg43E63HIoHg6Jl)

TWELITE無線マイコンにはApp\_Twelite(標準アプリ)またはApp\_Wingsを書き込んでおき、通信相手からのシリアルメッセージが表示されていることを確認してから使用します。

通信相手はApp\_Twelite(標準アプリ)で、標準アプリのボタンやアナログ入力の状態のメッセージ (0x81メッセージ) を受信すると、その内容を mwm5 のパーサーライブラリにより解釈して表示します。

| 操作         |                                     |
| ---------- | ----------------------------------- |
| \[ A ]     | 割当なし                                |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                    |
| \[ B ]     | フォントを変更します。                         |
| \[ B ] 長押し | テスト用のダミーデータによる画面表示を行います。            |
| \[ C ]     | 割当なし                                |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。 |
| ESC        | ESCキーを入力することで、この画面を抜けます。            |


# PAL ビューア

`Windows` `macOS` `Linux` `M5Stack`&#x20;

[TWELITE PAL](https://mono-wireless.com/jp/products/twelite-pal/)の[通知メッセージ](https://wings.twelite.info/how-to-use/parent-mode/receive-message/app_pal)を解釈します。

![](/files/-MJBFY06RyYgQ9UTIXz9)

TWELITE無線マイコンにはApp\_Wingsを書き込んでおき、通信相手のTWELITE PALからのシリアルメッセージが表示されていることを確認してから使用します。事前にApp\_WingsのアプリケーションIDやチャネルを設定しておく必要があります。

通信相手はTWELITE PALです。

| 操作         |                                     |
| ---------- | ----------------------------------- |
| \[ A ]     | リストの前ページに移動する。                      |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                    |
| \[ B ]     | フォントを変更します。                         |
| \[ B ] 長押し | テスト用のダミーデータによる画面表示を行います。            |
| \[ C ]     | リストの次ページに移動する。                      |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。 |
| ESC        | ESCキーを入力することで、この画面を抜けます。            |

App\_Wings経由で無線パケット由来のシリアルメッセージが得られたときに、PAL子機のID (1..32まで) に対応するリスト項目に、PALの種別とセンサー情報などを簡易表示します。

現在表示されるリスト画面中に新しく受信した情報が表示されたときは、そのエントリ行にカーソルが移動します。


# グランサー

`Windows` `macOS` `Linux` `M5Stack`&#x20;

Glancerはglanceする人という英単語で、[受信メッセージ中の情報](https://wings.twelite.info/how-to-use/parent-mode/receive-message)を簡易表示するものです。TWELITE無線マイコンにはApp\_Wingsを書き込んでおき、通信相手 (App\_Twelite, TWELITE PAL, ... アプリケーションIDとチャネルが一致すれば混在も可) からの情報を表示します。

画面は２種類の構成になっています。

####

#### 一覧表示

![](/files/-MJBFlPsBSJhsvv73N6z)

通信相手からの情報を列挙します。表示内容は（メッセージの種別、論理ID、シリアルID、LQI(Lq)、電源電圧(情報に含まれていれば)、受信時間）です。

| 操作         |                                      |
| ---------- | ------------------------------------ |
| \[ A ]     | リストの前項目に移動する。                        |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                     |
| \[ B ]     | 選択表示に移行します。                          |
| \[ B ] 長押し | 項目をソートします。ソートを実行するたびに、ソートキーは順に変わります。 |
| \[ C ]     | リストの次項目に移動する。                        |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。  |
| ESC        | ESCキーを入力することで、この画面を抜けます。             |

#### 選択表示

![](/files/-MJBFvy0qpYjUT7lM6rF)

一覧表示で項目を移動し反転表示になったところで選択操作を行うことで、この画面に遷移します。特定の通信相手に関する情報を到着順に表示します。

選択されてからの受信パケット数と LQI の平均値が表示されます。

| 操作         |                                     |
| ---------- | ----------------------------------- |
| \[ A ]     | 割当なし                                |
| \[ A ] 長押し | この画面を抜け、選択画面に戻る。                    |
| \[ B ]     | 割当なし                                |
| \[ B ] 長押し | 割当なし                                |
| \[ C ]     | 割当なし                                |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。 |
| ESC        | この画面を抜け、選択画面に戻る。                    |


# コマンダー

`Windows` `macOS` `Linux` `M5Stack`&#x20;

コマンダーは、TWELITE無線マイコンにシリアルメッセージを送付するものです。コマンダーの最初の画面は留意事項について記載しています。

画面上部にはテキストで表現されたタブがあり、これをマウスでクリックすることでタブ中の画面に移動します。

| 操作         |                                     |
| ---------- | ----------------------------------- |
| \[ A ]     | タブの移動（左）                            |
| \[ A ] 長押し | この画面を抜け、選択画面に戻る。                    |
| \[ B ]     | 割当なし                                |
| \[ B ] 長押し | 割当なし                                |
| \[ C ]     | タブの移動（右）                            |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。 |
| ESC        | この画面を抜け、選択画面に戻る。                    |

#### タブ：TWELITE

この画面は [App\_Twelite(標準アプリ)](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/)の [0x80 コマンド](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/step3-80.html)を生成し、送付します。TWELITE無線マイコンにはApp\_TweliteまたはApp\_Wingsを書き込んで、アプリケーションID・チャネルを設定し、通信相手からメッセージが受信されていることを確認します。

![](/files/-MJBGAPnPT6bV6xjyTYz)

| 項目       | 内容                                                                                                                                                      |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 宛先       | 送信先です。自身が子機の場合は「親機:0」宛を指定してください。自身が親機の場合は「全子機＝0x78」または特定の子機ID(1..8まで指定可能)を指定します。                                                                        |
| DI1..DI4 | DI1からDI4までの設定状態です。■は選択（LOW=GNDレベル）、□は(HIGH=VCCレベル)を意味します。下項目のSELを指定してください。                                                                              |
| SEL      | 各DIの選択ビット（0ならDIの指定は無視し、1なら指定を有効化する）                                                                                                                     |
| PWM1..4  | <p>PWMのデューティ比を設定します。0はGNDレベル相当、1024(100%)はVCCレベル相当です。N.A.にしたPWMポートは変更しません。</p><p>※ TWESTAGE基板のPWM1のLEDはVCCからの吸い込みとなっているため、0で最も明るく点灯し、100%では消灯となります。</p> |

各項目を変更するたびにコマンドが生成されます。送信ボタンを押すと、現在の設定のコマンドを再度送信します。

#### タブ:NOTICE

この画面は通知[PAL(NOTICE PAL)](https://mono-wireless.com/jp/products/twelite-pal/sense/notice-pal.html)の[LED制御用のコマンド](https://wings.twelite.info/how-to-use/parent-mode/transemit-command/0x90-command)を生成します。TWELITE無線マイコンにはApp\_Wingsを書き込んで、アプリケーションID・チャネルを設定し、通信相手からメッセージが受信されていることを確認します。

![](/files/-MJBGHxXeBkYn3fv1Pkg)

| 項目    | 内容                                                  |
| ----- | --------------------------------------------------- |
| 子機ID  | 送信先です。1..8を指定します。子機にも同じIDを割り振っておきます。                |
| 色     | 点灯色を７色から指定します。白は２種類ありますが、１つはRGBの混色で１つは白色LED単体の点灯です。 |
| 明るさ   | 0..15で指定します。0は消灯です。                                 |
| 点灯点滅  | 点灯または点滅パターンを選択します。                                  |
| 点灯時間  | コマンド発行後、一定時間経過すると自動的に消灯する機能です。                      |
| 消灯ボタン | 消灯メッセージを生成します。                                      |
| 点灯ボタン | 現在の設定を送信します。                                        |

各項目を変更するたびにコマンドが生成されます。点灯ボタンを押すと、現在の設定のコマンドを再度送信します。

#### 画面下部の表示

画面下部には、コマンドが生成されたタイムスタンプと `:`で始まるコマンドが表示されます。クリップボードにはこの画面の内容がコピーされます。


# アプリ書換

`Windows` `macOS` `Linux` `M5Stack`&#x20;

TWELITE無線マイコンのアプリ（ファームウェア）を書き換えます。

`Windows` `macOS` `Linux` では、アクト(Act)などソースコードからのビルド（コンパイル）を行い、書き込みます。

`M5Stack`では、[SDカードにあらかじめコピー](/0.9/usage/use_with_m5stack#apuri)しておいた、ビルド済みの.BINファイル(ファームウェア）を書き込むことができます。


# BINから選択

`Windows` `macOS` `Linux` `M5Stack`&#x20;

ビルド済みのアプリ(.BINファイル)を書き込みます。

![](/files/-MJAwJ-3DE1k5MrZ3LIB)

メニューを選択すると、ファイル一覧が表示されます。書き込みたいファームウェアを選択してください。

メニュー選択前に、書き込みむBINファイルを以下に格納しておきます。

| プラットフォーム            | 場所                          |
| ------------------- | --------------------------- |
| Windows, Mac, Linux | {MWSTAGEフォルダ}/BIN           |
| M5Stack             | SDカード最上位フォルダにBINフォルダを作成しておく |

BINフォルダにはTWELITE STAGEでビルドした .BIN ファイル（各プロジェクトのbuildフォルダ以下に格納）を、ファイル名を変更せず格納しておきます。

```
../BIN/App_Wings_MONOSTICK_BLUE_L1304_V1-1-3.bin
       App_Wings_MONOSTICK_RED_L1304_V1-1-3.bin
       App_Twelite_BLUE_L1304_V1-9-1.bin
       App_Twelite_RED_L1304_V1-9-1.bin
       ...
```

{% hint style="warning" %}
ファイル名によりBLUE/REDの識別を行っています。
{% endhint %}


# Actビルド＆書換

`Windows` `macOS` `Linux`&#x20;

アクト(Act)のビルドと書き換えを行います。 (Windows/Mac/Linux)

{% hint style="success" %}
アクト(Act)の記述の参考となる小規模なソースコードが中心です。
{% endhint %}

![](/files/-MJAwUrcBIgKglLNmSCn)

この画面を開くと、プロジェクト一覧が表示されます。書き込みたいプロジェクトを選択すると、ビルド～書き込みを行います。書き込み終了後に`Enter`または`[ B ]`ボタンを押すことで、TWELITE無線モジュールをリセットし、インタラクティブモード画面（またはターミナル画面、要設定）に遷移します。

[ビルド～書き込み画面](/0.9/usage/screens/main_menu/firm_prog/build_screen)

### フォルダ

ビルド対象となるプロジェクトは以下になります。

```
{MWSTAGEインストールフォルダ}/MWSTAGE/Act_samples
```

### 操作

| 操作                             |                                                            |
| ------------------------------ | ---------------------------------------------------------- |
| \[ A ]                         | メニュー選択 ↑                                                   |
| \[ A ] 長押し                     | この画面を抜け、前メニューに戻る                                           |
| \[ B ]                         | 選択                                                         |
| \[ B ] 長押し                     | 関連ウェブサイト（プロジェクトフォルダの`000desc.txt`に登録がある場合）をOS標準のブラウザで開きます。 |
| \[ C ]                         | メニュー選択 ↓                                                   |
| \[ C ] 長押し                     | フォルダ（プロジェクト、関連フォルダ）を開きます。設定メニューでVS Codeで開くように設定できます。       |
| ESC                            | この画面を終了し、書換メニューに戻ります。                                      |
| マウスクリック \[ｳｪﾌﾞ]                | 関連ウェブサイトを開きます。                                             |
| マウスクリック \[ﾌｫﾙﾀﾞ] または \[VSCode] | 関連フォルダを開きます。                                               |
| マウスクリック \[▽] または \[△]          | 次ページ、前ページに移動します。                                           |


# TWELITE APPS ビルド＆書換

`Windows` `macOS` `Linux`&#x20;

TWELITE APPSのビルドと書き換えを行います。 (Windows/Mac/Linux)

{% hint style="success" %}
TWENET C API によるC言語で記述され、そのまま利用いただく比較的規模の大きいソースコードが中心です。
{% endhint %}

![](/files/-MJAxLSUKw3MpxMzOhqG)

この画面を開くと、プロジェクト一覧が表示されます。書き込みたいプロジェクトを選択すると、ビルド～書き込みを行います。書き込み終了後に`Enter`または`[ B ]`ボタンを押すことで、TWELITE無線モジュールをリセットし、インタラクティブモード画面（またはターミナル画面、要設定）に遷移します。

[ビルド～書き込み画面](/0.9/usage/screens/main_menu/firm_prog/build_screen)

### フォルダ

ビルド対象となるプロジェクトは以下になります。

```
{MWSTAGEインストールフォルダ}/MWSTAGE/Wks_TweApps
```

### 操作

| 操作                             |                                                            |
| ------------------------------ | ---------------------------------------------------------- |
| \[ A ]                         | メニュー選択 ↑                                                   |
| \[ A ] 長押し                     | この画面を抜け、前メニューに戻る                                           |
| \[ B ]                         | 選択                                                         |
| \[ B ] 長押し                     | 関連ウェブサイト（プロジェクトフォルダの`000desc.txt`に登録がある場合）をOS標準のブラウザで開きます。 |
| \[ C ]                         | メニュー選択 ↓                                                   |
| \[ C ] 長押し                     | フォルダ（プロジェクト、関連フォルダ）を開きます。設定メニューでVS Codeで開くように設定できます。       |
| ESC                            | この画面を終了し、書換メニューに戻ります。                                      |
| マウスクリック \[ｳｪﾌﾞ]                | 関連ウェブサイトを開きます。                                             |
| マウスクリック \[ﾌｫﾙﾀﾞ] または \[VSCode] | 関連フォルダを開きます。                                               |
| マウスクリック \[▽] または \[△]          | 次ページ、前ページに移動します。                                           |


# Actエクストラ

`Windows` `macOS` `Linux`&#x20;

アクト(Act)のビルドと書き換えを行います。 (Windows/Mac/Linux)

{% hint style="success" %}
Actエクストラは、外部のオープンソースライブラリなどを利用したもの、比較的複雑な処理を行うものを収録しています。
{% endhint %}

![](/files/-MJAxaXz6up7JICu3gbK)

この画面を開くと、プロジェクト一覧が表示されます。書き込みたいプロジェクトを選択すると、ビルド～書き込みを行います。書き込み終了後に`Enter`または`[ B ]`ボタンを押すことで、TWELITE無線モジュールをリセットし、インタラクティブモード画面（またはターミナル画面、要設定）に遷移します。

[ビルド～書き込み画面](/0.9/usage/screens/main_menu/firm_prog/build_screen)

### フォルダ

ビルド対象となるプロジェクトは以下になります。

```
{MWSTAGEインストールフォルダ}/
    MWSTAGE/Act_extras
```

### 操作

| 操作                             |                                                            |
| ------------------------------ | ---------------------------------------------------------- |
| \[ A ]                         | メニュー選択 ↑                                                   |
| \[ A ] 長押し                     | この画面を抜け、前メニューに戻る                                           |
| \[ B ]                         | 選択                                                         |
| \[ B ] 長押し                     | 関連ウェブサイト（プロジェクトフォルダの`000desc.txt`に登録がある場合）をOS標準のブラウザで開きます。 |
| \[ C ]                         | メニュー選択 ↓                                                   |
| \[ C ] 長押し                     | フォルダ（プロジェクト、関連フォルダ）を開きます。設定メニューでVS Codeで開くように設定できます。       |
| ESC                            | この画面を終了し、書換メニューに戻ります。                                      |
| マウスクリック \[ｳｪﾌﾞ]                | 関連ウェブサイトを開きます。                                             |
| マウスクリック \[ﾌｫﾙﾀﾞ] または \[VSCode] | 関連フォルダを開きます。                                               |
| マウスクリック \[▽] または \[△]          | 次ページ、前ページに移動します。                                           |


# 指定

`Windows` `macOS` `Linux`&#x20;

フォルダまたは.BINファイルをTWELITE STAGE APP 画面中にドラッグ＆ドロップできます。ドロップした対象に対して操作を行うときに選択します。

{% hint style="info" %}
.BINファイルをドロップしたときは、そのファイルが格納されるフォルダをドロップした場合と同様の振る舞いで、そのフォルダにあるファームウェア一覧が表示されます。
{% endhint %}


# 再書換

`Windows` `macOS` `Linux`&#x20;

直前に指定・書換実行した項目を再選択します。

{% hint style="info" %}
選択した項目によって、以下のいずれかの振る舞いになります。

* 選択プロジェクトの再書換
* 直線選択した一覧画面
  {% endhint %}


# ビルド・書換画面

`Windows` `macOS` `Linux`&#x20;

### ビルド中

ビルド中の画面です。ビルドコマンドの内容はコンソール画面に出力されます。画面中の ... はビルドしているファイル数、下部の暗い色の表示はビルドしているファイル名です。

![](/files/-MJB-Exn4EwmDqRsQ7Yr)

####

### ビルドエラー

![](/files/-MJB0yKfjhDAur8_U-sq)

ビルドがエラーの場合は、上記のような画面になります。再ビルドの実行やエラーログの表示を行えます。また、一定時間でタイムうとして直線のメニューに戻ります。

画面上のエラーメッセージは、代表的なもののみ表示されます。ビルドが失敗したときエラー内容のメッセージが表示されない場合もあります。

| 操作         |                                                                                             |
| ---------- | ------------------------------------------------------------------------------------------- |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                                                                            |
| \[ B ]     | エラー時に再ビルドする                                                                                 |
| \[ C ]     | <p>エラーログを表示する (Windows/Mac)</p><p>エラーログは<code>{プロジェクトフォルダ}/build/builderr.log</code>です。</p> |
| \[ C ] 長押し | フォルダ（プロジェクト、関連フォルダ）を開きます。設定メニューでVS Codeで開くように設定できます。                                        |
| ESC        | この画面を終了し、書換メニューに戻ります。                                                                       |

### 書換中

ビルドが成功するとファームウェアを書き込む画面になります。

![](/files/-MJB-VCWXwvwHMfThICx)

### 書換失敗

![](/files/-MJB3eBHuCufJkSRc2p2)

書換がエラーの場合は、上記のような画面になります。

| 操作         |                                                                              |
| ---------- | ---------------------------------------------------------------------------- |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                                                             |
| \[ B ]     | 再度書換を行う（直前の書き換えメニューに戻ります。再書換のメニュー項目が選択されている状態なので、もう一度\[ B ]を押すことで再書換操作になります） |
| ESC        | この画面を終了し、書換メニューに戻ります。                                                        |

### 書換完了

![](/files/-MJB-7S1q7-lykMTuCiz)

書換が無事成功すると上記のような表示になります。

| 操作         |                                                             |
| ---------- | ----------------------------------------------------------- |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                                            |
| \[ B ]     | TWELITE無線モジュールをリセットして、インタラクティブモード画面（または設定によりターミナル）画面に移動します。 |
| ESC        | この画面を終了し、書換メニューに戻ります。                                       |


# インタラクティブモード

`Windows` `macOS` `Linux` `M5Stack`&#x20;

インタラクティブモードへの遷移と操作を行います。

{% hint style="info" %}
インタラクティブモード画面を使用しない場合、ターミナルによるインタラクティブモードの操作は可能です。ターミナルでは + + + の入力やSETピン、リセット操作を手動で行います。
{% endhint %}

### インタラクティブモード画面の動作フロー

大まかな処理の流れを記載します。

```
[画面黒背景にする]
  ↓
[TWELITE無線マイコンリセット (制御可能ならSET=LO)]
  ↓
<間欠動作アプリのインタラクティブモードメッセージを検出？> --YES--> [操作画面]へ
  ↓タイムアウト
['+' を３回入力]
  ↓
<通常アプリのインタラクティブモードメッセージを検出？> --YES--> [操作画面]へ
  ↓タイムアウト
[操作画面へ] ※ この状態はインタラクティブモードではない

[操作画面]
  ↓
<インタラクティブモード脱出メッセージ?> --> [終了]
  ↓
<画面離脱操作 [ A ] 長押しなど> --> [終了]
  ↓
<ESC ?> -> <入力中判定> --NO-> [終了]
  ↓            ↓
[入力文字列をTWELITE無線モジュールへ送信]
  ↓
[操作画面]へ戻る

[終了]
  ↓
[TWELITE無線マイコンリセット]
  ↓
[画面離脱] インタラクティブモード画面を終了し前の画面へ戻る  
```


# TWELITE STAGEの設定

`Windows` `macOS` `Linux` `M5Stack`&#x20;

各種設定を行います。

{% hint style="warning" %}
この画面のメニューはマウス操作できません。
{% endhint %}

以下の解説のメニュー中では、プラットフォームによっては存在しない項目がありますが、全てを列挙して解説します。

共通メニュー以外の色設定については、解説を省略します。

### ルートメニュー

```
共通設定
 ターミナル
 標準アプリ ビューア
 ＰＡＬ ビューア
 グランサー(簡易モニタ)
 コマンダー
 アプリ書換
 インタラクティブモード
ｾｰﾌﾞﾃﾞｰﾀ ﾕｰﾃｨﾘﾃｨ(ﾀﾞﾝﾌﾟ/消去)
情報
```

### 共通設定

```
a: (      0x00) 起動アプリ指定
G: (      0x00) 画面サイズ・描画方法
F: (          ) シリアルデバイスID
k: (         1) PS/2キーボードレイアウト
f: (0x00FFFFFF) 文字色
b: (0x005A0032) 背景色
```

| 設定             | 内容                                                                                                                                                                                                                         |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 起動アプリ          | <p>TWELITE STAGE始動時にビューアアプリに移動する設定です。設定値は1..{ビューアアプリメニューで列挙されている数}です。<br>※ シリアルデバイスIDを設定しておかないと、始動時に接続するシリアルデバイス選択画面で入力待ちになります。</p>                                                                                        |
| 画面サイズ・描画方法     | <p><code>Windows</code> <code>macOS</code> <code>Linux</code> XYの２桁の文字で指定します(X:画面サイズ Y:描画方法) </p><ul><li> X 0:640x480 1:960x720 2:1280x720 3:1280x960 4:1920x1080 5:320x240</li><li>Y 0:LCD風 1:CRT風 2:ぼやけ 3:ブロック</li></ul> |
| シリアルデバイスID     | <p><code>Windows</code> <code>macOS</code> <code>Linux</code> 設定はシリアルデバイス名または数値の1..9 を指定します。<br>※ 数値の場合はデバイス列挙順になります。</p>                                                                                                  |
| PS/2キーボードレイアウト | `M5Stack` PS/2キーボードのレイアウトを指定します。0が英語、1が日本語レイアウトです。主に記号の配列が違います。                                                                                                                                                            |
| 文字色・背景色        | <p>文字色、背景色を指定します。共通設定の色設定値は他の画面の設定にも継承されます。他の画面で未設定の場合は共通設定の色設定が採用されます。</p><p>色はRGB 24bitを１６進数で指定しますが、内部的には16bit 565 形式に値が丸められます。</p>                                                                                      |

### アプリ書換

```
f: (0x00FFFFFF) 文字色
b: (0x005A0032) 背景色
j: (         0) ビルド時のmakeジョブ数
v: (         0) codeでフォルダを開く(VSCode)
n: (         0) 書換完了後の画面
```

| 設定                    | 内容                                                                                                                                                                            |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ビルド時のmakeジョブ数         | <p><code>Windows</code> <code>macOS</code> <code>Linux</code> ビルドを行う際の並列ジョブ数です。適切な数を設定することでビルド時間の短縮を期待できます。<br>規定値0は論理プロセッサ数の半分でジョブ数を計算しています。目安としては論理プロセッサ数を上限とすると良いでしょう。</p> |
| codeでフォルダを開く (VSCode) | `Windows` `macOS` `Linux` 1を設定することでOS標準のフォルダウインドウの替わりにcodeコマンド（VS Code）でフォルダを開きます。                                                                                            |
| 書換完了後の画面              | `Windows` `macOS` `Linux` `M5Stack`1を設定することでインタラクティブモード画面の替わりに、ターミナルを開きます。                                                                                                    |

### セーブデータユーティリティ

```
r: Read sector.
R: Read ALL sectors.
e: Erase sector.
E: Erase ALL sectors.
```

この画面ではデータセーブ領域のメンテナンスを行うユーティリティです。EEPROM(64バイトを１セクタとして最大60セクタ、3840バイト)をエミュレートしています。

| 設定 | 内容                                                |
| -- | ------------------------------------------------- |
| r  | セクタを読み出します。0..59を入力すると、入力したセクタ番号のセクタの内容を表示します。    |
| R  | （YESを入力すると全セクタの読み出しを行いますが、一番最後の部分しか表示されません）       |
| e  | セクタを消去(0xFF)します。0..59を入力すると、入力したセクタ番号のセクタが消去されます。 |
| E  | YESを入力すると全セクタを消去します。                              |

{% hint style="info" %}
`Windows` `macOS` `Linux` では`TWELITE_Stage.sav`ファイルに保存されます。\
`M5Stack`ではフラッシュメモリのEEPROMエミュレート領域に保存されます。
{% endhint %}


# シリアルポートの選択

`Windows` `macOS` `Linux`&#x20;

シリアルポートを選択しなおします。

{% hint style="info" %}
`Alt(Cmd)+0`, `Alt(Cmd)+1,2,..` による操作を行っても構いません。
{% endhint %}


# M5Stackでの利用

`M5Stack` &#x20;

M5Stack特有の動作や利用方法について記載します。TWELITE STAGEボードが接続されていることを前提とします。

## 利用するGPIOについて

TWELITE STAGE APPでは、以下のGPIOを利用しています。

| 接続先       |                    |
| --------- | ------------------ |
| GPIO16,17 | TWELITE UART 接続    |
| GPIO02    | TWELITE PRGピン      |
| GPIO05    | TWELITE SETピン(DI1) |
| GPIO26    | TWELITE RSTピン      |
| GPIO35,36 | PS/2 キーボードコネクタ     |

※ TWELITE STAGEボードでは、回路保護を目的とした抵抗などが配線されています。詳しくは[回路図](https://mono-wireless.com/jp/products/stage-board)を参照ください。

{% hint style="danger" %}
上記、使用されているGPIOピンとの接続先については十分配慮してください。

以下は特に注意を払う必要があります。

* TWELITE 無線マイコンの当該ピンの設定を出力とする。
  * 例えばTWELITE STAGE ボードではGPIO05にDIO12(DI1)が接続されていますが、このピンをGNDに直接落したり、ファームウェアからDIO12を出力設定かつLOWに設定したりした場合、M5StackからGPIO05をHIGHレベル出力すると過大電流が流れます。
* これらのピンに（TWELITE STAGEボード以外の）別のデバイスを接続している。
  * 後述するfacesのキーパッドが該当します。TWELITE STAGE APPでは、起動時にキーパッドのI2Cデバイスを検出できた場合は、GPIO5の制御を省略するようにしています。
    {% endhint %}

## キーボード

TWELITE STAGE アプリでは、多くの操作をキーボード前提としております。以下のキーボードに対応しています。

### PS/2コネクタ

PS/2 コネクタ PS/2 キーボードを接続することが出来ます。USB共用タイプの一部など、場合によっては動作しないことも考えられます。

### CardKB

M5Stack 純正のカード型キーボード [CardKB](https://docs.m5stack.com/#/en/unit/cardkb) (Grove端子接続)です。

### M5Stack faces QWERTYタイプキーパッド

M5Stack faces の QWERTY タイプキーパッドが利用できます。

{% hint style="warning" %}
キーパッドの割り込みピンがTWELITE STAGE ボードで利用するSETピンと衝突するため、TWELITE STAGE起動時のI2Cバスチェックでキーパッドを検出した場合は、TWELITE STAGE APP ではSETピン制御を行わないようにしています。

同様に１０キーパッドなども同じピンを割り込み用に使用しています。

TWELITE PALなどスリープによる間欠動作するファームウェアでは、設定（インタラクティブモード）画面に入るためにSET=LOWとして電源投入（リセット）を行いますが、この操作を手動で行う（具体的にはTWELITE STAGEボードのDI1ボタンをリセットを行う瞬間だけ押しておく）必要があります。
{% endhint %}

キーパッドを利用する場合、以下の割り当てを行っています。

| キー         | 割り当て      |
| ---------- | --------- |
| `Alt+1..9` | 数字の`1..9` |
| `Alt+0`    | `ESC`     |

## アプリ書換

TWELITE 無線マイコン用のファームウェアを M5Stack から書き込むことが出来ます。

{% hint style="info" %}
Windows/Mac/Linuxにあるアクト(Act)のビルドなどは出来ません。
{% endhint %}

FAT32フォーマットしたSDカード上の最上位フォルダに BIN フォルダを作成し、BIN フォルダ中にファームウェアをコピーしておきます。

{% hint style="warning" %}
ファームウェアのファイル名により一部識別（RED/BLUE用）しているので、ファイル名はWin/Mac/Linux用のTWELITE STAGE でビルドしたファイル名は変更しないようにしてください。
{% endhint %}


# ログ機能

`Windows` `macOS` `Linux`&#x20;

TWELITE 無線マイコンとのシリアル通信のログを記録することができます。

### ログの開始

Alt(Cmd)+Lキーを押します。

![](/files/-MJRpPI5kgvpnIosu5MB)

### ログ記録の終了

ログ記録中にもう一度 Alt(Cmd) + L キーを押します。

![](/files/-MJRq8NVn51GiijeM-Gh)

ログの記録が終了し、その時のログファイルがOS標準の方法(Windowsならメモ帳、macOS ならコンソール)で開かれます。

### ログの記録

TWELITE 無線マイコンから受信した文字列→そのまま記録されます

TWELITE 無線マイコンに送信した文字列→１文字ずつWindowsの場合は `｢ ｣`macOS/Linuxは `« »` で囲って記録します。

例えば`«t»`とある場合はキーボードから`t`を入力したことを意味します。

### ログ記録のフォルダとファイル名

{TWELITE STAGE APP の実行形式のあるフォルダ}/log にログ開始時の日時を元にしたファイル名で保存されます。

Alt(Cmd)+Shift+L を押すことで、そのフォルダを開きます。

![](/files/-MJRr6B_OZu7_JEFcFZp)


# TWELITE STAGE APP

TWELITE 統合環境

{% hint style="success" %}
[資料の取り扱いについて](https://twelite.gitbook.io/general/about_documents)をご参照ください。  お気付きの点がありましたら、当サポート窓口にご連絡いただければ幸いです。
{% endhint %}

{% hint style="danger" %}
この資料は TWELITE STAGE SDK 2020-12 (MWSTAGE2020\_12),  TWELITE STAGE APP 1.0  に基づいています。
{% endhint %}

TWELITE STAGE APP (トワイライト ステージ アプリ) は、TWELITE 無線マイコンシリーズのアプリを書き換えたり、実行結果を閲覧するツールです。

{% hint style="info" %}
Windows/macOS/Linux ではコンパイラ・サンプルコードなどを格納した MWSDK が含まれます。これら詳細は以下を参照下さい。

* MWSDK全般 - <https://sdk.twelite.info/>
* MWXライブラリ - <https://mwx.twelite.info/>
  {% endhint %}

様々なプラットフォームで動作するように設計されています。

* Windows10
* macOS (High Sierra 以降)
* Linux (Ubuntu18.04)
* Raspberry Pi (Raspberry Pi 3 Model B, Lcd Touch Screen, Raspberry Pi OS August-2020)
* M5stack

※ プラットフォームによって、動作条件や配布形式、また実装機能が異なります。

![ビルド＆書き換え](/files/-M5a-cmBgYRCqehRSuu1)

![シリアル電文（無線パケット）のモニター](/files/-M5a05ca_FhIPXiyoVsj)

## 本資料について

* <https://twelite.gitbook.io/general/about_documents>を参照ください。
* 対応プラットフォームを示すため以下の記載しているページがあります。
  * `Windows` -- Windows10
  * `macOS` -- Mac OS X, macOS
  * `Linux` -- Linux (Ubuntuなど)
  * `RasPi` -- RaspberryPi
  * `M5Stack` -- M5Stack core, faces


# LICENSE

ライセンス

モノワイヤレス 株式会社が配布するTWELITE\_Stageの実行形式は `MW-SLA-1J,1E` が適用されます。

{% hint style="success" %}
ソースコードについては[`MW-OSSLA-1J,1E`](https://mwm5.twelite.info/v/latest/license)が適用されます。概要はリンク先を参照ください。

お客様がソースコードからビルドした場合は、非商用目的でより制限の緩和された`MW-OSSLA-1J,1E`による運用が可能です。

一部の配布パッケージ(2020/10/9現在では M5Stack用 0.8.9a パッケージのみ)では`MW-SLA-1J,1E` と `MW-OSSLA-1J,1E` とのデュアルライセンスを適用しているものもあります。パッケージ内のライセンス記述を確認してください。

商用利用では`MW-SLA-1J,1E`を選択いただくことになりますのでご注意ください。
{% endhint %}

### 利用したオープンソース成果物

高品質なソースコードを提供いただいたオープンソースプロジェクトに感謝いたします。

| 名前              | 記述                                                                                                                                                           |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| SDL2            | Simple DirectMedia Layer Copyright (C) 1997-2020 Sam Lantinga                                                                                                |
| getopt          | <p></p><p>Copyright (c) 1987, 1993, 1994</p><ul><li>The Regents of the University of California.  All rights reserved.</li></ul>                             |
| regex           | <p></p><p>regex - Regular expression pattern matching and replacement</p><ul><li>By:  Ozan S. Yigit (oz) Dept. of Computer Science York University</li></ul> |
| printf          | Copyright (c) 2014 Marco Paland                                                                                                                              |
| 東雲フォント          | <p>2001 The Electronic Font Open Laboratory</p><p><a href="http://openlab.ring.gr.jp/efont/"><http://openlab.ring.gr.jp/efont/></a></p>                      |
| M+ BITMAP FONTS | Copyright 2002-2005 COZ <coz@users.sourceforge.jp>                                                                                                           |


# 改訂履歴

reviese

ソースコードの変更履歴は <https://mwm5.twelite.info/changes> および　<https://github.com/monowireless/mwm5> を参照ください。

改訂履歴の最新バージョンと、各プラットフォーム向けの配布バージョンと一致しない場合があります。

## 1.0.8 MWSTAGE2021\_09収録版

* `[ A ]` `[ B ]` `[ C ]`ボタンで、ポインタから外れたボタンが残ってしまう場合があった
* STAGE APPでEnter入力の際にTWELITEに対してCRLFを送信するようにした
* MacのFTDIライブラリを更新しApple Silicon(M1)でもシリアル仲介プログラムを利用しなくても、動作できるようになった
* Windowsでmsysツール群のPATHを内部設定し、期待しないmakeが呼び出されないようにした
* TWELITE未接続でも書き込み画面に移動できるようにした(B,Rキーを入力し、対象のTWELITEモデルを指定する)
* VSCodeを利用する設定を行った場合は、ActやTweAppsを選択したときに、ビルドを実行せず、build/以下の.binファイルを書き込む画面を開くようにした。（ビルドはVSCodeから実施します）
* いくつかの環境変数を内部的に設定し、TWELITE STAGEから起動したVSCodeにこれらを参照させることで、VSCodeから適切なビルドを実行、VSCodeのコード解釈に対して適切なライブラリソースを参照できるようにした
* MWSDKディレクトリ以下にサンプルコードが格納されているが、ビルド対象のディレクトリをドロップすることで、MWSDK以外のディレクトリでもビルドや書き込み作業をできるようにした（ディレクトリ名に空白や日本語文字などが含まれてはいけません）
* 始動時のコンソール画面に、内部のディレクトリ設定や環境変数の設定内容を表示するようにした
* 終了時は１秒待ってからSTAGE APPを終了するようにした

## 1.0.7pre2

* Raspberry Pi の対応を強化 (1.0.7pre2)
  * serial0 の対応（TWELITE STAGE HAT)
  * Zero 向けビルドを追加(対応ライブラリでビルド＆描画フェード機能を無効化)
  * X11 デスクトップ向けビルドを追加
* 一般のFTDIデバイス(FT232,FT230)でも利用できるようにした。ファームウェア書き込みモードは手動で行う必要があります
* Windowsで、シリアルポート選択画面で`c`キーを押すことでWindowsで割り当てられているCOMポートを表示する機能を追加した
* ボーレートを115200bpsから変更できるようにした
* 描画フェード機能を無効にするコマンドラインオプション(`-E 0`)を追加。

## 1.0.3 MWSTAGE2020\_12収録版

* TWELITE CUE対応（パーサー・CUEビューア）
* 書換メニューで、書き込み時にベリファイ（比較）を行うようにした。
* Apple Silicon暫定対応（`TWELITE_Stage.command` はユニバーサルアプリ、シリアル処理用の外部コマンド`sersrv_ftdi.command`、Toolsは Rosetta2 で動作可能な intel バイナリを再ビルド、シリアル通信は外部コマンド経由のため遅くなります)
* ディレクトリ構成で `MWSTAGE/MWSDK/Tools` を `MWSTAGE/Tools`に移動した。(MWSDKをMWSDK\_COMMONレポジトリをそのまま利用できるようにするため)
* TWELITE\_Stage.ini (起動ファイル名から拡張子を取り除き .ini を付加) を、起動時に読み込みMWSDKディレクトリを選択できるようにした。(古い版のライブラリ一式を簡単に切り替えられるようにした)
* 画面描画用のSDL2ライブラリを 2.0.12 に変更した (Windows, MacOS, RaspberryPi)。
* Windows では static ビルドとして DLL ファイル不要とした。
* make -j による並列ビルド数を(物理CPU数 - 1)とした。
* 書換メニューのいくつかの場所で、シリアルポートの再オープンを明示的に行うようにした。デバイスの抜き差しを行ったときなどにUSB接続が切断した場合などに、復帰しやすいようにした。
* Alt(Cmd)+Shift+m, t で mwx, twesettings を開くとき `TWENET/usever.mk` 記載のディレクトリを

  　開くようにした。
* \[Raspberry Pi] 初回起動時に /dev/serial0 での書込メニュー遷移が失敗する問題を修正。

### 既知の問題

* 起動時にAlt(Cmd)押し下げ時のヘルプメッセージが出現しない場合がある。Alt(Cmd)+0を入力することで表示されます。
* 書換メニューでファイル名が長すぎる場合に、行の行事が乱れる場合がある。
* Apple Siliconでの動作については十分な検証を行っていません。

## 0.9.11 MWSTAGE2020\_10, Raspberry Pi 版 (暫定版)

(※包括的な検証を実施しないバージョンです)

* Raspberry Pi での動作
* その他、機能調整

## 0.9.9 - MWSTAGE2020\_10収録版

* 最上位メニューにも \[ｳｪﾌﾞ] ボタンを追加し、関連リンクをブラウザで開けるようにした。
* Linux版のフォルダ、ウェブ、VS Code で開く機能を実装した。
* TWELITE 無線モジュールが頻繁に UART 出力している場合に、書き込みメニューへ遷移しづらいことがあった

## 0.9.8a

> <https://github.com/monowireless/TWELITE_STAGE_Bin_M5Stack/releases/tag/0.9.8a>

M5Stack版で `MW-SLA-1J,E` / `MW-OSSLA-1J,E` のデュアルライセンスとし、`readme-j.txt` を更新した。

## 0.9.8

ビューア一覧表示に\[ｳｪﾌﾞ]ボタンを追加し、関連サイトを開く機能を追加など。

### 改定内容

* ビューア＞コマンダーの追加&#x20;
  * 標準アプリ 0x80 コマンド
  * NOTICE PALのLED制御 (App\_Wingsにコマンドを送付)
* ビューア＞PALビューアのNOTICE PAL対応。
* Actエクストラのメニューを追加
  * Act\_samplesより高度なもの
  * 外部のオープンソースライブラリ（センサー手続きなど）を利用したもの
* マウスによる操作を拡大 (リスト、ボタン、タブ)
  * マウス移動でフォーカス、左クリックで確定、右クリックは\[ESC]キー入力
* 画面表示負荷の低減
  * アプリケーションがバックグラウンドの時はスクリーンセーバーを無効にした
  * アプリケーションがバックグラウンドの時は、描画回数を減らして CPU 負荷を減らした
* ビルドプロジェクト(Act, TWE\_Apps, Actエクストラ)の一覧の機能強化
  * 項目選択時に下部に概要を表示 (000desc.txtを読み込む。TWE\_Descクラスにより処理)
  * プロジェクトフォルダを開く（またはVSCodeで開く)機能
  * 関連ウェブサイトを開く機能
  * ALt+Shift+m mwxライブラリ、Alt+Shift+t twesettingsライブラリを開く機能
  * ビルドメニュー中で選択中のフォルダやビルドエラーファイルを開けるようにした。
* ログ（シリアルポート入出力）機能の追加
  * (Alt/Cmd+L)でログの開始・終了
  * ログファイルを {TWELITE\_Stage 実行形式のあるディレクトリ}/log に格納
  * ファイル名は twestage\_{日付-時刻}.log
  * Shift+Alt/Cmd+L でログファイルディレクトリを開く
* その他、変更・修正など
  * シリアル(FTDI)デバイス名、IDの表示方法を変更
  * App\_UARTでインタラクティブモードに遷移しなかった問題を修正
  * ディレクトリドロップ時の挙動を変更した (これまではバイナリ書き込みになる場合があったが、メニュー遷移とした)
  * ターミナル長押し時\[C]でリセットに加え、画面クリアするようにした。

### 既知の問題

* M5Stack で設定を保存するときにハングアップし、設定内容が初期化される場合があります。

## 0.8.9

2020\_05 リリース版

* ウインドウアイコンの追加
* BINファイル一覧画面での最大リスト数の制約を緩和 (win/linux/mac)
* Glancerビューアの追加
* 解説文面等の調整
* コンソール画面の描画の調整
* ファーム書き込み後の移動先画面(インタラクティブモードかターミナルか）の設定が動作していなかった
* Alt(or Cmd)+W の割り当てを変更
* その他不具合の修正

## 0.8.6

Linux 版リリース初版

## 0.8.5

リリース初版


# 最新版の取得

get latest version

TWELITE STAGE アプリは以下の方法で配布しています。

### TWELITE STAGE SDK

> <https://mono-wireless.com/jp/products/stage/index.html>

Windows/Mac/Linuxプラットフォーム用で、開発ツールなどを含め一式を配布します。

### TWELITE STAGEバイナリ配布

更新履歴に最新のTWELITE STAGE SDK から TWELITE STAGE アプリの更新がある場合や、M5Stack版の配布は以下より行います。配布バージョンはGitHub上のtagを確認ください。

{% hint style="warning" %}
TWELITE STAGEアプリは、安定板として配布される最新版のTWELITE STAGE SDKでの動作を目的としています。より旧いSDKでは、新しいTWELITE STAGEアプリは正常動作しない場合があります。
{% endhint %}

Windows10

> <https://github.com/monowireless/TWELITE_Stage_BIN_Win>

Mac (macOS)

> <https://github.com/monowireless/TWELITE_Stage_BIN_macOS>

M5Stack

> <https://github.com/monowireless/TWELITE_STAGE_Bin_M5Stack>

### MWM5ライブラリ

TWELITE STAGE のソースコードを含む MWM5 ライブラリは以下より入手できます。

> <https://github.com/monowireless/mwm5>


# インストール

install

環境に依存して、本アプリケーションが動作しない、また、各種設定が必要な場合があります。問題が発生した場合は、本資料の記述を参考に環境を整備いただくようお願いいたします。

{% hint style="warning" %}
開発環境を構築するためには、ソフトウェア群のインストール、またこれらの利用許諾に同意する必要があります。また、PC、ワークステーション上でセキュリティ設定等が必要になる場合があります。

* 配布時には十分注意しておりますが、ウィルスなどの確認はお客様のほうでも留意いただくようお願いいたします。
* お客様のセキュリティの考え方や運用（例：外部アプリケーションのインストールの可否）については、お客様の環境の管理者にご確認ください。

併せて[「アプリケーションの配布と実行について」](https://twelite.gitbook.io/general/appinstall)をご覧ください。以下に関する話題が含まれます。

* ダウンロードしたファイルとの同一性の確認について
* macOS/Windows上でのコード署名の取り扱いについて
  {% endhint %}


# Windows

TWELITE\_Stage インストール (Windows10)

`Windows`&#x20;

### 環境

以下の環境で開発しています。

* Windows10 バージョン 1903
* VisualStudio 2019 (32bit ビルド)

### 動作に必要要件

* FTDI 社の FT232 シリーズが動作するようにデバイスドライバのインストールが必要な場合があります。MONOSTICK や TWELITE-R が認識できていない場合は、<https://www.ftdichip.com> より D2XX ドライバを導入してみてください。
* **Visual Studio 2019 の  Visual C++ 頒布可能コード**（ランタイムライブラリ）が必要になる場合があります。アプリケーションの起動時にエラーが出て起動しない場合は、本パッケージで再配布する **TWELITE\_Stage¥INSTALL¥VC\_redist.x86.exe** またはマイクロソフト社のウェブサイトから入手して、インストールしてください。配布バイナリは 32bit です。


# macOS

TWELITE\_Stage インストール (macOS)

`macOS` &#x20;

### 環境

以下の環境で開発しています。

* macOS Mojave (10.14.6)
* macOS Catalina (10.15.4)
* macOS BigSur (11.1, Device Transfer Kit)

### 追加的なインストールや警告ダイアログについて

* ダウンロードアーカイブには署名しておりません。実行時には、インターネットからダウンロードされたアプリケーションとしてセキュリティ警告が出る場合があります。
* TWELITE\_Stage をインストールしたパスからの実行許可を要求される場合があります。
* ビルド実行時に make ユーティリティのインストールダイアログが出る場合があります。
* ツールチェインにはコード署名がなされていますが、コード署名が正しく認証されない場合は、ビルドツールチェイン (ba-elf-gcc など) の実行形式一つずつについて、動作許可を求められる場合があります。

上記は TWELITE\_Stage の動作のためには許可を与えたり、インストール作業が必要になります。

#### 参考: make ユーティリティの手動インストール

{% tabs %}
{% tab title="OS X" %}
※ OSバージョンの違いなどにより、別の手順で行う必要がある場合があります。

コマンドドライン (bash) にて、make を実行した時エラーが出る場合は XCode のインストールを行います。

```bash
$ xcode-select --install
```

インストール完了後、make を入力して以下のメッセージが出れば OK です。

```bash
$ make
make: *** No targets specified and no makefile found.  Stop.
```

{% endtab %}
{% endtabs %}

### シリアルポートの取り扱いについて

MONOSTICKやTWELITE-R には FTDI社 (<https://www.ftdichip.com>) の FT232 シリーズの半導体が使用されています。利用するためにはデバイスドライバについて対処が必要になる場合があります。

TWELITE\_Stageを起動しても、シリアルポートが表示されない場合は、FTDI社のドライバをアンロード（無効に）する必要があります。以下の「参考」を参照ください。

#### 参考：FTDI社のユーティリティ

{% hint style="danger" %}
このユーティリティは当社のMONOSTICKやTWELITE-Rが挿入された時に、OS標準のデバイスドライバのロードを抑制するものですが、当社以外のデバイスに(同じUSBのIDを持つもの)対しても抑制します。
{% endhint %}

<https://www.ftdichip.com/Drivers/D2XX.htm> より D2xxHelper をダウンロードして使用してください。当アーカイブ TWELITE\_Stage/INSTALL フォルダにも同じものを収録しています。

#### 参考：FTDI社デバイスドライバの手動アンロード

{% tabs %}
{% tab title="OS X" %}
FTDI 関連のドライバをアンロードします。

```bash
$ sudo kextunload -b com.apple.driver.AppleUSBFTDI
```

{% endtab %}
{% endtabs %}


# Linux

TWELITE\_Stage インストール (Linux)

`Linux` &#x20;

{% hint style="warning" %}
TWELITE R2 のUSBデバイスIDが従来の0403:6001から0403:6015に変わっています。udevの設定追加が必要です。
{% endhint %}

{% hint style="danger" %}
32bit版は用意しておりません。
{% endhint %}

{% hint style="warning" %}
Linux環境はディストリビューションやバージョンによって、用意されているパッケージの種類が違っています。個別にパッケージ等のインストールや設定が必要になる場合があります。

エラーメッセージ等を手がかりに一般の情報を参照いただくようお願いいたします。
{% endhint %}

### 環境

TWELITE STAGE は以下の環境で開発・動作確認しています。

* Ubuntu 16.04, 18.04, 20.04
* NNLinux Beta8 64bit
* Centos7

### デバイスドライバ

TWELITE STAGE から MONOSTICK や TWELITE-R を認識するためには、ftdi\_sioモジュールをアンロードし、また、USBデバイスに対して読み書き権限が必要になります。

{% hint style="info" %}
USBデバイスのIDは以下のようになります。

* ベンダーID 0x0403
* プロダクトID 0x6001(MONOSTICK,TWELITE R) または 0x6015 (TWELITE R2)&#x20;
  {% endhint %}

この設定を自動化するための udev の設定スクリプト(Ubuntu, CentOS) を用意しています。`/etc/udev/rules.d` に定義をコピーして、設定をリロードしています。設定後は USB デバイスを抜き差ししてから `TWELITE_Stage.run` を実行してください。起動直後の画面で USB デバイスが表示されれば、設定が反映されています。

#### Ubuntu 16.04, 18.04. 20.04

```
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
$ sudo ./set_udev_sudo.sh
```

定義ファイル（読みやすいように改行しています）

```
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
   MODE="0666",
   RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015",
   MODE="0666",
   RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
```

#### Centos 7

```
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/centos/
$ sudo ./set_udev_sudo.sh
```

定義ファイル（読みやすいように改行しています）

```
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
   MODE="0666", 
   RUN+="/bin/sh -c '/usr/sbin/rmmod ftdi_sio'"
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015",
   MODE="0666", 
   RUN+="/bin/sh -c '/usr/sbin/rmmod ftdi_sio'"
```

### アプリケーション登録

必要に応じてお使いのデスクトップ環境に合わせて、プログラムを登録してください。

#### Ubuntu 16.04, 18.04, 20.04

Ubuntu用の定義ファイル生成スクリプトを用意しています。

```
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
$ ./make_launch_icon.sh
```

このスクリプトは `.desktop` ファイル（アプリ定義）を`$HOME/.local/share/applications` に作成します。

スクリプト実行後に、アプリケーション一覧に TWELITE STAGE のアイコンが追加されます。


# RaspberryPi

TWELITE\_Stage インストール (Raspberry Pi) - 暫定版

`RasPi` &#x20;

TWELITE Stage アプリは Raspberry Pi で動作します。

* X11を用いないフレームバッファによる描画を行います。
* マウスとタッチスクリーンに対応します。
* ビルドツールチェインが付属しコンパイルも可能です。

## 環境

TWELITE STAGE は以下の環境で開発・動作確認しています。

* Hardware
  * Raspberry Pi 3 Model B
  * LCD Screen: Raspberry Pi Touch Display (7")
* OS & distribution
  * Raspberry PI OS (32bit) Lite (Version:August 2020)

## 既知の問題・制限事項

* 1回目の起動で `/dev/serial0` の動作が失敗することがある。
* Raspberry Pi 4B ではタッチスクリーンの動作は未検証です。
* TWELITE STAGE への入力文字列が`/dev/tty1`上で動作してるシェルやgettyへ入力文字列がそのまま渡されます。`/dev/tty1`から起動することを推奨します。
* 他のインストールや動作のプログラム(X11など)に影響を受けることがあります。

## アーカイブの展開

ダウンロードしたアーカイブファイルは、パス名に空白や日本語などが含まれないディレクトリに展開します。

以下ではRaspberry Piのホームディレクトリに展開してます。

```
$ cd /home/pi
$ unzip MWSTAGE2020_XX_YYYY.zip
```

### ディレクトリ構成

```
../MWSTAGE
     TWELITE_Stage.run    TWELITE_Stage アプリ
     BIN/                 ファームウェアBINファイル
     MWSDK/               MWSDK ライブラリなど
     TWELITE_Stage/       TWELITE_Stage アプリ関連ファイル
```

## デバイスドライバ

TWELITE STAGE から MONOSTICK や TWELITE-R を認識するためには、ftdi\_sioモジュールをアンロードし、また、USBデバイスに対して読み書き権限が必要になります。

{% hint style="info" %}
USBデバイスのIDは以下のようになります。

* ベンダーID 0x0403
* プロダクトID 0x6001(MONOSTICK,TWELITE R) または 0x6015 (TWELITE R2)&#x20;
  {% endhint %}

この設定を自動化するための udev の設定スクリプトを用意しています。`/etc/udev/rules.d` に定義をコピーして、設定をリロードしています。設定後は USB デバイスを抜き差ししてから `TWELITE_Stage.run` を実行してください。起動直後の画面で USB デバイスが表示されれば、設定が反映されています。

```
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
$ sudo ./set_udev_sudo.sh
```

定義ファイル（読みやすいように改行しています）

```
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
   MODE="0666",
   RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015",
   MODE="0666",
   RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
```

## UARTについて

上述の環境では、`raspi-config` よりシリアルポートの設定をすることで `/dev/serial0` が利用可能になります。

```
  $ sudo raspi-config

  メニューより
  "3 Interface Options    Configure connections to peripherals"
  →"P6 Serial Port Enable/disable shell messages on the serial connection"

  以下のようにログインシェルとしては利用しない、ハードウェアを有効化するを選択します。
  "Would you like a login shell to be accessible over serial?" -> <No>
  "Would you like the serial port hardware to be enabled?" → <Yes>
```

### 配線例

```
 [TWELITE]               [RaspberryPi]
  GND  ------------------ Gound (#6,#9,#14,#20,#25,#30,#34,#39のいずれか)
  TXD(DIO6,DIP#10) ------ GPIO15/UART0 RXD (#10)
  PRG(SPIMISO,DIP#7) ---- GPIO23 (#16)
  RXD(DIO7,DIP#3) ------- GPIO14/UART0 TXD (#8)
  RST(RESETN,DIP#21) ---- GPIO22 (#15)
  VCC  ------------------ 3V3 (#1,#17のいずれか)
  SET(DIO12,DIP#15) ----- GPIO12 (#32)
```

* TWELITE, RaspberryPi ともに製造元のマニュアルを参照ください。
* DIP# は TWELITE DIP のピン番号です。
* 上記配線は TWELITE 無線マイコンモジュールが安定稼働することを保証するものではありません。

## TWELITE Stage アプリの起動

* X11のデスクトップ上では動作しません。X11を終了しておきます。
* `TWELITE_Stage.run`を実行します。スクリーン画面上のTWELITE Stageアプリが表示されます。

### 留意事項

* マウスとタッチパネルに対応します。
* TWELITE Stage アプリ中で、入力した文字はコンソール画面にも表示される場合があります。

## その他

### /dev/dri

`TWELITE_Stage.run` 起動時に以下のエラーが出る場合があります。

```
  "The path /dev/dri/ cannot be opened or is not available"
```

無視しても構いません。

### メモリ不足

ビルド時はCPU数が4以上の場合は、CPU数を一つ引いた値の並列コンパイルを実行します(4コアなら3並列)。場合によってはメモリ不足が発生するかもしれません。その場合は並列数を変更してください。

### RaspberryPi 4

{% hint style="warning" %}
この情報は十分な検証を行っていません。
{% endhint %}

以下の設定が必要です。OpenGL関連のドライバが有効にする必要があります。

* `raspi-config` の Advanced Settings → A2 GL Driver → G2 GL (Fake KMS) を選択する
* `libgles-dev` パッケージを導入しておく
* タッチスクリーンの動作は未検証です


# M5Stack

`M5Stack`&#x20;

M5Stack用の書き換えは以下をご覧ください。

{% embed url="<https://github.com/monowireless/TWELITE_STAGE_Bin_M5Stack>" %}

## ハードウェア接続

{% hint style="info" %}
M5Stack Core または faces をお使いの方は TWELITE STAGE ボードを利用することを推奨します。
{% endhint %}

#### TWELITE STAGE ボード

TWELITE STAGE ボードのデータシートをご覧ください。

{% embed url="<https://mono-wireless.com/jp/products/stage-board/>" %}

#### 最小限の接続

TWELITE DIPとの接続例です。シリアルポート(UART)のTX,RXのみのシンプルな接続です。この接続では TWELITE 上のファームウェアの書き込みなどが行えません。

```
[M5Stack 15P]

    GPIO03
    GPIO01
    GPIO16 --- TWELITE DIO6/UART0 TX (TWELITE DIP #10)
    GPIO17 --- TWELITE DIO7/UART0 RX (TWELITE DIP #3)
    GPIO02
    GPIO05
    GPIO25
    GPIO26
    GPIO35
    GPIO36
       RST
       BAT
       3V3 --- TWELITE VCC (TWELITE DIP #28)
        5V
       GND --- TWELITE GND (TWELITE DIP #1,14)
```

#### シリアルポート以外の接続

以下の配線をすることで PGM/RESET/SET ピンが接続されます。TWELITE STAGEアプリケーションの全機能を利用する場合は以下の接続が必要になります。

{% hint style="warning" %}
ハードウェアの接続構成によっては、結線してはいけない場合もあります。ハードウェアの接続については M5Stack の資料も参考の上、十分注意して行ってください。

例： M5Stack faces の GPIO05 ピンは、キーパッドの割り込みピン（出力）が接続されているため、M5Stack側で出力制御を行うことはできません（故障の原因になりえます）。TWELITE STAGEアプリケーションでは、キーパッドに対応するI2Cデバイスを検出した場合は、出力制御しないようにしています。
{% endhint %}

```
[M5Stack 15P]

    GPIO03
    GPIO01
    GPIO16 --- TWELITE DIO6/UART0 TX (TWELITE DIP #10)
    GPIO17 --- TWELITE DIO7/UART0 RX (TWELITE DIP #3)
    GPIO02 --- TWELITE PGM   (TWELITE DIP #7)
    GPIO05 --- TWELITE DIO12 (TWELITE DIP #15)
    GPIO25
    GPIO26 --- TWELITE RESET (TWELITE DIP #21)
    GPIO35
    GPIO36
       RST
       BAT
       3V3 --- TWELITE VCC (TWELITE DIP #28)
        5V
       GND --- TWELITE GND (TWELITE DIP #1,14)
```

※ 上記配線にはPS/2接続は記載していません。


# 使用方法

operation manual


# キー操作・マウス操作

`Windows` `macOS` `Linux` `RasPi` `M5Stack`&#x20;

TWELITE STAGEアプリを通じた操作について解説します。

### 共通のキー&#x20;

`Windows` `macOS` `Linux` `RasPi` `M5Stack`&#x20;

| キー     | 意味           |
| ------ | ------------ |
| ESC    | キャンセル、前画面に戻る |
| Enter  | 入力、選択        |
| カーソル↑↓ | 項目の選択        |

### ヘルプ画面

`Windows` `macOS` `Linux` `RasPi`&#x20;

Windows/macOS/Linuxでは、Alt(またはCmd)を押し続けることでヘルプ画面を表示します。ヘルプ画面ではAlt(Cmd)と一緒に操作できるキーの説明や一部動作状況を表示します。

![Alt(Cmd)を入力中の表示](/files/-MJBJbPKjfW8-8O7Bvo-)

### Alt(Cmd)+操作

`Windows` `macOS` `Linux` `RasPi`&#x20;

Windows/macOS/LinuxでのAlt(Cmd)を押しながらの操作について解説します。表中ではAlt(Cmd)+の表記は省略しています。Alt(Cmd)を押すとヘルプ画面が出てきて使用可能なキーは確認できますが、下表に補足します。

| キー              | 意味                                                                                                                                                                |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| I               | <p>+ + + を入力します。インタラクティブモードに入るキーシーケンスです。<br>※ スリープによる間欠動作を行うアプリは + + + ではインタラクティブモードになりません。</p>                                                                   |
| R               | モジュールをリセットする。TWELITE R や MONOSTICK の機能を用いてリセットピンの制御を行います。                                                                                                         |
| A, S, D         | A, B, C ボタンを押します。                                                                                                                                                 |
| Shift + A, S, D | A, B, C ボタンを長押しします。                                                                                                                                               |
| C               | 表示されている画面の文字列をクリップボードにコピーします。（画面によって範囲は異なります）                                                                                                                     |
| V               | クリップボードからキーボード入力としてペーストします。                                                                                                                                       |
| F               | フルスクリーンに遷移します。Shift+Fは、可能であれば、より拡大します。                                                                                                                            |
| G               | <p>画面の描画方法を変更します。320x240の液晶画面をエミュレートしていますが、拡大時の描画方式として（1. 液晶モニタ風の描画 / 2. ブラウン管風の描画  / 3. ドットを目立たせた拡大 / 4. ドットをぼやかせた拡大）の４種類が選択できます。</p><p>※ 設定メニューで起動時設定にできます。</p> |
| J               | <p>画面サイズを選択します。選択可能な画面サイズは（640x480 / 960x720 / 1280x720 / 1280x960 / 320x240）です。</p><p>※ 設定メニューで起動時設定にできます。</p>                                                   |
| Q               | TWELITE STAGE を終了します。                                                                                                                                             |
| 0               | シリアルポートを切断し、再度シリアルポートの一覧を表示します。                                                                                                                                   |
| 1,2,..          | シリアルポートを選択します。                                                                                                                                                    |
| L               | シリアルポートの入出力のログを開始します。終了時にはログファイルが Windows であればメモ帳、macOS であれば ログビューアで開かれます。Shift+L でログ格納フォルダを開きます。                                                                 |

### マウスによるA,B,Cボタン

`Windows` `macOS` `Linux` `RasPi`&#x20;

Windows/macOS/Linuxでは、M5Stack にあるハードウェアボタンをエミュレートするため、画面下部にマウスを移動すると `[ A ]` `[ B ] [ C ]` といったオーバーレイ表示が行われます。ボタンはクリック（ボタン押上）と、長押しクリックをエミュレートします。

![画面下部の仮想\[ B \]ボタンが表示されている例](/files/-MJBJp7pzZUUgxgafw9b)

### マウスによる画面中の操作 (v0.9.7以降)

`Windows` `macOS` `Linux` `RasPi`&#x20;

Windows/macOS/Linuxでは、TWELITE STAGE の画面構成は文字列のみで構成されますが、メニューやボタン、タブについてはマウスによる操作が可能です。

![ボタン\[△(c)\]にポインタを移動した例](/files/-MJBK2JdkL97woi8R7s-)

| マウス        | 意味                                                |
| ---------- | ------------------------------------------------- |
| マウスポインタの移動 | クリック操作が可能な範囲にポインタを移動すると、文字列が反転したり文字の色が変わります。      |
| 左クリック      | 要素を選択します。クリック直後に要素中の文字列が太字表示になり、約0.3秒後に選択が実行されます。 |
| 右クリック      | ESCキーの入力を行います。                                    |
| ホイール       | リスト項目では項目の上下選択を行います。                              |


# 画面

### Windows/Mac/Linux

`Windows` `macOS` `Linux`&#x20;

![画面例 (Windows10)](/files/-MJAqhSTtueu_ua9i3gZ)

TWELITE STAGEはコンソール画面（コマンドライン）から起動するアプリケーションです。コンソール画面とウインドウ画面の両方に情報が出力されます。

コンソール画面には、ターミナルと同様の出力が行われます。

{% hint style="info" %}
一部の環境でコンソール画面の入力を受け付けますが、確認済みの正式機能という位置づけではありません。
{% endhint %}

### RaspberryPi

`RasPi`&#x20;

X11を用いないフレームバッファに表示されます。

通常（フレームバッファ上のシェル画面から起動した場合）はコンソール画面は表示されません。

### M5Stack

`M5Stack`&#x20;

![App\_Tweliteビューア画面例(最新版ではありません)](/files/-MJFLUgXTAfgZi-iLkh4)

M5Stackでは、320x240画面上の液晶と３つのボタンを用いて操作します。各種操作にはキーボードを必須とするものもあるため[キーボード接続](/1.0-1/usage/use_with_m5stack#kbdo)を推奨します。


# シリアルポート選択

`Windows` `macOS` `Linux` `RasPi`&#x20;

Windows/macOS/Linux では、始動時にTWELITE無線マイコンが接続されているシリアルポートを選択する画面になります。

{% hint style="warning" %}
シリアルポートは `Alt(Cmd)+0,1,2,...` のキー操作でいつでも切り替えが可能です。
{% endhint %}

`Windows`

`c`キーを押すと、リストで反転中のシリアルポートのCOMポート名が表示されます。

`RasPi`&#x20;

Raspberry Pi ではUSBデバイスに加えて`/dev/serial0` `/dev/serial1`があれば `serial0`, `serial1` が表示されます。通常は`serial0`を使用します。


# メインメニュー

`Windows` `macOS` `Linux` `M5Stack` `RasPi`&#x20;

階層化されたメニューの最上位です。

![メニュー](/files/-MJAq3c3nQJ8Z0qiwfZI)


# ビューア

`Windows` `macOS` `Linux` `M5Stack` `RasPi`&#x20;

ビューアは、シリアルポート経由で接続したTWELITE 無線マイコンからの情報を表示したり、反対に司令（コマンド）を送ったりします。

各々のビューアは、比較的小規模なプログラムで mwm5 ライブラリの使用方法のサンプルを兼ねています。

###

###


# ターミナル

`Windows` `macOS` `Linux` `M5Stack` `RasPi`&#x20;

ANSIエスケープシーケンス（の一部）に対応した簡易ターミナルです。TWELITE 無線マイコンと直接入出力を行います。

![](/files/-MJBEbgxX8uEQF8-PmJ2)

| 操作         |                                                                                                                                    |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| \[ A ]     | + + + シーケンスの入力（インタラクティブモード）                                                                                                        |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                                                                                                                   |
| \[ B ]     | 大きなフォントで表示する。最初の画面の部分領域を表示します。カーソルが画面中に表示されるように領域を選びますが、画面出力によっては見たい部分が見えない場合もあります。                                                |
| \[ B ] 長押し | 折返し制御のON/OFF。標準では折返し表示を行うようになっていますが、折り返ししないように表示することもできます。画面右端以降の文字列は表示されません。                                                      |
| \[ C ]     | ファーム書換画面に移動します。ファームウェアの開発中には頻繁にソースコードの修正、動作確認、ビルド＆書き込みを行うため、ショートカットを用意しています。                                                       |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。                                                                                                |
| ESC ESC    | <p>ESCキーを２回素早く入力することで、この画面を抜けます。</p><p>※ 殆どの画面ではESCキーを１回押すことで画面から抜ける操作となっていますが、ターミナルではESCキーの単独入力を使用する場合があるため、２回連続入力の割当になっています。</p> |


# 標準アプリ ビューア

`Windows` `macOS` `Linux` `M5Stack` `RasPi`&#x20;

[App\_Twelite(標準アプリ)](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/)の[0x81コマンド](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/step3-81.html)を解釈します。

![](/files/-MJBFBg43E63HIoHg6Jl)

TWELITE無線マイコンにはApp\_Twelite(標準アプリ)またはApp\_Wingsを書き込んでおき、通信相手からのシリアルメッセージが表示されていることを確認してから使用します。

通信相手はApp\_Twelite(標準アプリ)で、標準アプリのボタンやアナログ入力の状態のメッセージ (0x81メッセージ) を受信すると、その内容を mwm5 のパーサーライブラリにより解釈して表示します。

| 操作         |                                     |
| ---------- | ----------------------------------- |
| \[ A ]     | 割当なし                                |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                    |
| \[ B ]     | フォントを変更します。                         |
| \[ B ] 長押し | テスト用のダミーデータによる画面表示を行います。            |
| \[ C ]     | 割当なし                                |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。 |
| ESC        | ESCキーを入力することで、この画面を抜けます。            |


# PAL/CUE/ARIA ビューア

`Windows` `macOS` `Linux` `M5Stack` `RasPi`&#x20;

[TWELITE PAL](https://mono-wireless.com/jp/products/twelite-pal/)の[通知メッセージ](https://wings.twelite.info/how-to-use/parent-mode/receive-message/app_pal)を解釈します。

{% hint style="info" %}
PALビューア はv1.0.9から PAL/CUE/ARIAビューア に名称を変更しTWELITE ARIAの表示にも対応します。
{% endhint %}

![](/files/-MJBFY06RyYgQ9UTIXz9)

TWELITE無線マイコンにはApp\_Wingsを書き込んでおき、通信相手のTWELITE PALからのシリアルメッセージが表示されていることを確認してから使用します。事前にApp\_WingsのアプリケーションIDやチャネルを設定しておく必要があります。

通信相手はTWELITE PALです。

| 操作         |                                     |
| ---------- | ----------------------------------- |
| \[ A ]     | リストの前ページに移動する。                      |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                    |
| \[ B ]     | フォントを変更します。                         |
| \[ B ] 長押し | テスト用のダミーデータによる画面表示を行います。            |
| \[ C ]     | リストの次ページに移動する。                      |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。 |
| ESC        | ESCキーを入力することで、この画面を抜けます。            |

App\_Wings経由で無線パケット由来のシリアルメッセージが得られたときに、PAL子機のID (1..32まで) に対応するリスト項目に、PALの種別とセンサー情報などを簡易表示します。

現在表示されるリスト画面中に新しく受信した情報が表示されたときは、そのエントリ行にカーソルが移動します。


# CUE/ARIA ビューア

`Windows` `macOS` `Linux` `M5Stack` `RasPi`&#x20;

[TWELITE CUE](https://mono-wireless.com/cue)や[TWELITE ARIA](https://mono-wireless.com/jp/products/twelite-aria/index.html)通知メッセージを解釈します。

{% hint style="info" %}
CUEビューア は v1.0.9 から CUE/ARIAビューアに名称を変更し、TWELITE ARIAの表示に対応します。本解説中には新旧バージョンのキュプチャ画像が混在します。
{% endhint %}

## TWELITE CUEタブ

![画面例：面の検出](/files/-MNYadNzhmuxQ3dKXp6-)

TWELITE CUEのデフォルト設定(CUEモード)は、コイン電池でも動作できるスリープを用いた間欠駆動をしながら、いくつかの要因により起床し、起床後様々な情報を送信しいます。

{% hint style="info" %}
CUEモードはTWELITE CUEの動作をお試しいただく目的で、搭載センサー、LEDをすべて動作させています。
{% endhint %}

#### 起床要因

* タイマーの起床（設定値による定期起床）
* 加速度の検出による起床
* 磁気センサーによる起床（磁石が近づいたことを検出した場合）

#### 送信データ

* 検出イベント（後述）
* モジュール電源電圧
* 磁気センサーの検出値
* 加速度データ

### パケット

パケットの基本情報を表示します。

| 項目    | 解説                                                                                                                       |
| ----- | ------------------------------------------------------------------------------------------------------------------------ |
| #???? | これまでの受信パケット数です。                                                                                                          |
| 種別    | [`E_PKT`](https://mwm5.twelite.info/references/parser/twefmt/twepacket/e_pkt)の値で、パケット種別です。CUEからのパケットは通常PKT\_PAL=02になります。 |
| ID    | 送信元の論理IDです。通常は0..100の値になります。                                                                                             |
| AD    | 送信元のシリアル番号です。                                                                                                            |
| LQ    | LQI、電波強度に対応する値です。                                                                                                        |
| SQ    | パケットの続き番号です。                                                                                                             |

### イベント

TWELITE CUEのデフォルトの出力では、必ず加速度イベントとして出力します。起床要因に関わらず、起床後には一定サンプル数の加速度計測を行います。この加速度の結果に応じたイベントが送信します。

<table data-header-hidden><thead><tr><th width="150">検出イベント</th><th width="187.72481359458988">番号</th><th>解説</th></tr></thead><tbody><tr><td>検出イベント</td><td>番号</td><td>解説</td></tr><tr><td>ダイス</td><td>1(0x00) .. 6(0x06)</td><td>定期起床と磁気センサー検出起床を起点に判定されます。起床後大きな加速度が検出される場合は、判定不可としたイベント(0xFF)が検出される場合があります。</td></tr><tr><td>ムーブ</td><td>16(0x10)</td><td>加速度センサーが一定以上の加速度を検出したときに起床したときに、ムーブまたはシェイクのイベントが発生します。ムーブは、計測した加速度の変化があまり大きくない場合に発生します。（加速度の変化は検出したが、連続的な加速度の変化がなかった場合）</td></tr><tr><td>  シェイク</td><td>8(0x08)</td><td>加速度センサーが一定以上の加速度を検出したときに起床したときに、ムーブまたはシェイクのイベントが発生します。シェイクは、計測した加速度の変化が比較的大きい場合に発生します。（加速度の変化は検出し、連続的な加速度の変化が検出できた場合。シェイクの名前の通りCUEを振り続けていると発生します）</td></tr></tbody></table>

{% hint style="info" %}
加速度により起床の検出閾値・イベントの検出条件について、定量的な定義は案内しておりません。
{% endhint %}

### 電圧

モジュールの電源電圧\[mV]です。

### 磁石

検出された磁石の極または未検出を表示します。

{% hint style="info" %}
磁気センサーの検出による起床かどうかの表示はありません。
{% endhint %}

### 加速度

起床後に計測された加速度を表示します。

|       |                                                              |
| ----- | ------------------------------------------------------------ |
| サンプル  | 加速度のサンプル数を表示しています。10サンプル固定です。                                |
| レートID | 加速度のサンプルレートです。04固定で100Hzです。                                  |
| X,Y,Z | ３つの軸の加速度です。８サンプル分の平均値として求めています。単位はミリG (1000mG=1G=9.8m/s2)です。 |

## TWELITE ARIAタブ

{% hint style="info" %}
このタブはTWELITE STAGE APP v1.0.9以上で使用できます。
{% endhint %}

![画面例：温湿度表](/files/pFz7xCWR2StutO8AbHFh)

TWELITE ARIAのデフォルト設定(ARIAモード)は、コイン電池でも動作できるスリープを用いた間欠駆動をしながら、いくつかの要因により起床し、起床後様々な情報を送信しいます。

#### 起床要因

* タイマーの起床（設定値による定期起床）
* 磁気センサーによる起床（磁石が近づいたことを検出した場合）

#### 送信データ

* モジュール電源電圧
* 磁気センサーの検出値
* 温湿度データ

### パケット

パケットの基本情報を表示します。

| 項目    | 解説                                                                                                                       |
| ----- | ------------------------------------------------------------------------------------------------------------------------ |
| #???? | これまでの受信パケット数です。                                                                                                          |
| 種別    | [`E_PKT`](https://mwm5.twelite.info/references/parser/twefmt/twepacket/e_pkt)の値で、パケット種別です。CUEからのパケットは通常PKT\_PAL=02になります。 |
| ID    | 送信元の論理IDです。通常は0..100の値になります。                                                                                             |
| AD    | 送信元のシリアル番号です。                                                                                                            |
| LQ    | LQI、電波強度に対応する値です。                                                                                                        |
| SQ    | パケットの続き番号です。                                                                                                             |

### データ表

TWELITE ARIAから受信した過去9回分のデータの履歴を表示します。上にあるほど新しいデータです。

#### 時間(s)

TWELITE STAGE APPが起動してからデータを受信するまでの時間\[秒]です。

#### ID

モジュールの論理デバイスIDです。

#### VCC(mV)

モジュールの電源電圧\[mV]です。

#### 温度(C)

モジュールが計測した温度(℃)です。

#### 湿度(%)

モジュールが計測した湿度(％)です。

#### 磁石

検出された磁石の極または未検出を表示します。

{% hint style="info" %}
磁気センサーの検出による起床かどうかの表示はありません。
{% endhint %}

## 解説タブ

簡易マニュアルです。

## 画面例

![画面例：ムーブ（加速度の検出）](/files/-MNYbRN4Cy7rd4g8eeZs)

![画面例：シェイク（振り続けた）](/files/-MNYlE9LUPWGAyEv_Vmq)


# グランサー

`Windows` `macOS` `Linux` `M5Stack` `RasPi`&#x20;

Glancerはglanceする人という英単語で、[受信メッセージ中の情報](https://wings.twelite.info/how-to-use/parent-mode/receive-message)を簡易表示するものです。TWELITE無線マイコンにはApp\_Wingsを書き込んでおき、通信相手 (App\_Twelite, TWELITE PAL, ... アプリケーションIDとチャネルが一致すれば混在も可) からの情報を表示します。

画面は２種類の構成になっています。

####

#### 一覧表示

![](/files/-MJBFlPsBSJhsvv73N6z)

通信相手からの情報を列挙します。表示内容は（メッセージの種別、論理ID、シリアルID、LQI(Lq)、電源電圧(情報に含まれていれば)、受信時間）です。

| 操作         |                                      |
| ---------- | ------------------------------------ |
| \[ A ]     | リストの前項目に移動する。                        |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                     |
| \[ B ]     | 選択表示に移行します。                          |
| \[ B ] 長押し | 項目をソートします。ソートを実行するたびに、ソートキーは順に変わります。 |
| \[ C ]     | リストの次項目に移動する。                        |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。  |
| ESC        | ESCキーを入力することで、この画面を抜けます。             |

#### 選択表示

![](/files/-MJBFvy0qpYjUT7lM6rF)

一覧表示で項目を移動し反転表示になったところで選択操作を行うことで、この画面に遷移します。特定の通信相手に関する情報を到着順に表示します。

選択されてからの受信パケット数と LQI の平均値が表示されます。

| 操作         |                                     |
| ---------- | ----------------------------------- |
| \[ A ]     | 割当なし                                |
| \[ A ] 長押し | この画面を抜け、選択画面に戻る。                    |
| \[ B ]     | 割当なし                                |
| \[ B ] 長押し | 割当なし                                |
| \[ C ]     | 割当なし                                |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。 |
| ESC        | この画面を抜け、選択画面に戻る。                    |


# コマンダー

`Windows` `macOS` `Linux` `M5Stack` `RasPi`&#x20;

コマンダーは、TWELITE無線マイコンにシリアルメッセージを送付するものです。コマンダーの最初の画面は留意事項について記載しています。

画面上部にはテキストで表現されたタブがあり、これをマウスでクリックすることでタブ中の画面に移動します。

| 操作         |                                     |
| ---------- | ----------------------------------- |
| \[ A ]     | タブの移動（左）                            |
| \[ A ] 長押し | この画面を抜け、選択画面に戻る。                    |
| \[ B ]     | 割当なし                                |
| \[ B ] 長押し | 割当なし                                |
| \[ C ]     | タブの移動（右）                            |
| \[ C ] 長押し | TWELITE 無線モジュールのリセットピンを制御し、リセットします。 |
| ESC        | この画面を抜け、選択画面に戻る。                    |

#### タブ：TWELITE

この画面は [App\_Twelite(標準アプリ)](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/)の [0x80 コマンド](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/step3-80.html)を生成し、送付します。TWELITE無線マイコンにはApp\_TweliteまたはApp\_Wingsを書き込んで、アプリケーションID・チャネルを設定し、通信相手からメッセージが受信されていることを確認します。

![](/files/-MJBGAPnPT6bV6xjyTYz)

| 項目       | 内容                                                                                                                                                      |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 宛先       | 送信先です。自身が子機の場合は「親機:0」宛を指定してください。自身が親機の場合は「全子機＝0x78」または特定の子機ID(1..8まで指定可能)を指定します。                                                                        |
| DI1..DI4 | DI1からDI4までの設定状態です。■は選択（LOW=GNDレベル）、□は(HIGH=VCCレベル)を意味します。下項目のSELを指定してください。                                                                              |
| SEL      | 各DIの選択ビット（0ならDIの指定は無視し、1なら指定を有効化する）                                                                                                                     |
| PWM1..4  | <p>PWMのデューティ比を設定します。0はGNDレベル相当、1024(100%)はVCCレベル相当です。N.A.にしたPWMポートは変更しません。</p><p>※ TWESTAGE基板のPWM1のLEDはVCCからの吸い込みとなっているため、0で最も明るく点灯し、100%では消灯となります。</p> |

各項目を変更するたびにコマンドが生成されます。送信ボタンを押すと、現在の設定のコマンドを再度送信します。

#### タブ:NOTICE

この画面は通知[PAL(NOTICE PAL)](https://mono-wireless.com/jp/products/twelite-pal/sense/notice-pal.html)の[LED制御用のコマンド](https://wings.twelite.info/how-to-use/parent-mode/transemit-command/0x90-command)を生成します。TWELITE無線マイコンにはApp\_Wingsを書き込んで、アプリケーションID・チャネルを設定し、通信相手からメッセージが受信されていることを確認します。

![](/files/-MJBGHxXeBkYn3fv1Pkg)

| 項目    | 内容                                                  |
| ----- | --------------------------------------------------- |
| 子機ID  | 送信先です。1..8を指定します。子機にも同じIDを割り振っておきます。                |
| 色     | 点灯色を７色から指定します。白は２種類ありますが、１つはRGBの混色で１つは白色LED単体の点灯です。 |
| 明るさ   | 0..15で指定します。0は消灯です。                                 |
| 点灯点滅  | 点灯または点滅パターンを選択します。                                  |
| 点灯時間  | コマンド発行後、一定時間経過すると自動的に消灯する機能です。                      |
| 消灯ボタン | 消灯メッセージを生成します。                                      |
| 点灯ボタン | 現在の設定を送信します。                                        |

各項目を変更するたびにコマンドが生成されます。点灯ボタンを押すと、現在の設定のコマンドを再度送信します。

#### 画面下部の表示

画面下部には、コマンドが生成されたタイムスタンプと `:`で始まるコマンドが表示されます。クリップボードにはこの画面の内容がコピーされます。


# アプリ書換

`Windows` `macOS` `Linux` `M5Stack` `RasPi`&#x20;

TWELITE無線マイコンのアプリ（ファームウェア）を書き換えます。

`Windows` `macOS` `Linux` `RasPi` では、アクト(Act)などソースコードからのビルド（コンパイル）を行い、書き込みます。

`M5Stack`では、[SDカードにあらかじめコピー](/1.0-1/usage/use_with_m5stack#apuri)しておいた、ビルド済みの.BINファイル(ファームウェア）を書き込むことができます。


# BINから選択

`Windows` `macOS` `Linux` `M5Stack` `RasPi`&#x20;

ビルド済みのアプリ(.BINファイル)を書き込みます。

![](/files/-MJAwJ-3DE1k5MrZ3LIB)

メニューを選択すると、ファイル一覧が表示されます。書き込みたいファームウェアを選択してください。

メニュー選択前に、書き込みむBINファイルを以下に格納しておきます。

| プラットフォーム            | 場所                          |
| ------------------- | --------------------------- |
| Windows, Mac, Linux | {MWSTAGEフォルダ}/BIN           |
| M5Stack             | SDカード最上位フォルダにBINフォルダを作成しておく |

BINフォルダにはTWELITE STAGEでビルドした .BIN ファイル（各プロジェクトのbuildフォルダ以下に格納）を、ファイル名を変更せず格納しておきます。

```
../BIN/App_Wings_MONOSTICK_BLUE_L1304_V1-1-3.bin
       App_Wings_MONOSTICK_RED_L1304_V1-1-3.bin
       App_Twelite_BLUE_L1304_V1-9-1.bin
       App_Twelite_RED_L1304_V1-9-1.bin
       ...
```

{% hint style="warning" %}
ファイル名によりBLUE/REDの識別を行っています。
{% endhint %}


# Actビルド＆書換

`Windows` `macOS` `Linux` `RasPi`&#x20;

アクト(Act)のビルドと書き換えを行います。 (Windows/Mac/Linux)

{% hint style="success" %}
アクト(Act)の記述の参考となる小規模なソースコードが中心です。
{% endhint %}

![](/files/-MJAwUrcBIgKglLNmSCn)

この画面を開くと、プロジェクト一覧が表示されます。書き込みたいプロジェクトを選択すると、ビルド～書き込みを行います。書き込み終了後に`Enter`または`[ B ]`ボタンを押すことで、TWELITE無線モジュールをリセットし、インタラクティブモード画面（またはターミナル画面、要設定）に遷移します。

[ビルド～書き込み画面](/1.0-1/usage/screens/main_menu/firm_prog/build_screen)

VSCodeを利用する設定（アプリ書換＞codeでフォルダを開く）になっている場合は、ビルドは行わず`build/`以下の[BINファイルを書き込む画面](/1.0-1/usage/screens/main_menu/firm_prog/bin)を開きます。

### フォルダ

ビルド対象となるプロジェクトは以下になります。

```
{MWSTAGEインストールフォルダ}/MWSTAGE/Act_samples
```

### 操作

| 操作                             |                                                            |
| ------------------------------ | ---------------------------------------------------------- |
| \[ A ]                         | メニュー選択 ↑                                                   |
| \[ A ] 長押し                     | この画面を抜け、前メニューに戻る                                           |
| \[ B ]                         | 選択                                                         |
| \[ B ] 長押し                     | 関連ウェブサイト（プロジェクトフォルダの`000desc.txt`に登録がある場合）をOS標準のブラウザで開きます。 |
| \[ C ]                         | メニュー選択 ↓                                                   |
| \[ C ] 長押し                     | フォルダ（プロジェクト、関連フォルダ）を開きます。設定メニューでVS Codeで開くように設定できます。       |
| ESC                            | この画面を終了し、書換メニューに戻ります。                                      |
| マウスクリック \[ｳｪﾌﾞ]                | 関連ウェブサイトを開きます。                                             |
| マウスクリック \[ﾌｫﾙﾀﾞ] または \[VSCode] | 関連フォルダを開きます。                                               |
| マウスクリック \[▽] または \[△]          | 次ページ、前ページに移動します。                                           |


# TWELITE APPS ビルド＆書換

`Windows` `macOS` `Linux` `RasPi`&#x20;

TWELITE APPSのビルドと書き換えを行います。 (Windows/Mac/Linux)

{% hint style="success" %}
TWENET C API によるC言語で記述され、そのまま利用いただく比較的規模の大きいソースコードが中心です。
{% endhint %}

![](/files/-MJAxLSUKw3MpxMzOhqG)

この画面を開くと、プロジェクト一覧が表示されます。書き込みたいプロジェクトを選択すると、ビルド～書き込みを行います。書き込み終了後に`Enter`または`[ B ]`ボタンを押すことで、TWELITE無線モジュールをリセットし、インタラクティブモード画面（またはターミナル画面、要設定）に遷移します。

[ビルド～書き込み画面](/1.0-1/usage/screens/main_menu/firm_prog/build_screen)

VSCodeを利用する設定（アプリ書換＞codeでフォルダを開く）になっている場合は、ビルドは行わず`build/`以下の[BINファイルを書き込む画面](/1.0-1/usage/screens/main_menu/firm_prog/bin)を開きます。

### フォルダ

ビルド対象となるプロジェクトは以下になります。

```
{MWSTAGEインストールフォルダ}/MWSTAGE/Wks_TweApps
```

### 操作

| 操作                             |                                                            |
| ------------------------------ | ---------------------------------------------------------- |
| \[ A ]                         | メニュー選択 ↑                                                   |
| \[ A ] 長押し                     | この画面を抜け、前メニューに戻る                                           |
| \[ B ]                         | 選択                                                         |
| \[ B ] 長押し                     | 関連ウェブサイト（プロジェクトフォルダの`000desc.txt`に登録がある場合）をOS標準のブラウザで開きます。 |
| \[ C ]                         | メニュー選択 ↓                                                   |
| \[ C ] 長押し                     | フォルダ（プロジェクト、関連フォルダ）を開きます。設定メニューでVS Codeで開くように設定できます。       |
| ESC                            | この画面を終了し、書換メニューに戻ります。                                      |
| マウスクリック \[ｳｪﾌﾞ]                | 関連ウェブサイトを開きます。                                             |
| マウスクリック \[ﾌｫﾙﾀﾞ] または \[VSCode] | 関連フォルダを開きます。                                               |
| マウスクリック \[▽] または \[△]          | 次ページ、前ページに移動します。                                           |


# Actエクストラ

`Windows` `macOS` `Linux` `RasPi`&#x20;

アクト(Act)のビルドと書き換えを行います。 (Windows/Mac/Linux)

{% hint style="success" %}
Actエクストラは、外部のオープンソースライブラリなどを利用したもの、比較的複雑な処理を行うものを収録しています。
{% endhint %}

![](/files/-MJAxaXz6up7JICu3gbK)

この画面を開くと、プロジェクト一覧が表示されます。書き込みたいプロジェクトを選択すると、ビルド～書き込みを行います。書き込み終了後に`Enter`または`[ B ]`ボタンを押すことで、TWELITE無線モジュールをリセットし、インタラクティブモード画面（またはターミナル画面、要設定）に遷移します。

[ビルド～書き込み画面](/1.0-1/usage/screens/main_menu/firm_prog/build_screen)

VSCodeを利用する設定（アプリ書換＞codeでフォルダを開く）になっている場合は、ビルドは行わず`build/`以下の[BINファイルを書き込む画面](/1.0-1/usage/screens/main_menu/firm_prog/bin)を開きます。

### フォルダ

ビルド対象となるプロジェクトは以下になります。

```
{MWSTAGEインストールフォルダ}/
    MWSTAGE/Act_extras
```

### 操作

| 操作                             |                                                            |
| ------------------------------ | ---------------------------------------------------------- |
| \[ A ]                         | メニュー選択 ↑                                                   |
| \[ A ] 長押し                     | この画面を抜け、前メニューに戻る                                           |
| \[ B ]                         | 選択                                                         |
| \[ B ] 長押し                     | 関連ウェブサイト（プロジェクトフォルダの`000desc.txt`に登録がある場合）をOS標準のブラウザで開きます。 |
| \[ C ]                         | メニュー選択 ↓                                                   |
| \[ C ] 長押し                     | フォルダ（プロジェクト、関連フォルダ）を開きます。設定メニューでVS Codeで開くように設定できます。       |
| ESC                            | この画面を終了し、書換メニューに戻ります。                                      |
| マウスクリック \[ｳｪﾌﾞ]                | 関連ウェブサイトを開きます。                                             |
| マウスクリック \[ﾌｫﾙﾀﾞ] または \[VSCode] | 関連フォルダを開きます。                                               |
| マウスクリック \[▽] または \[△]          | 次ページ、前ページに移動します。                                           |


# 指定

`Windows` `macOS` `Linux`&#x20;

フォルダまたは.BINファイルをTWELITE STAGE APP 画面中にドラッグ＆ドロップできます。ドロップした対象に対して操作を行うときに選択します。

{% hint style="info" %}
.BINファイルをドロップしたときは、そのファイルが格納されるフォルダをドロップした場合と同様の振る舞いで、そのフォルダにあるファームウェア一覧が表示されます。
{% endhint %}


# 再書換

`Windows` `macOS` `Linux` `RasPi`&#x20;

直前に指定・書換実行した項目を再選択します。

{% hint style="info" %}
選択した項目によって、以下のいずれかの振る舞いになります。

* 選択プロジェクトの再書換
* 直線選択した一覧画面
  {% endhint %}


# ビルド・書換画面

`Windows` `macOS` `Linux` `RasPi`&#x20;

### ビルド中

ビルド中の画面です。ビルドコマンドの内容はコンソール画面に出力されます。画面中の ... はビルドしているファイル数、下部の暗い色の表示はビルドしているファイル名です。

![](/files/-MJB-Exn4EwmDqRsQ7Yr)

####

### ビルドエラー

![](/files/-MJB0yKfjhDAur8_U-sq)

ビルドがエラーの場合は、上記のような画面になります。再ビルドの実行やエラーログの表示を行えます。また、一定時間でタイムうとして直線のメニューに戻ります。

画面上のエラーメッセージは、代表的なもののみ表示されます。ビルドが失敗したときエラー内容のメッセージが表示されない場合もあります。

| 操作         |                                                                                             |
| ---------- | ------------------------------------------------------------------------------------------- |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                                                                            |
| \[ B ]     | エラー時に再ビルドする                                                                                 |
| \[ C ]     | <p>エラーログを表示する (Windows/Mac)</p><p>エラーログは<code>{プロジェクトフォルダ}/build/builderr.log</code>です。</p> |
| \[ C ] 長押し | フォルダ（プロジェクト、関連フォルダ）を開きます。設定メニューでVS Codeで開くように設定できます。                                        |
| ESC        | この画面を終了し、書換メニューに戻ります。                                                                       |

### 書換中

ビルドが成功するとファームウェアを書き込む画面になります。

v1.0.2以降は、ファームウェア書き換え後に、書き換え内容を読み出して確認するベリファイ処理を行います。

![](/files/-MJB-VCWXwvwHMfThICx)

### 書換失敗

![](/files/-MJB3eBHuCufJkSRc2p2)

書換がエラーの場合は、上記のような画面になります。

| 操作         |                                                                              |
| ---------- | ---------------------------------------------------------------------------- |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                                                             |
| \[ B ]     | 再度書換を行う（直前の書き換えメニューに戻ります。再書換のメニュー項目が選択されている状態なので、もう一度\[ B ]を押すことで再書換操作になります） |
| ESC        | この画面を終了し、書換メニューに戻ります。                                                        |

### 書換完了

![](/files/-MJB-7S1q7-lykMTuCiz)

書換が無事成功すると上記のような表示になります。

v1.0.2以降は、ファームウェア書き換え後に、書き換え内容を読み出して確認するベリファイ処理を行います。

| 操作         |                                                             |
| ---------- | ----------------------------------------------------------- |
| \[ A ] 長押し | この画面を抜け、前メニューに戻る                                            |
| \[ B ]     | TWELITE無線モジュールをリセットして、インタラクティブモード画面（または設定によりターミナル）画面に移動します。 |
| ESC        | この画面を終了し、書換メニューに戻ります。                                       |


# インタラクティブモード

`Windows` `macOS` `Linux` `RasPi` `M5Stack`&#x20;

インタラクティブモードへの遷移と操作を行います。

この画面はターミナルとほぼ同じ振る舞いをしますが、インタラクティブモード遷移のための操作と離脱の検出を行うなど、インタラクティブモードに固有の機能が追加されています。

{% hint style="warning" %}
TWELITE無線マイコンからの入出力を用いて動作しているため、シリアル通信に文字化けなどが発生した場合など、期待通りにインタラクティブモードへの遷移や離脱が出来ない場合もあります。
{% endhint %}

{% hint style="info" %}
[ターミナル](/1.0-1/usage/screens/main_menu/viewer/terminal)によるインタラクティブモードへの遷移と操作も可能です。

* ターミナルではSETピンの操作は行わないため、手動でSETピンをLOに設定する必要があります。
* \+ + + 入力`Alt(Cmd)+I`やモジュールリセット`Alt(Cmd)+R`を行う操作は定義されています。
  {% endhint %}

### インタラクティブモード画面の動作フロー

大まかな処理の流れを記載します。

```
[画面黒背景にする]
  ↓
[TWELITE無線マイコンリセット (制御可能ならSET=LO)]
  ↓
<間欠動作アプリのインタラクティブモードメッセージを検出？> --YES--> [操作画面]へ
  ↓タイムアウト
['+' を３回入力]
  ↓
<通常アプリのインタラクティブモードメッセージを検出？> --YES--> [操作画面]へ
  ↓タイムアウト
[操作画面へ] ※ この状態はインタラクティブモードではない

[操作画面]
  ↓
<インタラクティブモード脱出メッセージ?> --> [終了]
  ↓
<画面離脱操作 [ A ] 長押しなど> --> [終了]
  ↓
<ESC ?> -> <入力中判定> --NO-> [終了]
  ↓            ↓
[入力文字列をTWELITE無線モジュールへ送信]
  ↓
[操作画面]へ戻る

[終了]
  ↓
[TWELITE無線マイコンリセット]
  ↓
[画面離脱] インタラクティブモード画面を終了し前の画面へ戻る  
```


# TWELITE STAGEの設定

`Windows` `macOS` `Linux` `RasPi` `M5Stack`&#x20;

各種設定を行います。

{% hint style="warning" %}
この画面のメニューはマウス操作できません。
{% endhint %}

以下の解説のメニュー中では、プラットフォームによっては存在しない項目がありますが、全てを列挙して解説します。

共通メニュー以外の色設定については、解説を省略します。

### ルートメニュー

```
共通設定
 ターミナル
 標準アプリ ビューア
 ＰＡＬ ビューア
 ＣＵＥ ビューア
 グランサー(簡易モニタ)
 コマンダー
 アプリ書換
 インタラクティブモード
ｾｰﾌﾞﾃﾞｰﾀ ﾕｰﾃｨﾘﾃｨ(ﾀﾞﾝﾌﾟ/消去)
情報
```

### 共通設定

```
a: (      0x00) 起動アプリ指定
G: (      0x00) 画面サイズ・描画方法
F: (          ) シリアルデバイスID
k: (         1) PS/2キーボードレイアウト
f: (0x00FFFFFF) 文字色
b: (0x005A0032) 背景色
```

| 設定             | 内容                                                                                                                                                                                                                                            |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 起動アプリ          | <p>TWELITE STAGE始動時にビューアアプリに移動する設定です。設定値は1..{ビューアアプリメニューで列挙されている数}です。<br>※ シリアルデバイスIDを設定しておかないと、始動時に接続するシリアルデバイス選択画面で入力待ちになります。</p>                                                                                                           |
| 画面サイズ・描画方法     | <p><code>Windows</code> <code>macOS</code> <code>Linux</code> <code>RasPi</code> XYの２桁の文字で指定します(X:画面サイズ Y:描画方法) </p><ul><li> X 0:640x480 1:960x720 2:1280x720 3:1280x960 4:1920x1080 5:320x240</li><li>Y 0:LCD風 1:CRT風 2:ぼやけ 3:ブロック</li></ul> |
| シリアルデバイスID     | <p><code>Windows</code> <code>macOS</code> <code>Linux</code> <code>RasPi</code> 設定はシリアルデバイス名または数値の1..9 を指定します。<br>※ 数値の場合はデバイス列挙順になります。</p>                                                                                                  |
| PS/2キーボードレイアウト | `M5Stack` PS/2キーボードのレイアウトを指定します。0が英語、1が日本語レイアウトです。主に記号の配列が違います。                                                                                                                                                                               |
| 文字色・背景色        | <p>文字色、背景色を指定します。共通設定の色設定値は他の画面の設定にも継承されます。他の画面で未設定の場合は共通設定の色設定が採用されます。</p><p>色はRGB 24bitを１６進数で指定しますが、内部的には16bit 565 形式に値が丸められます。</p>                                                                                                         |

### アプリ書換

```
f: (0x00FFFFFF) 文字色
b: (0x005A0032) 背景色
j: (         0) ビルド時のmakeジョブ数
v: (         0) codeでフォルダを開く(VSCode)
n: (         0) 書換完了後の画面
l: (         0) LTOを行わない
```

| 設定                    | 内容                                                                                                                                                                                                    |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ビルド時のmakeジョブ数         | <p><code>Windows</code> <code>macOS</code> <code>Linux</code> <code>RasPi</code> <br>ビルドを行う際の並列ジョブ数です。適切な数を設定することでビルド時間の短縮を期待できます。<br>規定値0は(物理プロセッサ数-1)でジョブ数を計算しています。目安としては論理プロセッサ数を上限とすると良いでしょう。</p> |
| codeでフォルダを開く (VSCode) | `Windows` `macOS` `Linux` 1を設定することでOS標準のフォルダウインドウの替わりにcodeコマンド（VS Code）でフォルダを開きます。                                                                                                                    |
| 書換完了後の画面              | <p><code>Windows</code> <code>macOS</code> <code>Linux</code> <code>RasPi</code> <code>M5Stack</code><br>1を設定することでインタラクティブモード画面の替わりに、ターミナルを開きます。</p><p>2を設定することで、書換メニューに戻ります。</p>                     |
| LTOを行わない              | `Windows` WindowのコンパイラはLTOの仕組みにより少しだけ小さいバイナリを生成することが可能ですがリンクに時間がかかります。この手順を省略しより高速なリンクを可能とします。                                                                                                        |

### セーブデータユーティリティ

```
r: Read sector.
R: Read ALL sectors.
e: Erase sector.
E: Erase ALL sectors.
```

この画面ではデータセーブ領域のメンテナンスを行うユーティリティです。EEPROM(64バイトを１セクタとして最大60セクタ、3840バイト)をエミュレートしています。

| 設定 | 内容                                                |
| -- | ------------------------------------------------- |
| r  | セクタを読み出します。0..59を入力すると、入力したセクタ番号のセクタの内容を表示します。    |
| R  | （YESを入力すると全セクタの読み出しを行いますが、一番最後の部分しか表示されません）       |
| e  | セクタを消去(0xFF)します。0..59を入力すると、入力したセクタ番号のセクタが消去されます。 |
| E  | YESを入力すると全セクタを消去します。                              |

{% hint style="info" %}
`Windows` `macOS` `Linux` では`TWELITE_Stage.sav`ファイルに保存されます。\
`M5Stack`ではフラッシュメモリのEEPROMエミュレート領域に保存されます。
{% endhint %}


# シリアルポートの選択

`Windows` `macOS` `Linux` `RasPi`&#x20;

シリアルポートを選択しなおします。

{% hint style="info" %}
`Alt(Cmd)+0`, `Alt(Cmd)+1,2,..` による操作を行っても構いません。
{% endhint %}


# M5Stackでの利用

`M5Stack` &#x20;

M5Stack特有の動作や利用方法について記載します。TWELITE STAGEボードが接続されていることを前提とします。

## 利用するGPIOについて

TWELITE STAGE APPでは、以下のGPIOを利用しています。

| 接続先       |                    |
| --------- | ------------------ |
| GPIO16,17 | TWELITE UART 接続    |
| GPIO02    | TWELITE PRGピン      |
| GPIO05    | TWELITE SETピン(DI1) |
| GPIO26    | TWELITE RSTピン      |
| GPIO35,36 | PS/2 キーボードコネクタ     |

※ TWELITE STAGEボードでは、回路保護を目的とした抵抗などが配線されています。詳しくは[回路図](https://mono-wireless.com/jp/products/stage-board)を参照ください。

{% hint style="danger" %}
上記、使用されているGPIOピンとの接続先については十分配慮してください。

以下は特に注意を払う必要があります。

* TWELITE 無線マイコンの当該ピンの設定を出力とする。
  * 例えばTWELITE STAGE ボードではGPIO05にDIO12(DI1)が接続されていますが、このピンをGNDに直接落したり、ファームウェアからDIO12を出力設定かつLOWに設定したりした場合、M5StackからGPIO05をHIGHレベル出力すると過大電流が流れます。
* これらのピンに（TWELITE STAGEボード以外の）別のデバイスを接続している。
  * 後述するfacesのキーパッドが該当します。TWELITE STAGE APPでは、起動時にキーパッドのI2Cデバイスを検出できた場合は、GPIO5の制御を省略するようにしています。
    {% endhint %}

## キーボード

TWELITE STAGE アプリでは、多くの操作をキーボード前提としております。以下のキーボードに対応しています。

### PS/2コネクタ

PS/2 コネクタ PS/2 キーボードを接続することが出来ます。USB共用タイプの一部など、場合によっては動作しないことも考えられます。

### CardKB

M5Stack 純正のカード型キーボード [CardKB](https://docs.m5stack.com/#/en/unit/cardkb) (Grove端子接続)です。

### M5Stack faces QWERTYタイプキーパッド

M5Stack faces の QWERTY タイプキーパッドが利用できます。

{% hint style="warning" %}
キーパッドの割り込みピンがTWELITE STAGE ボードで利用するSETピンと衝突するため、TWELITE STAGE起動時のI2Cバスチェックでキーパッドを検出した場合は、TWELITE STAGE APP ではSETピン制御を行わないようにしています。

同様に１０キーパッドなども同じピンを割り込み用に使用しています。

TWELITE PALなどスリープによる間欠動作するファームウェアでは、設定（インタラクティブモード）画面に入るためにSET=LOWとして電源投入（リセット）を行いますが、この操作を手動で行う（具体的にはTWELITE STAGEボードのDI1ボタンをリセットを行う瞬間だけ押しておく）必要があります。
{% endhint %}

キーパッドを利用する場合、以下の割り当てを行っています。

| キー         | 割り当て      |
| ---------- | --------- |
| `Alt+1..9` | 数字の`1..9` |
| `Alt+0`    | `ESC`     |

## アプリ書換

TWELITE 無線マイコン用のファームウェアを M5Stack から書き込むことが出来ます。

{% hint style="info" %}
Windows/Mac/Linuxにあるアクト(Act)のビルドなどは出来ません。
{% endhint %}

FAT32フォーマットしたSDカード上の最上位フォルダに BIN フォルダを作成し、BIN フォルダ中にファームウェアをコピーしておきます。

{% hint style="warning" %}
ファームウェアのファイル名により一部識別（RED/BLUE用）しているので、ファイル名はWin/Mac/Linux用のTWELITE STAGE でビルドしたファイル名は変更しないようにしてください。
{% endhint %}


# ログ機能

`Windows` `macOS` `Linux` `RasPi`&#x20;

TWELITE 無線マイコンとのシリアル通信のログを記録することができます。

### ログの開始&#x20;

Alt(Cmd)+Lキーを押します。

![](/files/-MJRpPI5kgvpnIosu5MB)

### ログ記録の終了

ログ記録中にもう一度 Alt(Cmd) + L キーを押します。

![](/files/-MJRq8NVn51GiijeM-Gh)

ログの記録が終了し、その時のログファイルがOS標準の方法(Windowsならメモ帳、macOS ならコンソール)で開かれます。

※ RaspberryPi ではログファイルの保存のみで開く機能はありません。

### ログの記録

TWELITE 無線マイコンから受信した文字列→そのまま記録されます

TWELITE 無線マイコンに送信した文字列→１文字ずつWindowsの場合は `｢ ｣`macOS/Linux/RaspBerryPiは `« »` で囲って記録します。

例えば`«t»`とある場合はキーボードから`t`を入力したことを意味します。

### ログ記録のフォルダとファイル名

`Windows` `macOS` `Linux`

{TWELITE STAGE APP の実行形式のあるフォルダ}/log にログ開始時の日時を元にしたファイル名で保存されます。

Alt(Cmd)+Shift+L を押すことで、そのフォルダを開きます。

![](/files/-MJRr6B_OZu7_JEFcFZp)


# その他仕様など


# フォルダ構成について

TWELITE STAGE APP は、TWELITE STAGE SDKパッケージ内のフロントエンドアプリケーションとして動作します。ここでは、そのフォルダ構成について解説します。

```
../MWSTAGE/            TWELITE STAGE SDK インストール
    /TWELITE_Stage.??? 実行形式 (Windwows .exe, macOS .command, Linux .run)
    /TWELITE_Stage.sav 設定ファイル
    /TWELITE_Stage.ini その他設定(MWSDKディレクトリ名指定)
    /TWELITE_Stage/    TWELITE STAGE APP の関連ファイル

    /MWSDK/            MWSDKのライブラリなど
    /BIN/              [BINファイル選択]時の格納先
    /log/              ログ格納先
    
    /Tools/            gcc コンパイラなどのツール一式
    
※ 本構成は MWSDK2020_11 以降です。
※ MWSDK2020_10以前との大きな相違は Tools の配置です。
../MWSTAGE/
    /MWSDK/
      /Tools/          <= Tools は MWSDK内に格納
    (/MWSDK.ini) .     <= MWSDK.ini は非対応
```

### MWSDK フォルダ

```
MWSDK/
  Act_samples/   : mwx ライブラリによるサンプルコード 
  Wks_TweApps/   : TWELITE APPS のソースコード 
  Act_extras/    : mwx ライブラリによるより専門的なサンプル、他のライブラリを引用したもの
  TWENET/        : TWENET ライブラリ (mwx ライブラリなど) 
  ChipLib/       : 半導体ライブラリ  
  MkFiles/       : Makefile の本体処理部分     
  000manifest    : MWSDKのバージョン情報
```

MWSDK フォルダには、TWELITE無線マイコンのソフトウェアを構築するためのライブラリや、サンプル、TWELITE APPS のソースコードが含まれます。

### MWSDK.ini

```
# MWSDK.ini の例
# MWSDK=MWSDK
MWSDK=MWSDK2020_10
```

`MWSDK/` フォルダの替わりに別のフォルダを指定したいときに編集します。複数のライブラリバージョンを混在させる場合に便利です。上記の例では `MWSDK2020_10`フォルダを利用します。

### BINフォルダ

TWELITE STAGE APP の [\[BINから選択\]](/1.0-1/usage/screens/main_menu/firm_prog/bin) メニューを選択したとき、このフォルダにある TWELITE 無線マイコン用のファームウェアファイル (.BIN) が列挙されます。

### logフォルダ

TWELITE STAGE APP でシリアルポートの[ログ機能](/1.0-1/usage/logging)を実行したときに、このフォルダにログファイルが格納されます。&#x20;

### Tools フォルダ

gcc, g++ などのクロスコンパイラの toolchain などが含まれます。

プラットフォーム特有のユーティリティもこのフォルダに格納されます。詳しくは `Tools/reame-j.txt` を参照してください。

## ビルドプロジェクトフォルダについて

{% hint style="warning" %}
本機能は標準的に提供する機能外として粗紹介します。記載の内容と異なった動作になる場合もあります。
{% endhint %}

### フォルダの検索順

以下の順でビルドプロジェクトフォルダ (Act\_samples など) を検索します。

1. TWELITE STAGE APPが起動したときのフォルダ
2. TWELITE STAGE APPの実行形式があるフォルダ
3. `{MWSDKフォルダ}/..`
4. `{MWSDKフォルダ}`

{% hint style="info" %}
MWSDK は TWELITE STAGE APP の実行形式があるフォルダを起点に検索します。
{% endhint %}

### Wks\_Acts

&#x20;`Wks_Acts` フォルダが存在する場合は、`Act_samples` フォルダの替わりに、このフォルダをメニューの\[Actビルド＆書換]メニューから参照します。

{% hint style="info" %}
自身で作成するビルドプロジェクトを Wks\_Acts に格納したいといった用途を想定しています。
{% endhint %}


# 環境変数について

TWELITE STAGE APP では、内部的に環境変数を設定して make などのビルドプログラムの動作を行います。事前に環境変数の設定は不要です。

### 内部的に設定される環境変数

|                       |                                                                                                                                                                                                                                                                                                    |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MWSDK_ROOT`          | 標準では TWELITE STAGE APP の実行形式が格納されるフォルダにある `MWSDK` フォルダ(つまり`../MWSTAGE/MWSDK`)が指定されます。 `MWSDK.ini`が指定される場合は、指定されたフォルダ名を採用します。                                                                                                                                                                       |
| `MWSDK_TWENET_LIBSRC` | <p>サンプルコードやTWELITE APPSのソースコードフォルダには、Microsoft社の Visual Studio Code (VS Code) 用の定義ファイルを予め作成しています。この定義ファイル中にVS Codeエディタ中でコード解釈を行う目的でライブラリソースコードの参照先を指定しますが、この環境変数を用いています。<br><code>MWSDK\_TWENET\_LIBSRC</code>環境変数が適切に指定されると、MWSDK以下ではないプロジェクトフォルダでもコード解釈が行われ、ライブラリ関数名の補完などが機能します。</p><p>（参考１）</p> |
| `LANG=C`              | ツールチェインのメッセージを規定の言語(英語)にするため、明示的に設定しています。                                                                                                                                                                                                                                                          |
| `PATH`                | Windowsでは、SDK添付のmsysユーティリティへのPATHを追加します                                                                                                                                                                                                                                                            |
| `MWSDK_MAKE_???`      | <p>VS Codeの設定定義で利用します。</p><p><code>JOBS</code> : STAGE APPで設定された並列ビルド数を渡します</p><p><code>DISABLE\_LTO</code> : LTOを無効化します(<code>Windows</code>)</p>                                                                                                                                                 |

#### 参考１

`.vscode/settings.json` の設定例（抜粋）

```
    "C_Cpp.default.includePath": [
        "${env:MWSDK_TWENET_LIBSRC}/include/**",
        "${env:MWSDK_TWENET_LIBSRC}/src/**"
    ],
    "C_Cpp.default.browse.path": [
        "${env:MWSDK_TWENET_LIBSRC}/include/**",
        "${env:MWSDK_TWENET_LIBSRC}/src/**"
    ],
```

"`../../`"で始まる定義は、TWELITE STAGEアプリからプロジェクトを開く場合は不要です。環境変数`MWSDK_TWENET_LIBSRC`を設定しない場合に、既定のディレクトリ構成の時にソース参照先を指定しています。


# 000desc.txt

プロジェクトフォルダに`000desc.txt`が作成されていると、TWELITE STAGE APPは、プロジェクトフォルダの一覧でその内容を表示します。

![000desc.txtの表示例](/files/-MJgEuav7V_EC1sFR7v2)

ファイルは UTF-8 で記述します。書式は２種類あります。

### 書式1

```
スイッチを押した時にLEDを点灯
act4はTWELITE DIPに接続されたスイッチを押した時にLEDを点灯させるactを動作させます。
https://mono-wireless.com/jp/products/act/index.html
```

* 1行目はタイトル行です。
* 2行目以降は詳細の記述です。
* 最終行が http で始まる場合は、ウェブサイトへのリンクになります。

### 書式２

```
[JAPANESE]
TITLE=スイッチを押した時にLEDを点灯
DESC=act4はTWELITE DIPに接続されたスイッチを押した時にLEDを点灯させるactを動作させます。
URL=https://mono-wireless.com/jp/products/act/index.html
```

iniファイルのような書式です。行頭から始まる項目名と`=`文字までを項目の定義として`=`以降が項目の内容です。

| 項目定義         | 詳細                                  |
| ------------ | ----------------------------------- |
| `[JAPANESE]` | ブロックの区切り。現時点では `[JAPANESE]` のみ有効です。 |
| `TITLE=`     | タイトル行です。                            |
| `DESC=`      | 詳細の記述です。改行を含めて複数行にすることもできます。        |
| `URL=`       | ウェブサイトへのリンクです。                      |


# TWELITE STAGE APP

TWELITE STAGE アプリ

{% hint style="success" %}
[資料の取り扱いについて](https://twelite.gitbook.io/general/about_documents)を参照ください。 お気付きの点がありましたら、当社サポート窓口にご連絡いただければ幸いです。
{% endhint %}

{% hint style="danger" %}
画像ファイル（スクリーンキャプチャ）で使われているものと使用中のバージョンが異なる場合があるため、画像中の表示文字列やメニュー順序等に差異がみられることがあります。
{% endhint %}

TWELITE STAGE APP (トワイライト ステージ アプリ) は、TWELITE 無線マイコンモジュール（以下 TWELITE）シリーズのアプリを書き換えたり、実行結果を閲覧したりするためのツールです。

{% hint style="info" %}
Windows/macOS/Linux ではコンパイラ・サンプルコードなどを格納した MWSDK が含まれます。これらに関する詳細は、以下を参照ください。

* MWSDK全般 - <https://sdk.twelite.info/>
* MWXライブラリ - <https://mwx.twelite.info/>
  {% endhint %}

様々なプラットフォームで動作します。

* Windows10
* macOS (High Sierra 以降、Intel および Apple Silicon Mac に対応)
* Linux (Ubuntu18.04)
* Raspberry Pi (Raspberry Pi 3 Model B, Lcd Touch Screen, Raspberry Pi OS August-2020)
* (M5stack : バージョン1.0 まで対応。v1.3以降はソースレベルで非対応です。)

※ プラットフォームによって、動作条件や配布形式、また機能が異なります。

![ルートメニュー](/files/5cARaudy09Zdew1qDY17)

![加速度リアルタイムグラフ](/files/DXRtZEW03HSjGRlbjeAU)

## 本資料について

* <https://twelite.gitbook.io/general/about_documents>を参照ください。
* 対象のプラットフォームを示すため、一部のページでは以下を記載しています。
  * `Windows` -- Windows10
  * `macOS` -- Mac OS X, macOS
  * `Linux` -- Linux (Ubuntuなど)
  * `RasPi` -- RaspberryPi


# LICENSE

ライセンス

モノワイヤレス 株式会社が配布するTWELITE\_Stageの実行形式は `MW-SLA-1J,1E` が適用されます。

{% hint style="success" %}
ソースコードについては[`MW-OSSLA-1J,1E`](https://mwm5.twelite.info/v/latest/license)が適用されます。概要はリンク先を参照ください。

お客様がソースコードからビルドした場合は、非商用目的でより制限の緩和された`MW-OSSLA-1J,1E`による運用が可能です。

一部の配布パッケージ(2020/10/9現在では M5Stack用 0.8.9a パッケージのみ)では`MW-SLA-1J,1E` と `MW-OSSLA-1J,1E` とのデュアルライセンスを適用しているものもあります。パッケージ内のライセンス記述を確認してください。

商用利用では`MW-SLA-1J,1E`を選択いただくことになりますのでご注意ください。
{% endhint %}

### 利用したオープンソース成果物

高品質なソースコードを提供いただいたオープンソースプロジェクトに感謝いたします。

| 名前              | 記述                                                                                                                          |
| --------------- | --------------------------------------------------------------------------------------------------------------------------- |
| SDL2            | Simple DirectMedia Layer Copyright (C) 1997-2020 Sam Lantinga                                                               |
| getopt          | Copyright (c) 1987, 1993, 1994The Regents of the University of California. All rights reserved.                             |
| regex           | regex - Regular expression pattern matching and replacementBy: Ozan S. Yigit (oz) Dept. of Computer Science York University |
| printf          | Copyright (c) 2014 Marco Paland                                                                                             |
| 東雲フォント          | 2001 The Electronic Font Open Laboratoryhttp\://openlab.ring.gr.jp/efont/                                                   |
| M+ BITMAP FONTS | Copyright 2002-2005 COZ <coz@users.sourceforge.jp>                                                                          |
| SQLiteC++       | Copyright (c) 2012-2021 Sebastien Rombauts (<sebastien.rombauts@gmail.com>)                                                 |
| sqlite3         | All of the code and documentation in SQLite has been dedicated to the public domain by the authors.                         |


# 改訂履歴

revision history

ソースコードの変更履歴は <https://mwm5.twelite.info/changes> および　<https://github.com/monowireless/mwm5> を参照ください。

プラットフォームによっては、配布中の最新バージョンと改訂履歴の最新バージョンが一致しない場合があります。

## 1.3.8 MWSTAGE2022\_07収録版

メジャーバージョンアップ。

* 内部描画解像度を320x240から640x480ピクセルに変更
* 加速度センサーのリアルタイムグラフの追加
* センサーデータの保存とグラフ表示を行うセンサーグラフを追加
* 英語表示に対応
* 主要マニュアルをローカルhtmlファイルに変更

## 1.0.8 MWSTAGE2021\_09収録版

* `[ A ]` `[ B ]` `[ C ]`ボタンで、ポインタから外れたボタンが残ってしまう場合があった
* STAGE APPでEnter入力の際にTWELITEに対してCRLFを送信するようにした
* MacのFTDIライブラリを更新しApple Silicon(M1)でもシリアル仲介プログラムを利用しなくても、動作できるようになった
* Windowsでmsysツール群のPATHを内部設定し、期待しないmakeが呼び出されないようにした
* TWELITE未接続でも書き込み画面に移動できるようにした(B,Rキーを入力し、対象のTWELITEモデルを指定する)
* VSCodeを利用する設定を行った場合は、ActやTweAppsを選択したときに、ビルドを実行せず、build/以下の.binファイルを書き込む画面を開くようにした。（ビルドはVSCodeから実施します）
* いくつかの環境変数を内部的に設定し、TWELITE STAGEから起動したVSCodeにこれらを参照させることで、VSCodeから適切なビルドを実行、VSCodeのコード解釈に対して適切なライブラリソースを参照できるようにした
* MWSDKフォルダ以下にサンプルコードが格納されているが、ビルド対象のフォルダをドロップすることで、MWSDK以外のフォルダでもビルドや書き込み作業をできるようにした（フォルダ名に空白や日本語文字などが含まれてはいけません）
* 始動時のコンソール画面に、内部のフォルダ設定や環境変数の設定内容を表示するようにした
* 終了時は１秒待ってからSTAGE APPを終了するようにした

## 1.0.7pre2

* Raspberry Pi の対応を強化 (1.0.7pre2)
  * serial0 の対応（TWELITE STAGE HAT)
  * Zero 向けビルドを追加(対応ライブラリでビルド＆描画フェード機能を無効化)
  * X11 デスクトップ向けビルドを追加
* 一般のFTDIデバイス(FT232,FT230)でも利用できるようにした。ファームウェア書き込みモードは手動で行う必要があります
* Windowsで、シリアルポート選択画面で`c`キーを押すことでWindowsで割り当てられているCOMポートを表示する機能を追加した
* ボーレートを115200bpsから変更できるようにした
* 描画フェード機能を無効にするコマンドラインオプション(`-E 0`)を追加。

## 1.0.3 MWSTAGE2020\_12収録版

* TWELITE CUE対応（パーサー・CUEビューア）
* 書換メニューで、書き込み時にベリファイ（比較）を行うようにした。
* Apple Silicon暫定対応（`TWELITE_Stage.command` はユニバーサルアプリ、シリアル処理用の外部コマンド`sersrv_ftdi.command`、Toolsは Rosetta2 で動作可能な intel バイナリを再ビルド、シリアル通信は外部コマンド経由のため遅くなります)
* フォルダ構成で `MWSTAGE/MWSDK/Tools` を `MWSTAGE/Tools`に移動した。(MWSDKをMWSDK\_COMMONレポジトリをそのまま利用できるようにするため)
* TWELITE\_Stage.ini (起動ファイル名から拡張子を取り除き .ini を付加) を、起動時に読み込みMWSDKフォルダを選択できるようにした。(古い版のライブラリ一式を簡単に切り替えられるようにした)
* 画面描画用のSDL2ライブラリを 2.0.12 に変更した (Windows, MacOS, RaspberryPi)。
* Windows では static ビルドとして DLL ファイル不要とした。
* make -j による並列ビルド数を(物理CPU数 - 1)とした。
* 書換メニューのいくつかの場所で、シリアルポートの再オープンを明示的に行うようにした。デバイスの抜き差しを行ったときなどにUSB接続が切断した場合などに、復帰しやすいようにした。
* Alt(Cmd)+Shift+m, t で mwx, twesettings を開くとき `TWENET/usever.mk` 記載のフォルダを

  　開くようにした。
* \[Raspberry Pi] 初回起動時に /dev/serial0 での書込メニュー遷移が失敗する問題を修正。

### 既知の問題

* 起動時にAlt(Cmd)押し下げ時のヘルプメッセージが出現しない場合がある。Alt(Cmd)+0を入力することで表示されます。
* 書換メニューでファイル名が長すぎる場合に、行の行事が乱れる場合がある。
* Apple Siliconでの動作については十分な検証を行っていません。

## 0.9.11 MWSTAGE2020\_10, Raspberry Pi 版 (暫定版)

(※包括的な検証を実施しないバージョンです)

* Raspberry Pi での動作
* その他、機能調整

## 0.9.9 - MWSTAGE2020\_10収録版

* 最上位メニューにも \[ｳｪﾌﾞ] ボタンを追加し、関連リンクをブラウザで開けるようにした。
* Linux版のフォルダ、ウェブ、VS Code で開く機能を実装した。
* TWELITE が頻繁に UART 出力している場合に、書き込みメニューへ遷移しづらいことがあった

## 1.0.3 MWSTAGE2020\_12収録版

* TWELITE CUE対応（パーサー・CUEビューア）
* 書換メニューで、書き込み時にベリファイ（比較）を行うようにした。
* Apple Silicon暫定対応（`TWELITE_Stage.command` はユニバーサルアプリ、シリアル処理用の外部コマンド`sersrv_ftdi.command`、Toolsは Rosetta2 で動作可能な intel バイナリを再ビルド、シリアル通信は外部コマンド経由のため遅くなります)
* フォルダ構成で `MWSTAGE/MWSDK/Tools` を `MWSTAGE/Tools`に移動した。(MWSDKをMWSDK\_COMMONレポジトリをそのまま利用できるようにするため)
* TWELITE\_Stage.ini (起動ファイル名から拡張子を取り除き .ini を付加) を、起動時に読み込みMWSDKフォルダを選択できるようにした。(古い版のライブラリ一式を簡単に切り替えられるようにした)
* 画面描画用のSDL2ライブラリを 2.0.12 に変更した (Windows, MacOS, RaspberryPi)。
* Windows では static ビルドとして DLL ファイル不要とした。
* make -j による並列ビルド数を(物理CPU数 - 1)とした。
* 書換メニューのいくつかの場所で、シリアルポートの再オープンを明示的に行うようにした。デバイスの抜き差しを行ったときなどにUSB接続が切断した場合などに、復帰しやすいようにした。

### 既知の問題

* 起動時にAlt(Cmd)押し下げ時のヘルプメッセージが出現しない場合がある。Alt(Cmd)+0を入力することで表示されます。
* 書換メニューでファイル名が長すぎる場合に、行の行事が乱れる場合がある。
* Apple Siliconでの動作については十分な検証を行っていません。

## 0.9.11 MWSTAGE2020\_10, Raspberry Pi 版 (暫定版)

(※包括的な検証を実施しないバージョンです)

* Raspberry Pi での動作
* その他、機能調整

## 0.9.9 - MWSTAGE2020\_10収録版

* 最上位メニューにも \[ｳｪﾌﾞ] ボタンを追加し、関連リンクをブラウザで開けるようにした。
* Linux版のフォルダ、ウェブ、VS Code で開く機能を実装した。
* TWELITE が頻繁に UART 出力している場合に、書き込みメニューへ遷移しづらいことがあった

## 0.9.8a

> <https://github.com/monowireless/TWELITE_STAGE_Bin_M5Stack/releases/tag/0.9.8a>

M5Stack版で `MW-SLA-1J,E` / `MW-OSSLA-1J,E` のデュアルライセンスとし、`readme-j.txt` を更新した。

## 0.9.8

ビューア一覧表示に\[ｳｪﾌﾞ]ボタンを追加し、関連サイトを開く機能を追加など。

### 改定内容

* ビューア＞コマンダーの追加
  * 標準アプリ 0x80 コマンド
  * NOTICE PALのLED制御 (App\_Wingsにコマンドを送付)
* ビューア＞PALビューアのNOTICE PAL対応。
* Actエクストラのメニューを追加
  * Act\_samplesより高度なもの
  * 外部のオープンソースライブラリ（センサー手続きなど）を利用したもの
* マウスによる操作を拡大 (リスト、ボタン、タブ)
  * マウス移動でフォーカス、左クリックで確定、右クリックは\[ESC]キー入力
* 画面表示負荷の低減
  * アプリケーションがバックグラウンドの時はスクリーンセーバーを無効にした
  * アプリケーションがバックグラウンドの時は、描画回数を減らして CPU 負荷を減らした
* ビルドプロジェクト(Act, TWE\_Apps, Actエクストラ)の一覧の機能強化
  * 項目選択時に下部に概要を表示 (000desc.txtを読み込む。TWE\_Descクラスにより処理)
  * プロジェクトフォルダを開く（またはVSCodeで開く)機能
  * 関連ウェブサイトを開く機能
  * ALt+Shift+m mwxライブラリ、Alt+Shift+t twesettingsライブラリを開く機能
  * ビルドメニュー中で選択中のフォルダやビルドエラーファイルを開けるようにした。
* ログ（シリアルポート入出力）機能の追加
  * (Alt/Cmd+L)でログの開始・終了
  * ログファイルを {TWELITE\_Stage 実行形式のあるフォルダ}/log に格納
  * ファイル名は twestage\_{日付-時刻}.log
  * Shift+Alt/Cmd+L でログファイルフォルダを開く
* その他、変更・修正など
  * シリアル(FTDI)デバイス名、IDの表示方法を変更
  * App\_UARTでインタラクティブモードに遷移しなかった問題を修正
  * フォルダドロップ時の挙動を変更した (これまではバイナリ書き込みになる場合があったが、メニュー遷移とした)
  * ターミナル長押し時\[C]でリセットに加え、画面クリアするようにした。

### 既知の問題

* M5Stack で設定を保存するときにハングアップし、設定内容が初期化される場合があります。

## 0.8.9

2020\_05 リリース版

* ウインドウアイコンの追加
* BINファイル一覧画面での最大リスト数の制約を緩和 (win/linux/mac)
* Glancerビューアの追加
* 解説文面等の調整
* コンソール画面の描画の調整
* ファーム書き込み後の移動先画面(インタラクティブモードかターミナルか）の設定が動作していなかった
* Alt(or Cmd)+W の割り当てを変更
* その他不具合の修正

## 0.8.6

Linux 版リリース初版

## 0.8.5

リリース初版


# 最新版の取得

最新版の取得

最新版のTWELITE STAGE アプリは、以下のいずれかの方法で取得できます。

### TWELITE STAGE SDK 全体（公式サイト）

モノワイヤレス公式サイトでは、TWELITE STAGE アプリを含む開発ツール一式（Windows/macOS/Linux用）を配布しています。

> <https://mono-wireless.com/jp/products/stage/index.html>

### TWELITE STAGE アプリのみ（GitHub）

モノワイヤレス公式リポジトリでは、TWELITE STAGE アプリ単体のバイナリを配布しています。 TWELITE STAGE アプリだけを更新する場合や、M5Stack版を取得する際にはこちらをご利用ください。 各バイナリのバージョンはGitHub上のtagから識別できます。

{% hint style="warning" %}
TWELITE STAGEアプリは、安定板として配布された最新のTWELITE STAGE SDKにおける動作を目的としています。 したがって、古いSDKでは、新しいTWELITE STAGEアプリが正常に動作しない恐れがあります。
{% endhint %}

#### Windows

> <https://github.com/monowireless/TWELITE_Stage_BIN_Win>

#### macOS

> <https://github.com/monowireless/TWELITE_Stage_BIN_macOS>

#### Linux

Linux 版のバイナリは個別に配布しておりません。 バイナリは [TWELITE STAGE SDK](https://mono-wireless.com/jp/products/stage/) パッケージから取得してください。 もしくは、ソースコードからビルドしてください。

#### Raspberty Pi

Raspberry Pi 版のバイナリは個別に配布しておりません。 バイナリは [TWELITE STAGE SDK](https://mono-wireless.com/jp/products/stage/) パッケージから取得してください。 もしくは、ソースコードからビルドしてください。

#### M5Stack

バージョン 1.0.3a までを以下のページで配布しております。

> [https://github.com/monowireless/TWELITE\_Stage\_BIN\_M5Stack](https://github.com/monowireless/TWELITE_STAGE_Bin_M5Stack)

### ソースコード (MWM5ライブラリ)

TWELITE STAGE のソースコードを含む MWM5 ライブラリは以下のページで公開しています。

> <https://github.com/monowireless/mwm5>

TWELITE STAGE アプリのソースコードは、`examples/TWELITE_Stage`に配置しています。


# インストール

インストール

動作環境によっては、本アプリケーションの動作に各種設定が必要です。問題が生じた場合には、本資料の記述を参考にして環境を整備してください。

{% hint style="warning" %}
開発環境を構築するためには、ソフトウェア群のインストール、またこれらの利用許諾に同意する必要があります。また、セキュリティ設定等が必要になる場合があります。

* 配布時に十分注意しておりますが、お客さまの側でもウィルスやマルウェアが含まれていないことを確認いただくようお願いします。
* セキュリティの運用（外部アプリケーションのインストールの可否など）については、お客さまの環境の管理者にご確認ください。

[「アプリケーションの配布と実行について」](https://twelite.gitbook.io/general/appinstall) も併せてご覧ください。以下の内容を含みます。

* 本来のファイルとダウンロードしたファイルの同一性の確認について
* macOS/Windowsにおけるコード署名の取り扱いについて
  {% endhint %}

## TWELITE STAGE SDK のインストール手順

### ① アーカイブを取得

各プラットフォーム (Windows / macOS / Linux) 用の TWELITE STAGE SDK を [ダウンロード](https://mono-wireless.com/jp/products/stage/) します。

### ② アーカイブを展開

ダウンロードしたZipアーカイブを展開します。

{% hint style="warning" %}
展開先のファイルパスには、半角数字 `0..9`、半角アルファベット`a..zA..Z`、一部の記号 `-_.` 以外の空白や漢字・ひらがな等を含めないでください。

Windows の場合の例

* × `C:\work\作業\`
* × `C:\Users\user1\work dir\`
* 〇 `C:\Work\Work1`
  {% endhint %}

### ③ ファイルを確認

展開先のフォルダを確認します。

{% hint style="warning" %}
通常 `C:\Work` 上に配置したアーカイブは `C:\Work\MWSTAGE` に展開されますが、展開ソフトによってはフォルダ名が異なる可能性があります。 必要に応じて変更してください。
{% endhint %}

{% hint style="info" %}
文中では展開したフォルダ (例 `C:\Work\MWSTAGE` ) を `{MWSTAGE インストール}` のように表記する場合があります。
{% endhint %}

展開先のフォルダ `{MWSTAGE インストール}` には、以下が含まれます。

* TWELITE STAGE アプリ
  * Windows の場合：`TWELITE_Stage.exe`（通常版）、`TWELITE_Stage_VSCode.exe`（VSCode対応版）
  * macOS の場合：`TWELITE_Stage.command`（通常版）、`TWELITE_Stage_VSCode.command`（VSCode対応版）
  * Linux の場合：`TWELITE_Stage.run`（通常版）、`TWELITE_Stage_VSCode.run`（VSCode対応版）
* TWELITE STAGE - TWELITE STAGE APP の関連ファイル
* MWSDK - ライブラリ、ソースコードなど
* Tools - ビルドするためのツールチェインなど
* BIN - TWELITE STAGE APP の \[BINから選択]メニューで参照されるTWELITE 向け.BINファイル
* log - TWELITE STAGE APP のログ機能やデータベースファイルの保存先
* flask\_wsns\_db - Python, Flask, sqlite3 による簡易的なサーバ

詳細は「[フォルダ構成](/misc/directories)」をご覧ください。

## プラットフォーム別の情報

以下を参照してください。

* [Windows](/install/windows)
* [macOS](/install/macos)
* [Linux](/install/linux)
* [Raspberry Pi](/install/raspberrypi)


# Windows

TWELITE\_Stage インストール (Windows10)

`Windows`

### 環境

以下の環境で開発・動作確認しています。

* Windows10 バージョン 1903
* VisualStudio 2019 (32bit ビルド)

### シリアルポートの取り扱い

MONOSTICK や TWELITE-R は、 FTDI社の USBシリアル変換IC FT230 / FT232 シリーズを搭載しています。これらを利用するために、デバイスドライバのインストールが必要となる場合があります。

PC がMONOSTICK や TWELITE-R を認識しない場合には、<https://www.ftdichip.com> より D2XX ドライバをインストールしてください。

### Visual C++ ランタイムライブラリの追加インストール

場合によっては、**Visual Studio 2019 の Visual C++ 頒布可能コード**（ランタイムライブラリ）が必要です。

アプリケーションの起動時にエラーが出て起動しない場合は、本パッケージで再配布している **TWELITE\_Stage¥INSTALL¥VC\_redist.x86.exe** を実行するか、マイクロソフト社のウェブサイトから入手してください。なお、再配布バイナリは 32bit です。


# macOS

TWELITE\_Stage インストール (macOS)

`macOS`

### 環境

以下の環境で開発・動作確認しています。

* macOS 10.14 (Mojave, Intel)
* macOS 12.4 (Monterey, Apple Silicon)

### 依存するソフトウェアや警告ダイアログについて

下記の事象が発生した場合には、 TWELITE\_Stage の動作のために、実行の許可やインストールが必要です。

* ツールチェインにはコード署名がなされていますが、コード署名が正しく認証されない場合は、ビルドツールチェイン (ba-elf-gcc など) の実行形式一つずつについて、動作許可を求められる場合があります。
* ダウンロードアーカイブには署名しておりません。実行時には、インターネットからダウンロードされたアプリケーションとしてセキュリティ警告が出る場合があります。
* TWELITE\_Stage をインストールしたパスからの実行許可を要求される場合があります。
* ビルド実行時に make ユーティリティのインストールダイアログが出る場合があります。

#### make ユーティリティの追加インストール

場合によっては、make ユーティリティをインストールしなくてはなりません。

{% hint style="warning" %}
macOSバージョンの違いなどにより、別の手順で行う必要があるかもしれません。
{% endhint %}

コマンドライン (zsh) から make を実行したときに、エラーが出る場合には Command Line Tools をインストールします。

```bash
$ xcode-select --install
```

インストールが完了したら、make を入力して以下のメッセージの出力を確認します。

```bash
$ make
make: *** No targets specified and no makefile found.  Stop.
```

### シリアルポートの取り扱い

MONOSTICK や TWELITE R には、 FTDI社 (<https://www.ftdichip.com>) の USBシリアル変換IC FT232 シリーズを、TWELITE R2 には FT230 シリーズを搭載しています。これらを利用するために、デバイスドライバのインストールが必要となる場合があります。

TWELITE\_Stage を起動してもシリアルポートが表示されない場合は、FTDI社のドライバをアンロード（無効化）してください。

{% hint style="danger" %}
このユーティリティは MONOSTICK や TWELITE-R を挿入した際にOS標準のデバイスドライバのロードを抑制するだけでなく、同じ USB の ID を持つそれ以外のデバイスについてもデバイスドライバのロードを抑制します。
{% endhint %}

<https://www.ftdichip.com/Drivers/D2XX.htm> より D2xxHelper をダウンロードできます。 なお、TWELITE STAGE SDKの TWELITE\_Stage/INSTALL フォルダにも同じものを収録しています。

#### 参考：FTDI社デバイスドライバの手動アンロード

FTDI 関連のドライバをアンロードするには、以下のコマンドを実行します。

```bash
$ sudo kextunload -b com.apple.driver.AppleUSBFTDI
```


# Linux

TWELITE\_Stage インストール (Linux)

`Linux`

{% hint style="warning" %}
TWELITE R2 のUSBデバイスIDが従来の0403:6001から0403:6015に変わっています。udevの設定追加が必要です。
{% endhint %}

{% hint style="danger" %}
32bit版は用意しておりません。
{% endhint %}

{% hint style="warning" %}
Linux環境はディストリビューションやバージョンによって、用意されているパッケージの種類が異なります。個別にパッケージ等のインストールや設定が必要になる場合があります。

エラーメッセージ等を手がかりに一般の情報を参照いただくようお願いいたします。
{% endhint %}

### 環境

TWELITE STAGE は以下の環境で開発・動作確認しています。

* Ubuntu 16.04, 18.04, 20.04
* NNLinux Beta8 64bit
* Centos7

### シリアルポートの取り扱い

TWELITE STAGE から MONOSTICK や TWELITE-R を認識するには、ftdi\_sioモジュールをアンロードし、USBデバイスに対して読み書き権限を与える必要があります。

{% hint style="info" %}
USBデバイスのIDを以下に示します。

* ベンダーID 0x0403
* プロダクトID 0x6001(MONOSTICK,TWELITE R) または 0x6015 (TWELITE R2)
  {% endhint %}

なお、この設定を自動化するための udev の設定スクリプト(Ubuntu, CentOS) を用意しています。

`/etc/udev/rules.d` に定義をコピーして、設定をリロードします。 設定後は USB デバイスを抜き差ししてから `TWELITE_Stage.run` を実行してください。起動直後の画面で USB デバイスが表示されたなら、設定が反映されています。

#### Ubuntu 16.04, 18.04. 20.04

```
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
$ sudo ./set_udev_sudo.sh
```

定義ファイル（読みやすいように改行しています）

```
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
   MODE="0666",
   RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015",
   MODE="0666",
   RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
```

#### Centos 7

```
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/centos/
$ sudo ./set_udev_sudo.sh
```

定義ファイル（読みやすいように改行しています）

```
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
   MODE="0666",
   RUN+="/bin/sh -c '/usr/sbin/rmmod ftdi_sio'"
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015",
   MODE="0666",
   RUN+="/bin/sh -c '/usr/sbin/rmmod ftdi_sio'"
```

### アプリケーションの登録

必要に応じて、お使いのデスクトップ環境に合った方法でアプリケーションを登録してください。

{% hint style="info" %}
デスクトップ上のファイルアイコンから、`TWELITE_Stage.run` を実行できない場合があります。 これは、システムが `TWELITE_Stage.run` を実行形式として認識できない場合があるためです。
{% endhint %}

#### Ubuntu 16.04, 18.04, 20.04

Ubuntu用の定義ファイル生成スクリプトを用意しています。

```
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
$ ./make_launch_icon.sh
```

このスクリプトは `.desktop` ファイル（アプリ定義）を`$HOME/.local/share/applications` に作成します。

スクリプト実行後に、アプリケーション一覧に TWELITE STAGE のアイコンが追加されます。


# RaspberryPi

TWELITE\_Stage インストール (Raspberry Pi)

`RasPi`

TWELITE Stage アプリは、一部を除く Raspberry Pi でも動作します。

* マウスとタッチスクリーンに対応します。
* ビルドツールチェインが付属しており、コンパイルもできます。
* 実行形式には、X11版のほかにフレームバッファ版（nox）があるほか、半透明エフェクトなどを省略した軽量版があります。

{% hint style="warning" %}
お使いの RaspberryPi の OS 種別、バージョン、インストール状況によっては動作しない場合や、再コンパイル等が必要になる場合があります。
{% endhint %}

## 環境

TWELITE STAGE は以下の環境で開発・動作確認しています。

* ハードウェア
  * Raspberry Pi 3 Model B
  * LCD Screen: Raspberry Pi Touch Display (7")
* ソフトウェア
  * Raspberry PI OS (32bit) Lite (Version:August 2020)

## 既知の問題・制限事項

* 1回目の起動で `/dev/serial0` の動作に失敗することがあります。
* Raspberry Pi 4B では `/dev/serial0` の動作は未検証です。
* Raspberry Pi 4B ではタッチスクリーンの動作は未検証です。
* TWELITE STAGE への入力文字列が`/dev/tty1`上で動作してるシェルやgettyへ入力文字列がそのまま渡されます。`/dev/tty1`から起動することを推奨します。
* 他のインストールや動作のプログラム(X11など)に影響を受けることがあります。

## アーカイブの展開

ダウンロードしたアーカイブファイルは、パス名に空白や日本語などが含まれないフォルダに展開します。

以下ではRaspberry Piのホームフォルダに展開しています。

```
$ cd /home/pi
$ unzip MWSTAGE2020_XX_YYYY.zip
```

### フォルダ構成

```
../MWSTAGE
     TWELITE_Stage.run    TWELITE_Stage アプリ
     BIN/                 ファームウェアBINファイル
     MWSDK/               MWSDK ライブラリなど
     TWELITE_Stage/       TWELITE_Stage アプリ関連ファイル
```

## デバイスドライバ

TWELITE STAGE から MONOSTICK や TWELITE-R を認識するためには、ftdi\_sioモジュールのアンロードや、USBデバイスに対する読み書き権限の付与が必要です。

{% hint style="info" %}
USBデバイスのIDを以下に示します。

* ベンダーID 0x0403
* プロダクトID 0x6001(MONOSTICK,TWELITE R) または 0x6015 (TWELITE R2)
  {% endhint %}

この設定を自動化するための udev の設定スクリプトを用意しています。`/etc/udev/rules.d` に定義をコピーして、設定をリロードしています。設定後は USB デバイスを抜き差ししてから `TWELITE_Stage.run` を実行してください。起動直後の画面で USB デバイスが表示されたなら、設定が反映されています。

```
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
$ sudo ./set_udev_sudo.sh
```

定義ファイル（読みやすいように改行しています）

```
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
   MODE="0666",
   RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
ACTION=="add",
   ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015",
   MODE="0666",
   RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
```

## シリアルポートの取り扱い

上述の環境では、`raspi-config` よりシリアルポートの設定をすることで `/dev/serial0` が利用できます。

```
  $ sudo raspi-config

  メニューより
  "3 Interface Options    Configure connections to peripherals"
  →"P6 Serial Port Enable/disable shell messages on the serial connection"

  以下のようにログインシェルとしては利用しない、ハードウェアを有効化するを選択します。
  "Would you like a login shell to be accessible over serial?" -> <No>
  "Would you like the serial port hardware to be enabled?" → <Yes>
```

### 配線例

```
 [TWELITE]               [RaspberryPi]
  GND  ------------------ Gound (#6,#9,#14,#20,#25,#30,#34,#39のいずれか)
  TXD(DIO6,DIP#10) ------ GPIO15/UART0 RXD (#10)
  PRG(SPIMISO,DIP#7) ---- GPIO23 (#16)
  RXD(DIO7,DIP#3) ------- GPIO14/UART0 TXD (#8)
  RST(RESETN,DIP#21) ---- GPIO22 (#15)
  VCC  ------------------ 3V3 (#1,#17のいずれか)
  SET(DIO12,DIP#15) ----- GPIO12 (#32)
```

* TWELITE, Raspberry Pi それぞれのマニュアルを参照してください。
* DIP# は TWELITE DIP のピン番号です。
* 上記の配線は TWELITEが安定稼働することを保証するものではありません。

## TWELITE Stage アプリの起動

* フレームバッファ版はX11のデスクトップ上では動作しません。X11を終了しておきます。
* `TWELITE_Stage.run`を実行します。スクリーン画面上のTWELITE Stageアプリが表示されます。

### 留意事項

* マウスとタッチパネルに対応します。
* TWELITE Stage アプリ中で、入力した文字はコンソール画面にも表示される場合があります。

## その他

### /dev/dri

`TWELITE_Stage.run` 起動時に以下のエラーが出る場合がありますが、無視して構いません。

```
  "The path /dev/dri/ cannot be opened or is not available"
```

### メモリ不足

CPU数が4以上の場合、ビルド時はCPU数を一つ引いた値の並列コンパイルを実行します(4コアなら3並列)。 場合によってはメモリ不足が発生するかもしれません。その場合は並列数を変更してください。

### RaspberryPi 4

{% hint style="warning" %}
この情報は十分な検証を行っていません。
{% endhint %}

以下の設定が必要です。OpenGL関連のドライバが有効にする必要があります。

* `raspi-config` の Advanced Settings → A2 GL Driver → G2 GL (Fake KMS) を選択します
* `libgles-dev` パッケージを導入しておきます
* タッチスクリーンの動作は未検証です


# 使用方法

operation manual

TWELITE STAGE アプリ の画面・操作方法を解説します。

## アプリの起動方法

TWELITE STAGE アプリを起動するには、 `{MWSTAGE インストール}` にある実行形式を実行します。

{% hint style="warning" %}
アップデートなどでTWELITE STAGE アプリの実行形式を差し替える場合には、必ず、指定フォルダ `{MWSTAGE インストール}` にコピーしてください。 それ以外のパスに実行形式を配置した場合の動作は未定義です。
{% endhint %}

実行はプラットフォーム(Windows, macOS, Linux)によって方法が違います。

| システム               | ファイル拡張子    | 備考                                                                     |
| ------------------ | ---------- | ---------------------------------------------------------------------- |
| Windows            | `.exe`     | エクスプローラで実行形式をダブルクリック。                                                  |
| macOS              | `.command` | ファインダーから実行形式をダブルクリック。                                                  |
| Linux, RaspberryPi | `.run`     | ディストリビューションやインストール環境に依存します。Xウインドウシステム上のターミナル画面(xtermなど)から、コマンドとして実行します |

## アプリの実行形式

２種類の実行形式があります。

* TWELITE\_Stage.{拡張子} - 標準設定で起動します。
* TWELITE\_Stage\_VSCode.{拡張子} - 「VSCode を使う」設定済みです(設定は`TWELITE_Stage_VSCode.ini`に保存されている)。VSCodeを使う設定を有効にすると、VSCodeを用いた開発作業に適した動作を行うようになります。

{% hint style="warning" %}
TWELITE STAGE APP は複数起動してもエラーになりませんが、複数起動すると不都合のある機能（センサーグラフ機能など）が存在します。

したがって、複数のアプリを同時に起動する際には、実行形式を複製して、別々のファイルを立ち上げる必要があります。 各種設定ファイルや入出力ファイルが分離されるため、互いの干渉を避けることができます。
{% endhint %}

## アプリの実行画面

アプリを起動すると、以下の２種類のウィンドウが表示されます。

* メイン画面
  * TWELITE STAGEのユーザインタフェースを表示します。
    * TWELITE STAGEの操作はこの中で行います。
* コマンド画面
  * 通常は使用しませんが、補助情報を表示します。
    * シリアル通信の内容が表示されるため、ログを確認する用途に最適です。
    * コマンドラインから実行した場合には、実行元のターミナルがコマンド画面となります。

![STAGE画面例](/files/cDbyjDob06m6zT4TP7wT)

## アプリの終了

いずれかの方法で終了してください。

* 実行画面上の右上にマウスポインタを移動し、画面内に表示された終了ボタンを押します。
* 実行画面のウインドウを閉じます（macOSの場合は`⌘Q`も使用できます）。

{% hint style="warning" %}
ごくまれに、終了操作をしても実行画面が残る場合があります。その場合には、以下をお試しください。

* TWELTIE STAGE APPのコマンドライン画面を閉じる。
* 強制終了を行う（強制終了の操作方法はお使いのシステムの解説を参照してください）。
  {% endhint %}


# キー操作・マウス操作

キー操作・マウス操作

`Windows` `macOS` `Linux` `RasPi`

TWELITE STAGE APP の操作について解説します。

## キー操作

`Windows` `macOS` `Linux` `RasPi`

`Alt(⌘)`を押しながら行うキー入力は、 TWELITE STAGE APPの設定を変える操作等に割り当てられています。 その他のキー操作は、通常は文字入力として機能します。

### 共通のキー

`Windows` `macOS` `Linux` `RasPi`

| キー          | 意味                                                    |
| ----------- | ----------------------------------------------------- |
| `ESC` `ESC` | 素早く2回ESCを押す。キャンセル、または前画面に戻る。画面によっては1回の`ESC`で前画面に戻ります。 |
| `Enter`     | 入力、選択                                                 |
| カーソル↑↓      | 項目の選択                                                 |

### ヘルプ画面

`Windows` `macOS` `Linux` `RasPi`

Windows/macOS/Linux/Raspberry Piでは、**Alt(⌘)を押し続ける**ことでヘルプ画面を表示します。ヘルプ画面ではAlt(⌘)と一緒に操作できるキーの説明や一部動作状況を表示します。

ヘルプ画面は**画面の左上部分にマウスポインタを移動**することでも表示できます。

![ヘルプ画面](/files/G5z11C3nr2rOfHTuiW8g)

### Alt(⌘)+操作

`Windows` `macOS` `Linux` `RasPi`

Windows/macOS/LinuxでのAlt(⌘)を押しながら行う操作について解説します。

表中ではAlt(⌘)+の表記は省略しています。上記のヘルプ画面から使用可能なキーを確認できますが、下表に補足説明を示します。

| `Alt(⌘)`+キー             | 意味                                                                                                                                                    |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `I`                     | <p>+ + + を入力します。インタラクティブモードに入るキーシーケンスです。<br>※ スリープによる間欠動作を行うアプリは非対応。</p>                                                                              |
| `R`                     | モジュールをリセットします。TWELITE R や MONOSTICK の機能を用いてリセットピンの制御を行います。                                                                                            |
| `A`, `S`, `D`           | A, B, C ボタンを押します。                                                                                                                                     |
| `Shift` + `A`, `S`, `D` | A, B, C ボタンを長押しします。                                                                                                                                   |
| `C`                     | 表示されている画面の文字列をクリップボードにコピーします。（画面によって範囲は異なります）                                                                                                         |
| `V`                     | クリップボードからキーボード入力としてペーストします。                                                                                                                           |
| `F`                     | フルスクリーン表示に遷移します。Shift+Fの場合、可能であればより拡大します。                                                                                                             |
| `G`                     | 画面の描画方法を変更します。640x480の液晶画面をエミュレートしていますが、拡大時の描画方式として（1. 液晶モニタ風の描画 / 2. ブラウン管風の描画 / 3. ドットを目立たせた拡大 / 4. ドットをぼやかせた拡大）の４種類が選択できます。※ 設定メニューで起動時の設定を変更できます。 |
| `J`                     | <p>画面サイズを選択します。選択可能な画面サイズは {640,480}, {1280, 720}, {1280,960}, {1920,1440}, {2560,1440}, {320,240} です。<br>※ 設定メニューで起動時設定にできます。</p>                    |
| `Q`                     | TWELITE STAGE APPを終了します。                                                                                                                              |
| `0`                     | シリアルポートを切断し、再度シリアルポートの一覧を表示します。                                                                                                                       |
| `1`,`2`,..              | シリアルポートを選択します。                                                                                                                                        |
| `L`, `Shift`+`L`        | シリアルポートの入出力のログを開始します。終了時にはログファイルが Windows であればメモ帳、macOS であれば ログビューア で開かれます。`Shift`+`L` でログ格納フォルダを開きます。                                                |

#### その他の操作

| キー                          | 意味                      |
| --------------------------- | ----------------------- |
| `Alt(⌘)`+`Shift`+`Ctrl`+`m` | MWX ライブラリコードのフォルダを開きます。 |
| `Alt(⌘)`+`Shift`+`l`        | log フォルダを開きます。          |

## マウス操作

`Windows` `macOS` `Linux` `RasPi`

マウス操作は左クリックが中心ですが、右クリック、右ダブルクリック、ホイールを使う場合があります。

| マウス操作         | 意味                       |
| ------------- | ------------------------ |
| 左クリック         | 選択                       |
| 左クリックしながらドラッグ | 画面によって利用（グラフ画面でのドラッグ）    |
| 左ダブルクリック      | 使用しない                    |
| 右クリック         | 画面によって利用する               |
| 右ダブルクリック      | 画面から脱出する(`ESC` `ESC`と同様) |
| ホイール          | 画面によって利用する（グラフ画面で拡大縮小）   |

### マウスによるA,B,Cボタン

`Windows` `macOS` `Linux` `RasPi`

画面下部のメニュー表示にマウスポインタを移動すると、`[ A ]`, `[ B ]`, `[ C ]` という表記のボタンが表示されます。 TWELITE STAGE APPは、この3つ並びのハードウェアボタンを模したメニューに画面ごとの機能を割り当てています。 このボタンを左クリックまたは左長押しクリックすることで、機能を呼び出しできます。（`Alt(⌘)`+`a`,`s`,`d` または　`Alt(⌘)`+`Shift`+`a`,`s`,`d`でも選択可能）

![画面下部の仮想\[ B \]ボタンの表示例](/files/97eAdFuBLfXUyjjXDwpK)

### マウスによる画面操作

`Windows` `macOS` `Linux` `RasPi`

Windows/macOS/Linuxでは、TWELITE STAGE APP の画面を原則文字列のみで構成しますが、メニューやボタン、タブについてはマウスによる操作が可能です。

![コマンダー画面例](/files/pjbAfNDUkKtIdOPwznbX)

テキストのみの構成ですが、画面上部のタブや、反転表示の文字はマウスの左クリックで選択可能です。


# 画面

画面

`Windows` `macOS` `Linux` `RasPi`

![画面例、メニュー](/files/5cARaudy09Zdew1qDY17)

### Windows / macOS / Linux / Raspberry Pi

TWELITE STAGE APPはコンソール画面（コマンドライン）から起動するアプリケーションです。コンソール画面とウインドウ画面の両方に情報が出力されます。

コンソール画面には、ターミナルと同様にUART出力を表示します。

{% hint style="info" %}
一部の環境でコンソール画面の入力を受け付ることがありますが、確認済みの正式機能という位置づけではありません。
{% endhint %}

### Raspberry Pi (nox)

X11を使わず、フレームバッファに表示します。

通常（フレームバッファ上のシェル画面から起動した場合）はコンソール画面は表示されません。


# シリアルポート選択

シリアルポート選択

`Windows` `macOS` `Linux` `RasPi`

![シリアルポート選択](/files/Yf8I1W8SfbVcHkiDg2I2)

Windows / macOS / Linux では、始動時にTWELITEが接続されたシリアルポートを選択する画面を表示します。 ただし、シリアルポートは、あとから接続することもできます。

{% hint style="info" %}
TWELITE STAGEアプリでは、シリアルポートの選択と各画面の処理は連携しません。 例えば、シリアルポートの選択をしていない状態で、ビューアを起動しても表示は更新されません。この状態でシリアルポートを選択すると、ビューワの表示が更新されます。

なお、シリアルポートは `Alt(Cmd)+0,1,2,...` のキー操作でいつでも切り替えできます。
{% endhint %}

#### Windows

`c`キーを押すと、リストで反転中のシリアルポートのCOMポート名が表示されます。

#### Raspberry Pi

Raspberry Pi ではUSBデバイスに加えて`/dev/serial0` `/dev/serial1`があれば `serial0`, `serial1` を表示します。なお、通常は`serial0`を使用します。


# メインメニュー

メインメニュー

`Windows` `macOS` `Linux` `RasPi`

階層化されたメニューの最上位に位置します。

![画面例](/files/5cARaudy09Zdew1qDY17)

この画面では、メニュー選択を行います。メニューを反転すると、下部緑色文字部分に簡易的な解説を表示します。

* [ビューア](/usage/screens/main_menu/viewer) : TWELITE から受信した電文を解釈して表示するビューアです。多くの場合、受信側の TWELITE には App\_Wings を書き込んでおきます。
* [アプリ書き換え](/usage/screens/main_menu/firm_prog) : ファームウェアをビルドし、接続した TWELITE に書き込みます。
* [インタラクティブモード](/usage/screens/main_menu/interactive) : 接続した TWELITE 設定を、インタラクティブモードによって行います。
* [TWELITE STAGEの設定](/usage/screens/main_menu/settings) : TWELITE STAGE アプリの各種設定を行います。
* [シリアルポートの選択](/usage/screens/main_menu/select_serial_port) : シリアルポートを選択します。
* 説明書 : 説明書を表示するメニューです。以下の説明書をブラウザで開きます。
  * TWELITE STAGE アプリ（この文書）
  * MWX ライブラリ
  * TWENET\_C ライブラリ


# ビューア

ビューア

`Windows` `macOS` `Linux` `RasPi`

ビューアは、接続した TWELITE から受信した情報を表示したり、コマンドを送ったりするための機能です。

{% hint style="info" %}
各々のビューアは、比較的小規模なプログラムで mwm5 ライブラリの使用方法のサンプルを兼ねています。
{% endhint %}


# ターミナル

ターミナル

`Windows` `macOS` `Linux` `RasPi`

ANSI エスケープシーケンス（の一部）に対応した簡易的なターミナルです。TWELITE と PC 間の入出力を直接扱います。

![](/files/5fNhYfbbiWnTkP4wlNqu)

| 操作         |                                                                                                                      |
| ---------- | -------------------------------------------------------------------------------------------------------------------- |
| \[ A ]     | + + + シーケンスの入力（インタラクティブモード）                                                                                          |
| \[ A ] 長押し | この画面を抜けて、前のメニューに戻ります。                                                                                                |
| \[ B ]     | 大きなフォントで表示する。最初の画面の部分領域を表示します。カーソルが画面中に表示されるように領域を選びますが、画面出力によっては見たい部分が見えない場合もあります。                                  |
| \[ B ] 長押し | 折返し制御のON/OFF。標準では折返し表示を行うようになっていますが、折り返ししないように表示することもできます。画面右端以降の文字列は表示されません。                                        |
| \[ C ]     | ファーム書換画面に移動します。ファームウェアの開発中には頻繁にソースコードの修正、動作確認、ビルド＆書き込みを行うため、ショートカットを用意しています。                                         |
| \[ C ] 長押し | TWELITE のリセットピンを制御し、リセットします。                                                                                         |
| ESC ESC    | ESCキーを２回素早く入力することで、この画面を抜けます。※ 殆どの画面ではESCキーを１回押すことで画面から抜ける操作となっていますが、ターミナルではESCキーの単独入力を使用する場合があるため、２回連続入力の割当になっています。 |


# 標準アプリ ビューア

標準アプリ ビューア

`Windows` `macOS` `Linux` `RasPi`

[App\_Twelite(標準アプリ)](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/)の[0x81コマンド](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/step3-81.html)を解釈して表示します。

![](/files/Nv0rIeGtT7LIwnbUoLl2)

PCに接続する TWELITE に App\_Twelite（標準アプリ） または App\_Wings（親機・中継機アプリ） を書き込んでおき、通信相手のTWELITEから受信したデータがターミナルに表示されることを確認してから使用します。

通信相手の TWELITE には App\_Twelite（標準アプリ）を書き込んでおきます。標準アプリのボタンやアナログ入力の状態のメッセージ (0x81メッセージ) を受信すると、その内容を mwm5 のパーサーライブラリにより解釈して表示します。

| 操作         |                              |
| ---------- | ---------------------------- |
| \[ A ]     | 割当なし                         |
| \[ A ] 長押し | この画面を抜けて、前メニューに戻ります。         |
| \[ B ]     | フォントを変更します。                  |
| \[ B ] 長押し | テスト用のダミーデータによる画面表示を行います。     |
| \[ C ]     | 割当なし                         |
| \[ C ] 長押し | TWELITE のリセットピンを制御し、リセットします。 |
| ESC        | ESCキーを入力することで、この画面を抜けます。     |


# グラフ

グラフ

* [加速度リアルタイムグラフ](/usage/screens/main_menu/viewer/graph/graph_mot) : 加速度センサーのパケットをリアルタイムで表示します。周波数領域の表示や CVS 保存機能があります。
* [センサーグラフ](/usage/screens/main_menu/viewer/graph/graph_sns) : TWELITE 各種センサーのデータを sqlite3 データベースに保存し、グラフを表示します。


# 加速度リアルタイムグラフ

加速度リアルタイムグラフ

`Windows` `macOS` `Linux` `RasPi`

[TWELITE CUE](https://mono-wireless.com/cue)や[TWELITE 動作センサーPAL](https://mono-wireless.com/jp/products/twelite-pal/sense/motion-pal.html)から受信したデータを参照する目的で使用します。

![デモデータ](/files/DXRtZEW03HSjGRlbjeAU)

{% hint style="info" %}
注：センサーグラフ機能では、１パケットに複数サンプルが含まれるような連続計測を行う場合であっても、１パケット１サンプルとして記録します。
{% endhint %}

CUE モード、MOTモード、2525 FIFO モードの３種類に対応します。

連続したサンプルが一定数(解析窓)以上になると、XYZ軸を周波数解析した表示を行います。ただし 2525 FIFO モードでは常に連続していると仮定します。

パケットの区切りが明示的な場合（直前のパケットから３秒以上経過したとき、CUEモードは１パケットごと、MOTモードはパケットのシーケンス番号が不連続になったとき）には、４サンプル分のダミーデータを挿入しピンク色の背景色で表示します。

先着順に最大４ノードまでのデータを格納します。

{% hint style="warning" %}
複数ノード運用時には、互いのパケット衝突により通信の失敗が多くなります。特に FIFO モードでは、送信周期がほぼ一定で互いにほぼ同時期にパケット送信を試み、干渉により送信が失敗するといったことが長時間続く場合があります。原則として無線チャネル１つにつき、１ノードという運用を行います。
{% endhint %}

### 代表的なCUEのインタラクティブモードの設定

* 連続的に約 25Hz で計測したい (Transmit Interval: `0`, Sensor Parameter: `03000000`)
* 連続的に約 50Hz で計測したい (Transmit Interval: `0`, Sensor Parameter: `03000100`)
* 連続的に約 100Hz で計測したい (Transmit Interval: `0`, Sensor Parameter: `03000200`)
* 約10秒おきに 約 100Hz で128サンプル分計測したい (Transmit Interval: `10`, Sensor Parameter: `03000208`)
* 約10秒おきに 約 100Hz で256サンプル分計測したい (Transmit Interval: `10`, Sensor Parameter: `03000210`)
* 約10秒おきに 約 50Hz で64サンプル分計測したい (Transmit Interval: `10`, Sensor Parameter: `03000104`)
* 約10秒おきに 約 200Hz で128サンプル分計測したい (Transmit Interval: `10`, Sensor Parameter: `03000308`)

### 操作

| 操作                    | 内容                                                                                                                   |
| --------------------- | -------------------------------------------------------------------------------------------------------------------- |
| 右部 `[(I)ID#]`ボタン部     | クリックするごとにIDの切り替えを行う。（注：FIFOモードによる連続サンプルデータの場合は、複数IDによる運用は現実的ではありません）                                                 |
| 右部`[(f)SMP#]`ボタン部     | クリックするごとに解析窓サイズを 64,128,256 と変更する                                                                                    |
| 右部 `[PAUSE( )]` ボタン   | 表示更新を中断する（サンプルの取得は内部の一時サンプルバッファが一杯になるまでは実行）                                                                          |
| 右部 `[(c)表示データ保存]` ボタン | CSV形式のデータ出力を行う (log フォルダ)。画面中の一番右に表示されているサンプルからバッファにある一番古いサンプルまでを出力する。出力数は常に 5120 となり、画面一番右に表示されているサンプルが一番最後のデータになる。 |
| マウスドラッグ（グラフ部分）        | 表示サンプルの位置を移動                                                                                                         |
| マウスドラッグ（下部スクロールバー）    | 表示サンプルの位置を移動（より大きなステップで）                                                                                             |
| カーソル→, ←              | サンプル表示の移動                                                                                                            |
| カーソル↑, ↓              | サンプル横軸の拡大・縮小（等倍, 2倍, 3倍, 4倍。解析サンプル数256の場合は 2倍まで）                                                                     |
|                       |                                                                                                                      |

### サンプルレートの推定

サンプリングレートは、パケットの受信時間から計算しています。過去複数サンプルの受信時間を平均して１サンプル分としているため、パケットの飛びなどがある場合は誤差が大きくなります。

サンプルレートの推定が終わると、グラフ表示のスクロールをスムーズにします。

また、関連するログ記録のタイムスタンプ(T\_SMPL)も同様に推測値、かつ、パケット取得時よりあとのタイムスタンプになっています。

### CUEグラフモードの起動時に開く

\[STAGE 共通設定→起動アプリ指定]にて`31`を指定する。

### ログ出力 (表示データ保存)

\[表示データ保存]ボタンを押すことで、画面上の表示位置（右端サンプル）を起点として、最大512サンプル分のデータを出力します。最新のサンプルが末尾に記録されるため、冒頭には何もデータが無い場合がある点に注意してください。

ログファイル名は `{logフォルダ}/acc_snap_{タイムスタンプ}.csv`です。

* データは、右端の一番新しいサンプルが 512 番目（ファイルの末尾）です。
* 周波数解析実行時は、最後のサンプルから 周波数解析サンプル数分が対象です。
* 周波数解析対象サンプルが記録されている行に周波数解析結果を追加しています(64サンプルの場合は 449番目から 32 行が結果で DC 成分から高周波成分までが並びます)。

| ラベル          | 項目名              | 解説                                                                                                                                                        |
| ------------ | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| #            | サンプル番号           |                                                                                                                                                           |
| T\_PKT\[ms]  | パケット受信時刻         | １パケットに複数サンプル含まれるため、同じタイムスタンプのサンプルが並びます。                                                                                                                   |
| SEQ          | パケット続き番号         | パケットの付与されており、連続していればパケットの欠落がないと考えられます。                                                                                                                    |
| T\_SMPL\[ms] | サンプル時刻（仮想・推定）    | パケットの受信時刻から生成した各サンプルのタイムスタンプです。実際にサンプルが行われた時刻とは一致しません。（サンプルレートが受信パケット間隔より推定している点で誤差が大きくなる点と、受信サンプルにサンプル周期を加算している計算をしているため実際のサンプル時刻より１パケット周期分あとのタイムスタンプです） |
| X\[G]        | X軸のサンプル値         | センサーからの値にもとづき、単位は\[G]です。                                                                                                                                  |
| Y\[G]        | Y軸のサンプル値         | センサーからの値にもとづき、単位は\[G]です。                                                                                                                                  |
| Z\[G]        | Z軸のサンプル値         | センサーからの値にもとづき、単位は\[G]です。                                                                                                                                  |
| FD#          | 周波数解析計算値の番号      | 周波数解析サンプル数が 64の場合は `DC,1,2,...,31` の順で並びます。                                                                                                               |
| Hz           | 周波数解析計算結果の周波数軸の値 | およその周波数です。`(FD# / FD_Len) * FD_Freq` で計算しています。                                                                                                            |
| X            | X軸の周波数解析計算値      |                                                                                                                                                           |
| Y            | Y軸の周波数解析計算値      |                                                                                                                                                           |
| Z            | Z軸の周波数解析計算値      |                                                                                                                                                           |
| Label        | 追加情報名            | 下表参照                                                                                                                                                      |
| Info         | 追加情報             | 下表参照                                                                                                                                                      |
|              |                  |                                                                                                                                                           |

#### 追加情報

| 情報名              | 解説                                       |                |
| ---------------- | ---------------------------------------- | -------------- |
| ModuleSID        | 送信側のシリアル番号                               |                |
| Tick\[ms]        | ログファイルオープン時のTWELITE STAGEアプリ側のシステム \[ms] |                |
| Date             | ログファイルオープン時の日付                           |                |
| Time             | ログファイルオープン時の時刻                           |                |
| Time\_Msec\_part | ログファイルオープン時の秒未満部分 \[ms]                  |                |
| Samples          | 有効サンプルデータ                                |                |
| FD\_Len          | 周波数解析サンプル数                               |                |
| FD\_Start#       | 周波数解析開始サンプル番号                            |                |
| FD\_Freq         | 周波数解析範囲の周波数推定値\[Hz]                      | サンプル受信間隔からの推定値 |
|                  |                                          |                |

### ログ出力 (自動保存)

本画面を開き、データが入力された時点で自動的にログファイルを出力します。

* ログファイル名は `logフォルダ/accel_{シリアル番号}_{タイムスタンプ}.csv` です。
* 画面を開いている間はファイルの書出し中です。読み出し用に開けない、または開けたとしてもすべてのデータが読み出せない場合があります。

| ラベル          | 項目名           | 解説                                                                                                                                                        |
| ------------ | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| #            | サンプル番号        |                                                                                                                                                           |
| T\_PKT\[ms]  | パケット受信時刻      | １パケットに複数サンプル含まれるため、同じタイムスタンプのサンプルが並びます。                                                                                                                   |
| SEQ          | パケット続き番号      | パケットの付与されており、連続していればパケットの欠落がないと考えられます。                                                                                                                    |
| T\_SMPL\[ms] | サンプル時刻（仮想・推定） | パケットの受信時刻から生成した各サンプルのタイムスタンプです。実際にサンプルが行われた時刻とは一致しません。（サンプルレートが受信パケット間隔より推定している点で誤差が大きくなる点と、受信サンプルにサンプル周期を加算している計算をしているため実際のサンプル時刻より１パケット周期分あとのタイムスタンプです） |
| X\[G]        | X軸のサンプル値      | センサーからの値にもとづき、単位は\[G]です。                                                                                                                                  |
| Y\[G]        | Y軸のサンプル値      | センサーからの値にもとづき、単位は\[G]です。                                                                                                                                  |
| Z\[G]        | Z軸のサンプル値      | センサーからの値にもとづき、単位は\[G]です。                                                                                                                                  |
| Label        | 追加情報名         | 下表参照                                                                                                                                                      |
| Info         | 追加情報          | 下表参照                                                                                                                                                      |
|              |               |                                                                                                                                                           |

#### 追加情報

| 情報名              | 解説                                       |   |
| ---------------- | ---------------------------------------- | - |
| ModuleSID        | 送信側のシリアル番号                               |   |
| Tick\[ms]        | ログファイルオープン時のTWELITE STAGEアプリ側のシステム \[ms] |   |
| Date             | ログファイルオープン時の日付                           |   |
| Time             | ログファイルオープン時の時刻                           |   |
| Time\_Msec\_part | ログファイルオープン時の秒未満部分 \[ms]                  |   |
|                  |                                          |   |


# センサーグラフ

センサーグラフ

`Windows` `macOS` `Linux` `RasPi`

各種センサーデータをデータベースファイルに記録します。また TWELITE STAGE APP 画面上で簡易的に計測値を参照する機能もあります。

![](/files/zqjknvrXnKNCnKfrFyrf)

{% hint style="warning" %}
同一実行形式名の TWELITE STAGE APP を複数起動して、センサーグラフを同時に使用することはできません。

データベースファイルは `{MWSTAGEインストール}/log` フォルダに格納され、TWELITE\_STAGE APP 実行形式名をもとにファイル名が決まります。同一実行形式の場合、同じデータベースファイルを参照するためです。TWELITE STAGE APPの実装では、複数のアプリが同時に同一のデータベースにデータを追加することを想定していません。また、状況によってはデータベースファイルのアクセスエラーとなり、TWELITE STAGE APP がクラッシュすることもあります。

例えば、MONOSTICK を２台接続して、同時に複数の「センサーグラフ」を動作させたい場合には、各々別の実行形式名 (`TWELITE_Stage_a.exe`, `TWELITE_Stage_b.exe`) とした TWELITE STAGE アプリを実行します。この時のデータベースファイル名は `log/TWELITE_Stage_a_WSns.sqlite`, `log/TWELITE_Stage_b_WSns.sqlite` です。
{% endhint %}

* データの保存には sqlite3 を使用しており、 `{MW_STAGE Install}/log/{実行形式名}_WSns.sqlite` というファイルに格納されます。
* 画面遷移は \[一覧(グラフプレビューあり)]>\[２４時間データ] >\[ライブビュー]です。
  * \[２４時間データ] から更に \[年] \[月] \[日(グラフプレビューあり)] 選択画面に遷移できます。
* \[ライブ]表示画面について
  * 一覧から特定のノードを選択します。
  * １秒おきのリアルタイム表示を行い、過去450秒前までのデータを表示します。
* \[２４時間データ] 表示画面について
  * 特定の日のデータを表示します。
  * １秒おきの取得とし、複数データが有る場合は間引かれます。
  * 最大拡大時（１ピクセル１秒）以外は、各ピクセル範囲での取得値の平均により表示します。
  * 値が画面よりはみ出す場合は上下端に測定点を表示します。
  * 現在時間が含まれる場合は、新しいデータが来ると表示更新します。
  * ホイール、カーソル↑↓：時間軸の拡大・縮小
  * マウスの移動：マウスポインタに対応する時間軸にある取得データを簡易表示します。
    * カーソル→、←：隣の取得データに移動します。
  * クリック&ドラッグ：スクロール（拡大時のみ）
  * 拡大時はスクロールバーによる操作も可能です。
  * \[CSV出力] 機能では、データベースに含まれるすべての取得値を表示します。
* データの抽出は <https://sqlitebrowser.org/> のツールを使ってください。

### 操作

| 操作                 | 内容                       |
| ------------------ | ------------------------ |
| マウスドラッグ（グラフ部分）     | 拡大時に表示位置を移動              |
| マウスドラッグ（下部スクロールバー） | 拡大時に位置を移動                |
| カーソル→, ←           | サンプル表示の移動                |
| カーソル↑, ↓, ホイール     | サンプル横軸の拡大・縮小             |
| `[ライブ]`            | 最新到着データを表示する1秒刻みビューに移動する |
| `[24時間データ]`        | 1日単位グラフに移動する             |
| `[<<一覧]`           | 一覧選択画面に移動する              |
| `[年]`　`[月]` `[日]`  | 年月日で、特定日を選択する            |
| `[最新]`             | 今日のデータに移動                |
| `[CSV出力]`          | 1日分のデータをCSVファイルに出力       |
| 一覧で `[表示]`         | リストの表示方式を変更する            |
| 一覧で `[ソート]`        | リストの並び順を変更する             |
| 一覧で `[↑]`          | リストの並び順を反転する             |

#### センサーノードのメモ(補助情報)の編集

`v1.3.9`以降

「24時間データ画面」上で、画面右上のセンサーノードのメモ部分を左クリックすると、メモを編集するためのプロンプトになります。

![センサーノードのメモ編集中（IMEオン）](/files/OmOrQhZ8ZPX1NsTlWOKZ)

| キー       | 内容                                                       |
| -------- | -------------------------------------------------------- |
| 通常文字     | 通常の英数文字列を直接入力すると画面上にも表示されます。                             |
| IME での入力 | IMEからの入力は画面左上部分に入力途上の文字列が表示されます。`ENTER`キーで入力中の文字列を確定します。 |
| `BS`     | 表示されている末尾の文字を削除します。                                      |
| `ENTER`  | 入力した文字列をデータベースに反映します。                                    |

* IME入力時の操作方法は、利用のシステムに依存する場合があります。
* IME入力時の操作によっては期待しない文字列が入力される場合があります。不要な文字列が入力エリアに表示された場合は `BS` キーで不要部分を削除します。

### 画面遷移

画面は一覧、24時間、ライブの3種類が基本になります。

```
[一覧] <--> [24時間] <--> [ライブ]
              ↓↑
          [年月日選択]
```

### センサーグラフモードの起動時に開く

\[STAGE 共通設定→起動アプリ指定]にて`32`を指定する。

### DBのテーブルについて

#### sensor\_data

| カラム名          | 型                                       | 解説                                                                                                                                                                                                                                                        |
| ------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `_uqid`       | INTEGER                                 | データベースで使用する続き番号                                                                                                                                                                                                                                           |
| `sid`         | <p>INTEGER<br><code>int32\_t</code></p> | `int32_t` 型で格納しているシリアル番号です。"8123abcd" というシリアル番号の場合は整数値で -2,128,368,691 の値が格納されます                                                                                                                                                                          |
| `ts`          | INTEGER                                 | システムがパケットを受信した時刻で、`int64_t` 型で格納されるタイムスタンプ値です。UNIX epoch (エポック、1970年からの経過秒) です。                                                                                                                                                                           |
| `ts_msec`     | INTEGER                                 | タイムスタンプのミリ秒部分です。                                                                                                                                                                                                                                          |
| `year`        | INTEGER                                 | タイムスタンプよりローカル時間の年部分です。                                                                                                                                                                                                                                    |
| `month`       | INTEGER                                 | タイムスタンプよりローカル時間の月部分です。                                                                                                                                                                                                                                    |
| `day`         | INTEGER                                 | タイムスタンプよりローカル時間の日部分です。                                                                                                                                                                                                                                    |
| `hour`        | INTEGER                                 | タイムスタンプよりローカル時間の時部分です。                                                                                                                                                                                                                                    |
| `lid`         | INTEGER                                 | ユーザにより割り当てられた LID などの識別値です。                                                                                                                                                                                                                               |
| `lqi`         | INTEGER                                 | 受信強度の目安値です (Link Quality Indicator) 。                                                                                                                                                                                                                     |
| `pkt_seq`     | INTEGER                                 | パケットの続き番号です。どのような値を取りうるのかはファームウェアによって異なります。                                                                                                                                                                                                               |
| `pkt_type`    | INTEGER                                 | <p>無線パケットの種別です。<br><code>2 PAL AMB, 6 ARIA</code><br><code>1 PAL MAG</code><br><code>\*3 PAL MOT,5 CUE</code><br><code>0x101 App\_Twelite, \*0x103 App\_IO</code><br>\*現時点で非対応</p>                                                                        |
| `value`       | REAL                                    | <p>計測値 (パケット種別によって定義が異なります)<br><code>pkt\_type-></code><br><code>2,6: 温度</code><br><code>1: 磁石の判定有無 00->磁石なし, 01->N極, 02->S極</code><br><code>3,5: X軸加速度(パケット中に複数サンプル含まれる場合は平均値)\[G]</code><br><code>0x101,103: 入力IOのビットマップ(val\_dioの下位８ビットと同値)</code></p> |
| `value1`      | REAL                                    | <p>計測値 (パケット種別によって定義が異なります)<br><code>pkt\_type-></code><br><code>2,6: 湿度\[%]</code><br><code>1: 未使用</code><br><code>3,5: Y軸加速度(パケット中に複数サンプル含まれる場合は平均値)\[G]</code><br><code>0x101: ADC1\[V] ,103: 未使用</code></p>                                           |
| `value2`      | REAL                                    | <p>計測値 (パケット種別によって定義が異なります)<br><code>pkt\_type-></code><br><code>2: 照度\[lx], 6: 未使用</code><br><code>1: 未使用</code><br><code>3,5: Z軸加速度(パケット中に複数サンプル含まれる場合は平均値)\[G]</code><br><code>0x101: ADC2\[V], 103: 未使用</code></p>                                    |
| `value3`      | REAL                                    | <p>計測値 (パケット種別によって定義が異なります)<br><code>pkt\_type-></code><br><code>2: 未使用, 6: 未使用</code><br><code>1: 未使用</code><br><code>3,5: 未使用</code><br><code>0x101: ADC3\[V], 103: 未使用</code></p>                                                                      |
| `val_vcc_mv`  | INTEGER                                 | 電圧\[mV]                                                                                                                                                                                                                                                   |
| `val_dio`     | <p>INTEGER<br><code>int32\_t</code></p> | <p>b0..b7: DI1..DI8の値 (1はLO, 0はHIGHレベル)<br>b24..b25: マグネット値 (b28が1の場合), 00->磁石なし, 01->N極, 10->S極<br>b28: 1の場合マグネットデータがb24..b25に格納される<br>b31: 定期送信ビット(マグネットのみ)</p>                                                                                         |
| `val_adc1_mv` | INTEGER                                 | `pkt_type`->1,2,3,0x101: ADC1の計測値                                                                                                                                                                                                                         |
| `val_adc2_mv` | INTEGER                                 | `pkt_type`->0x101: ADC4の計測値                                                                                                                                                                                                                               |
| `val_aux`     | INTEGER                                 | その他データ格納目的                                                                                                                                                                                                                                                |
| `ev_src`      | INTEGER                                 | イベント発生元                                                                                                                                                                                                                                                   |
| `ev_id`       | INTEGER                                 | <p>イベントID<br><code>pal\_type</code>->5: 1...6→サイコロ 16→MOVE ... 他(TWELITE CUE の資料参照)</p>                                                                                                                                                                   |
| `ev_param`    | INTEGER                                 | イベントパラメータ                                                                                                                                                                                                                                                 |

#### sensor\_node

センサーノードにテキストメモ（付加情報）を格納する目的で利用する。

| カラム名       | 型            | 解説                              |
| ---------- | ------------ | ------------------------------- |
| `sid`      | INTEGER      | 上述のSID                          |
| `sid_text` | TEXT         | SIDを１６進数文字列に変換したもの（可読性のため）      |
| `desc`     | TEXT (UTF-8) | SIDに対応するメモ（補助情報）で、一覧などで一緒に表示する。 |

#### sensor\_last

最後に受信したタイムスタンプを管理する目的で使用する。

| カラム名         | 型       | 解説               |
| ------------ | ------- | ---------------- |
| `sid`        | INTEGER | 上述のSID           |
| `ts`         | INTEGER | 最後の受信時のタイムスタンプ   |
| `lid`        |         | 以下、最後に受信時のデータの抜粋 |
| `lqi`        |         |                  |
| `pkt_type`   |         |                  |
| `value`      |         |                  |
| `value1`     |         |                  |
| `value2`     |         |                  |
| `value3`     |         |                  |
| `val_vcc_mw` |         |                  |
| `val_dio`    |         |                  |
| `ev_id`      |         |                  |


# 簡易モニタ

簡易モニタ

* [CUEビューア](/usage/screens/main_menu/viewer/smpl_mon/cue_viewer) : TWELITE CUE からのパケットを解釈して簡易表示する
* [ARIAビューア](/usage/screens/main_menu/viewer/smpl_mon/aria_viewer) : TWELITE ARIA からのパケットを解釈して簡易表示する
* [Glancer](/usage/screens/main_menu/viewer/smpl_mon/glancer) : TWELITE の多くの形式に対応した簡易モニタ


# CUE ビューア

CUE ビューア

`Windows` `macOS` `Linux` `RasPi`

[TWELITE CUE](https://mono-wireless.com/cue)の通知メッセージを解釈します。

{% hint style="info" %}
本解説中は旧バージョンのキャプチャ画像です。
{% endhint %}

## TWELITE CUE

![画面例：面の検出](/files/9qCe0kCk094pC6BcPj0t)

TWELITE CUEのデフォルト設定(CUEモード)は、コイン電池でも動作できるスリープを用いた間欠駆動をしながら、いくつかの要因により起床し、様々なデータを送信します。

{% hint style="info" %}
CUEモードはTWELITE CUEの動作を確認できるようにするため、搭載するセンサーやLEDのすべてを動作させます。
{% endhint %}

#### 起床要因

* タイマーの起床（設定値による定期起床）
* 加速度の検出による起床
* 磁気センサーによる起床（磁石が近づいたことを検出した場合）

#### 送信データ

* 検出イベント（後述）
* モジュール電源電圧
* 磁気センサーの検出値
* 加速度データ

### パケット

パケットの基本情報を表示します。

| 項目    | 解説                                                                                                                               |
| ----- | -------------------------------------------------------------------------------------------------------------------------------- |
| #???? | これまでの受信パケット数です。                                                                                                                  |
| 種別    | [`E_PKT`](https://mwm5.twelite.info/references/parser/twefmt/twepacket/e_pkt)の値で、パケット種別です。TWELITE CUEからのパケットは通常PKT\_PAL=02になります。 |
| ID    | 送信元の論理IDです。通常は0..100の値になります。                                                                                                     |
| AD    | 送信元のシリアル番号です。                                                                                                                    |
| LQ    | LQI、電波強度に対応する値です。                                                                                                                |
| SQ    | パケットの続き番号です。                                                                                                                     |

### イベント

TWELITE CUEのデフォルトでは、必ず加速度イベントを出力します。起床要因に関わらず、起床後には一定サンプル数の加速度計測を行います。この加速度の計測結果に応じてイベントを送信します。

| 検出イベント | 番号                 | 解説                                                                                                                                                   |
| ------ | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| ダイス    | 1(0x00) .. 6(0x06) | 定期起床と磁気センサー検出起床を起点に判定します。起床後に大きな加速度が検出される場合は、判定不可としたイベント(0xFF)を検出する場合があります。                                                                          |
| ムーブ    | 16(0x10)           | 加速度センサーが一定の基準を超えた加速度を検出して起床したときに、ムーブまたはシェイクのイベントが発生します。ムーブは、計測した加速度の変化が比較的小さい場合に発生します（加速度の変化は検出したが、連続的な加速度の変化がなかった場合に発生します）。                         |
| シェイク   | 8(0x08)            | 加速度センサーが一定以上の加速度を検出して起床したときに、ムーブまたはシェイクのイベントが発生します。シェイクは、計測した加速度の変化が比較的大きい場合に発生します。（加速度の変化は検出し、連続的な加速度の変化が検出できた場合に発生します。シェイクの名前の通り、本体を振り続けたときに発生します） |

{% hint style="info" %}
加速度により起床の検出閾値・イベントの検出条件について、定量的な定義は案内しておりません。
{% endhint %}

### 電圧

モジュールの電源電圧\[mV]です。

### 磁石

検出された磁石の極または未検出を表示します。

{% hint style="info" %}
磁気センサーの検出による起床かどうかを表示する機能はありません。
{% endhint %}

### 加速度

起床後に計測された加速度を表示します。

|       |                                                              |
| ----- | ------------------------------------------------------------ |
| サンプル  | 加速度のサンプル数を表示しています。10サンプル固定です。                                |
| レートID | 加速度のサンプルレートです。04固定で100Hzです。                                  |
| X,Y,Z | ３つの軸の加速度です。８サンプル分の平均値として求めています。単位はミリG (1000mG=1G=9.8m/s2)です。 |

## 画面例

![画面例：ムーブ（加速度の検出）](/files/zyIxnZjJW1Qgei8pLN2z)

![画面例：シェイク（振り続けた）](/files/YXvhZNLlWGxrtxAjfoNG)


# ARIA ビューア

ARIA ビューア

`Windows` `macOS` `Linux` `RasPi`

[TWELITE ARIA](https://mono-wireless.com/jp/products/twelite-aria/index.html)の通知メッセージを解釈します。

{% hint style="info" %}
本解説中は旧バージョンのキャプチャ画像です。
{% endhint %}

## TWELITE ARIA

![画面例：温湿度表](/files/DemgrbggXyFo1inYTGUf)

TWELITE ARIAのデフォルト設定(ARIAモード)は、コイン電池でも動作できるスリープを用いた間欠駆動をしながら、いくつかの要因により起床し、起床後様々な情報を送信しいます。

#### 起床要因

* タイマーの起床（設定値による定期起床）
* 磁気センサーによる起床（磁石が近づいたことを検出した場合）

#### 送信データ

* モジュール電源電圧
* 磁気センサーの検出値
* 温湿度データ

### パケット

パケットの基本情報を表示します。

| 項目    | 解説                                                                                                                                |
| ----- | --------------------------------------------------------------------------------------------------------------------------------- |
| #???? | これまでの受信パケット数です。                                                                                                                   |
| 種別    | [`E_PKT`](https://mwm5.twelite.info/references/parser/twefmt/twepacket/e_pkt)の値で、パケット種別です。TWELITE ARIAからのパケットは通常PKT\_PAL=02になります。 |
| ID    | 送信元の論理IDです。通常は0..100の値になります。                                                                                                      |
| AD    | 送信元のシリアル番号です。                                                                                                                     |
| LQ    | LQI、電波強度に対応する値です。                                                                                                                 |
| SQ    | パケットの続き番号です。                                                                                                                      |

### データ表

TWELITE ARIAから受信した過去9回分のデータの履歴を表示します。上にあるほど新しいデータです。

#### 時間(s)

TWELITE STAGE APPが起動してからデータを受信するまでの時間\[秒]です。

#### ID

モジュールの論理デバイスIDです。

#### VCC(mV)

モジュールの電源電圧\[mV]です。

#### 温度(C)

モジュールが計測した温度(℃)です。

#### 湿度(%)

モジュールが計測した湿度(％)です。

#### 磁石

検出された磁石の極または未検出を表示します。

{% hint style="info" %}
磁気センサーの検出による起床かどうかを表示する機能はありません。
{% endhint %}


# グランサー

CUE/ARIA ビューア

`Windows` `macOS` `Linux` `RasPi`

Glancerは、[受信メッセージ中の情報](https://wings.twelite.info/how-to-use/parent-mode/receive-message)を簡易的に表示します。接続する TWELITE には App\_Wings を書き込んでおき、通信相手のTWELITE (App\_Twelite, TWELITE PAL, ... アプリケーションIDとチャネルを一致させれば混在も可) からの情報を表示します。

{% hint style="info" %}
Glancer は、glance（＝ちらりと見る、一瞥）する人という意味の英単語です。
{% endhint %}

画面は以下の２種類の構成になっています。

####

#### 一覧表示

![](/files/zXejDBVdoXlEOIvyDn8Z)

通信相手からの情報を列挙します。表示内容は（メッセージの種別、論理ID、シリアルID、LQI(Lq)、電源電圧(情報に含まれていれば)、受信時間）です。

| 操作         |                                      |
| ---------- | ------------------------------------ |
| \[ A ]     | リストの前項目に移動します。                       |
| \[ A ] 長押し | この画面を抜け、前メニューに戻ります。                  |
| \[ B ]     | 選択表示に移行します。                          |
| \[ B ] 長押し | 項目をソートします。ソートを実行するたびに、ソートキーは順に変わります。 |
| \[ C ]     | リストの次項目に移動します。                       |
| \[ C ] 長押し | TWELITE のリセットピンを制御し、リセットします。         |
| ESC        | ESCキーを入力することで、この画面を抜けます。             |

#### 選択表示

![](/files/Bn7oYn6L4YdKuWxA2tDE)

一覧表示で項目を移動し反転表示になったところで選択操作を行うことで、この画面に遷移します。特定の通信相手に関する情報を到着順に表示します。

選択されてからの受信パケット数と LQI の平均値が表示されます。

| 操作         |                              |
| ---------- | ---------------------------- |
| \[ A ]     | 割当なし                         |
| \[ A ] 長押し | この画面を抜け、選択画面に戻る。             |
| \[ B ]     | 割当なし                         |
| \[ B ] 長押し | 割当なし                         |
| \[ C ]     | 割当なし                         |
| \[ C ] 長押し | TWELITE のリセットピンを制御し、リセットします。 |
| ESC        | この画面を抜け、選択画面に戻る。             |


# コマンダー

コマンダー

`Windows` `macOS` `Linux` `RasPi`

コマンダーは、TWELITE にシリアルメッセージを送付するものです。コマンダーの最初の画面は留意事項について記載しています。

画面上部にはテキストで表現されたタブがあり、これをマウスでクリックすることでタブ中の画面に移動します。

| 操作         |                              |
| ---------- | ---------------------------- |
| \[ A ]     | タブの移動（左）                     |
| \[ A ] 長押し | この画面を抜けて、選択画面に戻ります。          |
| \[ B ]     | 割当なし                         |
| \[ B ] 長押し | 割当なし                         |
| \[ C ]     | タブの移動（右）                     |
| \[ C ] 長押し | TWELITE のリセットピンを制御し、リセットします。 |
| ESC        | この画面を抜けて、選択画面に戻ります。          |

#### タブ：TWELITE

この画面では、 [App\_Twelite(標準アプリ)](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/) の [0x80 コマンド](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/step3-80.html)を生成し、送信します。接続する TWELITE には App\_Twelite または App\_Wings を書き込んでおき、アプリケーションID・チャネルを設定した上で、通信相手からメッセージが受信されていることを確認します。

![](/files/pjbAfNDUkKtIdOPwznbX)

| 項目       | 内容                                                                                                                                        |
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| 宛先       | 送信先の TWELITE を指定します。自身が子機の場合は「親機:0」宛を指定してください。自身が親機の場合は「全子機＝0x78」または特定の子機ID(1..8まで指定可能)を指定します。                                            |
| DI1..DI4 | DI1からDI4までの設定状態です。■は選択（LOW=GNDレベル）、□は(HIGH=VCCレベル)を意味します。下項目のSELを指定してください。                                                                |
| SEL      | 各DIの選択ビット（0ならDIの指定を無視し、1なら指定を有効化）                                                                                                         |
| PWM1..4  | PWMのデューティ比を設定します。0はGNDレベル相当、1024(100%)はVCCレベル相当です。N.A.にしたPWMポートは変更しません。※ TWESTAGE基板のPWM1のLEDはVCCからの吸い込みとなっているため、0で最も明るく点灯し、100%では消灯となります。 |

各項目を変更するたびにコマンドが生成されます。送信ボタンを押すと、現在の設定のコマンドを再度送信します。

#### タブ:NOTICE

この画面では、[通知PAL(NOTICE PAL)](https://mono-wireless.com/jp/products/twelite-pal/sense/notice-pal.html) の [LED制御用のコマンド](https://wings.twelite.info/how-to-use/parent-mode/transemit-command/0x90-command) を生成します。接続する TWELITE には App\_Wings を書き込んでおき、アプリケーションID・チャネルを設定した上で、通信相手からメッセージが受信されていることを確認します。

![](/files/FPCF2pf4nQrByyEGBRZP)

| 項目    | 内容                                                  |
| ----- | --------------------------------------------------- |
| 子機ID  | 送信先の TWELITE PAL のIDを指定します。値の範囲は 1..8 です。           |
| 色     | 点灯色を７色から指定します。白は２種類ありますが、１つはRGBの混色で１つは白色LED単体の点灯です。 |
| 明るさ   | 0..15で指定します。0は消灯です。                                 |
| 点灯点滅  | 点灯または点滅パターンを選択します。                                  |
| 点灯時間  | コマンド発行後、一定時間経過すると自動的に消灯する機能です。                      |
| 消灯ボタン | 消灯メッセージを生成します。                                      |
| 点灯ボタン | 現在の設定を送信します。                                        |

各項目を変更するたびにコマンドが生成されます。点灯ボタンを押すと、現在の設定のコマンドを再度送信します。

#### 画面下部の表示

画面下部には、コマンドが生成されたタイムスタンプと `:`で始まるコマンドが表示されます。クリップボードにはこの画面の内容がコピーされます。


# アプリ書換

アプリ書換

`Windows` `macOS` `Linux` `RasPi`

TWELITE のアプリ（ファームウェア）を書き込みます。

* ビルド済みの.BINファイルを書き込む
* アクト(Act)などソースファイルからビルドして書き込む

ソースファイルのビルド、ターミナル切断、書き込みユーティリティ起動、ターミナル接続といった煩雑さを解消します。

* TWELITE BLUE/REDを自動認識する
* 書き込み終了後にリセットしてインタラクティブモード、またはターミナルに移動する
* 各プロジェクトのリストから、プロジェクトフォルダまたはVSCodeを起動する (Raspberry Pi版を除く)
* 各プロジェクトのリストから、関連情報のウェブページを開く \Linux版、Raspberry Pi版を除く)


# BINから選択

BINから選択

`Windows` `macOS` `Linux` `RasPi`

ビルド済みのアプリ(.BINファイル)を書き込みます。

![選択画面](/files/rTSAcf5YUHKM8vL4zHLG)

メニューを選択すると、ファイル一覧が表示されます。書き込みたいファームウェアを選択してください。

メニュー選択前に、書き込みむBINファイルを以下に格納しておきます。

| プラットフォーム                            | 場所                |
| ----------------------------------- | ----------------- |
| Windows, macOS, Linux, Raspberry Pi | {MWSTAGEフォルダ}/BIN |

BINフォルダにはTWELITE STAGEでビルドした .BIN ファイル（各プロジェクトのbuildフォルダ以下に格納）を、ファイル名を変更せず格納しておきます。

```
../BIN/App_Wings_MONOSTICK_BLUE_L1304_V1-1-3.bin
       App_Wings_MONOSTICK_RED_L1304_V1-1-3.bin
       App_Twelite_BLUE_L1304_V1-9-1.bin
       App_Twelite_RED_L1304_V1-9-1.bin
       ...
```

{% hint style="warning" %}
ファイル名によりBLUE/REDの識別を行っています。
{% endhint %}


# Actビルド＆書換

Actビルド＆書換

`Windows` `macOS` `Linux` `RasPi`

アクト(Act)のビルドと書き換えを行います。

{% hint style="success" %}
アクト(Act)の記述の参考となる小規模なソースコードが中心です。
{% endhint %}

![選択画面](/files/g6nBhABxojJc4PCLKYcY)

この画面を開くと、プロジェクト一覧が表示されます。書き込みたいプロジェクトを選択すると、ビルド～書き込みを行います。書き込み終了後に`Enter`または`[ B ]`ボタンを押すことで、TWELITE をリセットし、インタラクティブモード画面（またはターミナル画面、要設定）に遷移します。

[ビルド～書き込み画面](/usage/screens/main_menu/firm_prog/build_screen)

VSCodeを利用する設定（アプリ書換＞codeでフォルダを開く）になっている場合は、ビルドは行わず`build/`以下の[BINファイルを書き込む画面](/usage/screens/main_menu/firm_prog/bin)を開きます。

### フォルダ

ビルド対象のプロジェクトは以下のパスに配置しています。

```
{MWSTAGEインストールフォルダ}/MWSTAGE/Act_samples
```

### 操作

| 操作                             |                                                            |
| ------------------------------ | ---------------------------------------------------------- |
| \[ A ]                         | メニュー選択 ↑                                                   |
| \[ A ] 長押し                     | この画面を抜けて、前のメニューに戻ります。                                      |
| \[ B ]                         | 選択                                                         |
| \[ B ] 長押し                     | 関連ウェブサイト（プロジェクトフォルダの`000desc.txt`に登録がある場合）をOS標準のブラウザで開きます。 |
| \[ C ]                         | メニュー選択 ↓                                                   |
| \[ C ] 長押し                     | フォルダ（プロジェクト、関連フォルダ）を開きます。設定メニューでVS Codeで開くように設定できます。       |
| ESC                            | この画面を終了し、書換メニューに戻ります。                                      |
| マウスクリック \[ﾍﾙﾌﾟ]                | 関連ウェブサイトを開きます。                                             |
| マウスクリック \[ﾌｫﾙﾀﾞ] または \[VSCode] | 関連フォルダを開きます。                                               |
| マウスクリック \[▽] または \[△]          | 次ページ、前ページに移動します。                                           |




---

[Next Page](/llms-full.txt/1)

