/MLDP-Terminal

開発記録用

Primary LanguageSwift

MLDP-Terminal

Microchip社のRN4020 Bluetooth Low Energy Moduleを通じてiPhone上で動作するターミナルエミュレータ.
通信にはMLDP(Microchip Low Energy Data Profile)を使用する.

RN4020 初期化

TeC7b(Tokuyama Educational Computer Ver.7b)に搭載されたRN4020は,ボード上のジャンパを二本横差しすることで工場出荷時までリセットすることができる.

RN4020 初期設定

  1. Macにシリアル通信ソフトCoolTermをインストールする.(screenコマンドでも可能)
  2. TeC7bのジャンパをDEMO1に設定し,MacとUSBケーブルで接続する.
  3. CoolTermを起動し,以下のように設定する.
  [options] → [Serial Port] → [Port] → TeC7bを接続しているUSB Serialポートを選択
  [options] → [Terminal] → [Enter Key Emulation] → CRを選択  
  
  ※ TeC7bのファームウェアが最新版(2018/12/1時点)でない場合はさらに
      [options] → [Serial Port] → [Baudrate] → 11520を選択
    の設定が必要になる.
  1. CoolTermに'+'とEnterキーを入力する.Echo Onと出力されれば,接続成功.
  2. CoolTermに以下のコマンドを打ち込む.
  SF,2           // 工場出荷状態までリセット
  SR,32104C00    // RN4020起動時に自動アドバタイズおよびMLDPモードとして動作するように設定
  R,1            // 再起動
  
  ※ TeC7bのファームウェアが最新版(2018/12/1時点)でない場合は再起動の前に
      SB,1       // ボーレートを9600に設定
    を実行する.

※ RN4020が正常に動作していればSF,SRに対してAOKと返ってくる. R,1の実行後,CMDが表示されると設定が終了する.

使い方

TeC7bに搭載されているTacOSのターミナルとして使用する. また,FreeBSDなどCUIのOSとTeC7bを接続,設定することで各OSのターミナルとしても使用できる.前回接続したBluetoothモジュールには自動で接続することができる.

画面説明

メイン画面

Bluetoothとの通信開始や切断,文字の送受信を行う画面.

 ⁝      … メニューボタン. ボタンとデバイス名表示を切り替える.
del     … 記憶デバイス消去ボタン. 自動接続するBluetoothの情報をリセットする.
discon  … 通信切断ボタン. 現在の通信を終了する.
scan    … スキャンボタン. 周囲の接続可能なモジュールをスキャンする. 選択画面に遷移する.

Connection … 接続中のデバイス名が表示される.

選択画面

接続するBluetoothモジュールを選択する画面. 検出されたBluetoothモジュールの名前が一覧で表示される.
ここで選択したBluetoothモジュールに次回以降は自動で接続するようになる.

cancel  … キャンセルボタン. メイン画面に遷移する.

使用可能なエスケープシーケンス

記法 内容
\e[nA カーソルを上にn移動
\e[nB カーソルを下にn移動
\e[nC カーソルを右にn移動
\e[nD カーソルを左にn移動
\e[nE カーソルをn行下の先頭に移動
\e[nF カーソルをn行上の先頭に移動
\e[nG 現在位置と関係なくカーソルを左からnの場所に移動
\e[n;mH
\e[n;mf
現在位置と関係なくカーソルを上からn,左からmの場所に移動
\e[nH 画面消去
0 … カーソルより後ろを消去
1 … カーソルより前を消去
2 … 画面全体を消去
\e[nK 行消去
0 … カーソルより後ろを消去
1 … カーソルより前を消去
2 … 行全体を消去
\e[nm 文字色を変更
30 … 黒
31 … 赤
32 … 緑
33 … 黄
34 … 青
35 … マゼンタ
36 … シアン
37 … 白

TERMCAP設定

 tec7b-term:\
     :do=2\E[B:cl=50\E[H\E[J:\
     :le=2\E[D:bs:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\
     :ce=3\E[K:cd=50\E[J:\:nw=2\E[E:ho=E[H:\
     :UP=2\E[%DA:DO=2\E[%dB:RI=2\E[%dC:\
     :LE=2\E[%dD:cr=\E[G:\
     :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyuzz{{||:\
     :ku=\EOA:kd=\EOB:kr=EOC:kl=\EOD:kb=\177:\
     :k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOt:\
     :k6=\EOu:k7=\EOv:k8=\E0l:k9=\EOw:k;=\EOx:@8=\EOM:\
     :K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:pt:xn:\

※ FreeBSD 11.2-RELEASE での動作確認時の設定

ttys設定

 ttyU0   "/usr/libexec/getty 3wire.9600" tec7b-term   on secure

※ FreeBSD 11.2-RELEASE での動作確認時の設定

開発環境

macOS Mojave(10.14.1)
iOS 12.1.2 Xcode 10.1
CoolTerm 1.5.0
Swift 4.2.1