recvt

Section: WIN SYSTEM (1W)
Updated: 2015.12.28
Index Return to Main Contents
 

名称

recvnmx - Nanometrics UDP/IPパケットの受信  

形式


renvnmx [ -nvB ] [ -c map ] [ -d dir ] [ -i interface ] [ -m group ] [ -s 4|5|5f ] port shmkey shmsize [ logfile ]

 

解説

recvnmx は、自ホストの UDP ポート番号  port に宛てて送られるNanometrics形式の データ(NMXPまたはNPパケット)を受信し、WIN形式に変換してキー  shmkey で与えられる共有メモリ・セグメントに(巡回的に)書き込みます。 現在のところ recvnmx は Compressed Data Packet (Taurus のパケットを含む) のみを処理します。 WIN形式についてはwinformat(1W)を、 共有メモリ上のフォーマットについてはrecvt(1W)を参照してください。 WIN形式の16ビットのチャネル番号は、NMXP/NPパケット中に書かれている Nanometrics機器のシリアル番号とチャネル番号のペアから生成されます (16ビットのうち上位11ビットがシリアル番号を下位5ビットがチャネル番号)。 WIN形式のチャネル番号を任意にマッピングしたい場合はオプション -c を使ってください。 キー  shmkey をもつ共有メモリ・セグメントが存在しない場合は、大きさ  shmsize  (KB) の共有メモリ・セグメントが作られます。すでに存在している場合は、 そのサイズが  shmsize  (KB) よりも小さいとエラーになります。 UDP ポート番号は16ビットの整数値、共有メモリ・キーは32ビットの 整数値です。

ログファイル名  logfile を指定すると、ここに動作ログがとられ、 指定しないとログ情報は標準出力に 送られます。ログファイルは書き込みのたび毎に オープン/クローズされます。

recvnmx は引数なしで起動すると簡単な使用法を表示します。  

オプション

-B
共有メモリの形式を後方サーチ可能な形式にします。この形式については recvt(1W) のオプション -B を参照してください。
-c map
ファイル map でWIN形式のチャネル番号の付け方を指定します。 map のフォーマットは、1行で1台分ずつ、先頭に各Nanometrics機器の シリアル番号を10進数で、その右に空白またはタブで区切ってWIN形式での 先頭チャネル番号を16進数で、それぞれ書いたものです。'#'で始まる行は コメントとみなされます。各行で先頭から2項目だけが読まれ、それより 右は無視されます。Nanometrics機器が複数のチャネルをもつ場合、指定した WIN形式の先頭チャネル番号から始まるチャネル数だけのチャネル番号が 割り当てられます。次の例ではシリアル番号#139の機器のチャネル1〜3に それぞれ 0380,0381,0382 のチャネル番号が振られ、同様にして#141,#142, #143にそれぞれ 0383〜0385,0386〜038B,038C〜0391が割り振られます。
   139 0380  # 3ch
   141 0383  # 3ch
   142 0386  # 6ch
   143 038C  # 6ch
recvnmx は HUPシグナルを受けると、ファイル map を読み直します。
-d dir
半端なデータをディレクトリ dir に一時保存します。 WIN形式のパケットは秒単位ですが、 Nanometrics形式のそれは秒単位ではないため、パケットが正しい順序で 届かなかった場合は、 秒パケットを構成できない1秒未満の長さの半端なデータが残ります。 このオプションを指定すると、この半端なデータを保存しておき、 あとで不足部分を含むパケットが届いた時に、保存しておいたそれを 読み出して正しい秒パケットを構成して出力します。
recvnmx は dir にある使用済の半端なデータのファイルを削除しますが、不足部分が 結局届かなくて使用されなかったファイルは残ります。このような古いファイルを 定期的に削除するためのプログラムに clean_nmx(1W) があります。
-i interface
パケットを受信するネットワークインターフェースを、そのインターフェースの IPアドレス interface で指定します。
-m group
IPマルチキャストアドレス group に対して送信されるパケットを受信します。
-n
NPパケットを受信し、NMXPパケットは無視します。このオプションを 指定しない場合はNMXPパケットを受信し、NPパケットは無視します。 NPパケットとNMXPパケットの両方を受信することはできません。
-v
受信したNMXP/NPパケットの情報を表示します。これはデバッグ用です。
-s mode
書き込みデータのサンプルサイズが 4 バイト の場合のサンプルサイズ情報のモードを指定します。
4 : サンプルサイズ情報を 4 にします。
5 : サンプルサイズ情報を 5 にします。
5f : サンプルサイズが 4 バイト長以外についてもサンプルサイズ情報を 5
     にします。つまり、常に圧縮の無い固定長データとなります。
 

実行例

次の例ではマルチキャストアドレス 224.0.1.1 のUDPポート 32000番へ 送られたNMXPパケットを IPアドレス 10.0.0.100 のネットワーク インターフェースから受信し、共有メモリ 1001番(サイズ 1000KB)に 書き出します。ログファイルは /dat/log/recvnmx.log です。

recvnmx -i 10.0.0.100 -m 224.0.1.1 -c recvnmx.prm 32000 1001 1000 /dat/log/recvnmx.log
 

タイムスタンプについて

recvnmx は NMXPパケットのタイムスタンプ(1970年1月1日00:00:00 UTCからの 秒数)をWIN形式のタイムスタンプ(JSTの年月日時分秒)に変換するのに localtime(3)関数を使っています。その際に通常は閏秒が考慮されませんが、 Nanometrics機器のNMXPパケットのタイムスタンプでも閏秒は考慮されていない (無視されている)ようなので、とりあえず問題ありません。  

シリアル番号について

ファイル map を使ってNanometrics機器のシリアル番号をWIN形式のチャネル番号に対応させる場合、 機種は区別されないことに注意してください。同じシリアル番号をもつ別の機種を 区別しないため、今のところそれらを混在させることはできません。  

ソース

`recvnmx.c'
 

関連事項

clean_nmx(1W), winformat(1W), recvt(1W)


 

Index

名称
形式
解説
オプション
実行例
タイムスタンプについて
シリアル番号について
ソース
関連事項