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の簡単なフォーマッタとして、下記のように定義することができます。
データフォーマッタは、受信データ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コマンドの処理は、即時に終了したようにも見えますが、コネクタが維持されたままになっており、''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 関数に送って結果を表示します。