動作環境
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
- linux > udpで "TEST2" を送信する > echo "TEST2" | nc -u 192.168.10.6 6000
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側
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側
$ python2 udpTrigger_180117.py
# # # # # #
# # # # # #
### ### ### ### ### ###
# # # # # #
# # # # # #
# # #
# # #
##### ##### #####
# # #
# # #
# # # # # #
# # # # # #
### ### ### ### ### ###
# # # # # #
# # # # # #
# # #
# # #
##### ##### #####
# # #
# # #
Bannerを使う意図
27インチモニタでRPiを表示すると、通常のテキストが小さすぎて読めない。
以下のような使い方をするため、bannerを試してみた。
- ESP8266を搭載したグローブ(+加速度センサ搭載)の動きを検知し、UDPコマンドを送信する
- グローブを動かした: High
- グローブを動かさない: Low
- RPi側でUDPコマンドに応じて、英語フレーズの表示を更新する
- 英語の復習ツールとして(記憶のEnhancer)
Bannerコマンドの制限?
$ banner "AAA BBB CCC DDD"
# # # ###### ###### ###### ##### #####
# # # # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # ###### ###### ###### # #
####### ####### ####### # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # ###### ###### ###### ##### #####
指定の文字が全部表示されないようだ。
UbuntuとRPiで同じ結果になった。
二重引用符の文字列を適度に区切れば、文字が改行付きで表示されるようだ。
$ banner "Verify tha" "t the guar" "ded area i" "s clear of" "personnel and"
# #
# # ###### ##### # ###### # # ##### # # ##
# # # # # # # # # # # # # #
# # ##### # # # ##### # # ###### # #
# # # ##### # # # # # # ######
# # # # # # # # # # # # #
# ###### # # # # # # # # # #
##### ##### # # ###### #### # # ## #####
# # # # # # # # # # # # #
# # ###### ##### # # # # # # #
# # # # # # ### # # ###### #####
# # # # # # # # # # # # #
# # # # ###### #### #### # # # #
##### ###### ##### ## ##### ###### ## #
# # # # # # # # # # # # #
# # ##### # # # # # # ##### # # #
# # # # # ###### ##### # ###### #
# # # # # # # # # # # # #
##### ###### ##### # # # # ###### # # #
#### #### # ###### ## ##### #### ######
# # # # # # # # # # # #
#### # # ##### # # # # # # #####
# # # # ###### ##### # # #
# # # # # # # # # # # # #
#### #### ###### ###### # # # # #### #
##### ###### ##### #### #### # # # # ###### #
# # # # # # # # ## # ## # # #
# # ##### # # #### # # # # # # # # ##### #
##### # ##### # # # # # # # # # # #
# # # # # # # # # ## # ## # #
# ###### # # #### #### # # # # ###### ######