インターフェースモジュールを介して生の値を提供する工業用センサーがありますtelnet
。
接続するには、次の手順に従ってください。
telnet 169.254.168.150 10001
私はそれからゴミの値だけを見ることができます。
情報
私が持っている情報は、インターフェイスモジュールのデータシートからのものです。
センサーはアナログセンサーなので、Status
フラグは関係ありません。
私は、センサー情報を可視化することができる同社独自のソフトウェアを持っています。このソフトウェアは、上記のTelnetプロトコルを使用して情報を取得します。 WireSharkでクロスチェックしました。パケットサイズは、リトルエンディアンの順序で22バイトです。
私の情報をプログラムで取得することはできません。SEクエリ値を得たいです。渡された値をどこか(データベースまたはファイル)に直接保存できます。
コマンドラインからこの情報を抽出する方法はありますか?
ベストアンサー1
Pastebinから抽出された:
00000050 2e 0a 53 41 45 4d 00 00 00 00 f6 04 00 00 15 00 |..SAEM..........|
00000060 00 00 00 00 00 00 00 00 00 00 0c 00 01 00 fa 94 |................|
00000070 00 00 8c 00 00 00 8c 00 00 00 0a 23 00 00 53 41 |...........#..SA|
00000080 45 4d 00 00 00 00 f6 04 00 00 15 00 00 00 00 00 |EM..............|
したがって、これはすべての情報があり、リトルエンディアンなので、読んで解析するだけでよいことを示しています。あなたに慣れているどんなツールでも、Cプログラム、perl
プログラムなど、あなたが望むすべてを行うことができます。telnet
前の出力をスキップするか、代わりに別の出力を使用する必要があるかもしれませんtelnet
(例えばnc
、、、netcat
)socat
。
デモンストレーションしてperl
パケットをデコードするには、次の操作を行います。
cat ... | perl -nle "print join(':',unpack 'a4 (L2 Q L S2 l4)<')"
ダンプ内のパケットのコマンドラインから出力を取得します。
SAEM:0:1270:21:0:12:1:38138:140:140
これは、指定された数のチャネルに対してのみ機能します。マスクは、4つの測定のうちの1つがあってはならないことを示しますが、値があります。その部分を理解していません。
さまざまな情報に基づいてさまざまな数のチャネルを取得する場合は、よりスマートな解析が必要です。