MemoryEnhancer > UDPの受信処理を行い、"***"と"+++"を交互にbanner表示する | banner:指定の文字すべてを表示してくれない | banner:改行付きの表示

```txt:動作環境
Raspberry Pi 2 Model B (以下RPi)
  - Raspbian Jessie
Ubuntu 16.04 LTS desktop amd64
```

### 処理概要

- UDP通信を受信する
    - Port:7000
    - コマンド: trig
- コマンド受信時に文字列を表示する
    - banner表示
    - `***`と`+++`を交互に表示

### 参考

- [Python2 > UDP > コマンド応答処理 > udpResponder_171222 > v0.1](https://qiita.com/7of9/items/a6a783f8b5d06e89e502)
- [linux > udpで "TEST2" を送信する > echo "TEST2" | nc -u 192.168.10.6 6000](https://qiita.com/7of9/items/fc97f966ac51b8a15d66)

### code 

```udpTrigger_180117.py
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import socket as skt
import subprocess as sb
import sys

'''
v0.1 Jan. 18, 2018
  - show [***] and [+++] alternatively
  - check incoming command [trig]
'''

# on Python 2.7.12 (Ubuntu 16.04 LTS)
# on Python 2.7.9 (Raspbian)

RECV_TIMEOUT_MSEC = 300

def udpTrigger(port_in):
    inst = skt.socket(skt.AF_INET, skt.SOCK_DGRAM)
    inst.bind(('', port_in))
    inst.setblocking(0)
    updateText = True
    txt1 = "***"
    txt2 = "+++"

    while True:
        if updateText:
            updateText = False
            cmd = "banner " + txt1
            txt1, txt2 = txt2, txt1
            os_cmd = sb.call(cmd.split())
        try:
            data, adr = inst.recvfrom(RECV_TIMEOUT_MSEC)
        except skt.error:
            pass
        else:
        	if "trig" in data:
        		updateText = True
        		

udpTrigger(7000)
```

## 動作環境

- RPi: UDP送信側
- Ubuntu: UDP受信側
    - udpTrigger_180117.pyを起動しておく

## 動作結果

### RPi側

```bash
pi@raspberrypi ~ $ echo "trig" | nc -u 192.168.0.9 7000
^C
pi@raspberrypi ~ $ echo "trig" | nc -u 192.168.0.9 7000
^C
pi@raspberrypi ~ $ echo "trig" | nc -u 192.168.0.9 7000
^C
pi@raspberrypi ~ $ 
```

### Ubuntu側

```bash
$ python2 udpTrigger_180117.py 

 #   #   #   #   #   #
  # #     # #     # #
### ### ### ### ### ###
  # #     # #     # #
 #   #   #   #   #   #



   #       #       #
   #       #       #
 #####   #####   #####
   #       #       #
   #       #       #



 #   #   #   #   #   #
  # #     # #     # #
### ### ### ### ### ###
  # #     # #     # #
 #   #   #   #   #   #



   #       #       #
   #       #       #
 #####   #####   #####
   #       #       #
   #       #       #
```

### Bannerを使う意図

[27インチモニタでRPiを表示すると](https://qiita.com/7of9/items/6427552acad5169a7431)、通常のテキストが小さすぎて読めない。
以下のような使い方をするため、bannerを試してみた。

- ESP8266を搭載したグローブ(+加速度センサ搭載）の動きを検知し、UDPコマンドを送信する
    - グローブを動かした: High
    - グローブを動かさない: Low
- RPi側でUDPコマンドに応じて、英語フレーズの表示を更新する
    - 英語の復習ツールとして(記憶のEnhancer)

### Bannerコマンドの制限?

```bash
$ banner "AAA BBB CCC DDD"
   #       #       #            ######  ######  ######           #####   #####
  # #     # #     # #           #     # #     # #     #         #     # #     #
 #   #   #   #   #   #          #     # #     # #     #         #       #
#     # #     # #     #         ######  ######  ######          #       #
####### ####### #######         #     # #     # #     #         #       #
#     # #     # #     #         #     # #     # #     #         #     # #     #
#     # #     # #     #         ######  ######  ######           #####   #####
```

指定の文字が全部表示されないようだ。
UbuntuとRPiで同じ結果になった。

[bannerの`-w`オプションも使えない。](https://qiita.com/7of9/items/deb6c29224ad08c17a0a)

二重引用符の文字列を適度に区切れば、文字が改行付きで表示されるようだ。

```bash
$ banner "Verify tha" "t the guar" "ded area i" "s clear of" "personnel and"
#     #
#     #  ######  #####      #    ######   #   #           #####  #    #    ##
#     #  #       #    #     #    #         # #              #    #    #   #  #
#     #  #####   #    #     #    #####      #               #    ######  #    #
 #   #   #       #####      #    #          #               #    #    #  ######
  # #    #       #   #      #    #          #               #    #    #  #    #
   #     ######  #    #     #    #          #               #    #    #  #    #


  #####           #####  #    #  ######           ####   #    #    ##    #####
    #               #    #    #  #               #    #  #    #   #  #   #    #
    #               #    ######  #####           #       #    #  #    #  #    #
    #               #    #    #  #               #  ###  #    #  ######  #####
    #               #    #    #  #               #    #  #    #  #    #  #   #
    #               #    #    #  ######           ####    ####   #    #  #    #


 #####   ######  #####             ##    #####   ######    ##               #
 #    #  #       #    #           #  #   #    #  #        #  #              #
 #    #  #####   #    #          #    #  #    #  #####   #    #             #
 #    #  #       #    #          ######  #####   #       ######             #
 #    #  #       #    #          #    #  #   #   #       #    #             #
 #####   ######  #####           #    #  #    #  ######  #    #             #


  ####            ####   #       ######    ##    #####            ####   ######
 #               #    #  #       #        #  #   #    #          #    #  #
  ####           #       #       #####   #    #  #    #          #    #  #####
      #          #       #       #       ######  #####           #    #  #
 #    #          #    #  #       #       #    #  #   #           #    #  #
  ####            ####   ######  ######  #    #  #    #           ####   #


 #####   ######  #####    ####    ####   #    #  #    #  ######  #
 #    #  #       #    #  #       #    #  ##   #  ##   #  #       #
 #    #  #####   #    #   ####   #    #  # #  #  # #  #  #####   #
 #####   #       #####        #  #    #  #  # #  #  # #  #       #
 #       #       #   #   #    #  #    #  #   ##  #   ##  #       #
 #       ######  #    #   ####    ####   #    #  #    #  ######  ######
```