rtcmd:print
Simple Wiki Based Contents Management System
ソフトウェア関連 >> rtcmd >> rtcmd:print

print:指定した出ポートからデータを受信して表示

書式

print [オプション] Port[#formatter]

オプション

'-c callback'
データリスナー設定時に、データ受信時に処理されるコールバック関数を設定。
'-l'
データリスナーを設定して、バックグラウンドで受信処理を行う。
'-m MODULE'
import MODULE を実行
'-n NUM'
NUM回のデータを読み込むまで繰り返し実行
'-p PATH'
モジュールのサーチパスを追加します。sys.pathに設定したパスが追加されます。
'-r RATE'
実行レートの指定。単位はHz。デフォルトは、1Hz。
'-t TIMEOUT'
TIMEOUTで指定した秒数だけ読込処理を行う。

概要

引数で指定した出力ポートから受信したデータをfomatterで処理をして、コンソールに表示します。
printコマンドは、通常のコンソール入力をブロックするブロックモードと、入力ポートにデータリスナーを設定して、バックグラウンドで受信を行うバックグラウンドモードの2つ実行形態があります。
ブロックモードでは、データポート名の後に#formatterをつけることで、受信データのフォーマッタを指定することができます。
データフォーマッタは、受信データ1つを引数として、文字列を返値とする関数です。例えば、RTC::TimedLongの簡単なフォーマッタとして、下記のように定義することができます。
def timed_str(data):
    import time
    res="-- %s: %s" % (time.ctime(data.tm.sec), data.data)
    return res
また、 '-t'オプション設定時には、データ受信処理をブロックすることなく、 '-r'オプションで設定した周期で読み込み処理を行い、データが未受信の場合には、"== No Data"と表示されます。
printコマンドでは、 '-l'オプションを設定するとバックグラウンドモードで動作します。
バックグラウンドモードでは、printコマンドの処理は、即時に終了したようにも見えますが、コネクタが維持されたままになっており、print_exitコマンドを実行するまで継続します。
また、バックグラウンドモードでも、通常、ブロックモードと同じ出力を行いますが、 '-c'オプションを設定し、コールバック関数を設定すれば、表示する代わりにコールバック関数の呼び出しを行います。なお、コールバック関数も、1つの受信データを引数とした関数になります。
なお、バックグラウンドモードでが動作中に、新たにprintコマンドをバックグラウンドモードで起動の起動はできないようになっています。

使用例

$ rtcmd print %h.host_cxt/ConsoleIn0.rtc:out
ConsoleIn0.rtc の out ポートから最初の値を表示します。
$ rtcmd print  %h.host_cxt/ConsoleIn0.rtc:out -n 5
ConsoleIn0.rtc の out ポートから最初の5個の値を表示します。
$ rtcmd print %h.host_cxt/ConsoleIn0.rtc:out -t 5
ConsoleIn0.rtc の out ポートからの値を5秒間表示します。
$ rtcmd print %h.host_cxt/ConsoleIn0.rtc:out -t 5 -r 10
ConsoleIn0.rtc の out ポートからの値を5秒間、1秒で10回表示しま す。
$ rtcmd print %h.host_cxt/ConsoleIn0.rtc:out#printers.my_formatter
ConsoleIn0.rtc の out ポートの最初の値を printers モジュールの my_formatter 関数に送って結果を表示します。