2016-10-18 32 views
0

私はLISTENモードでPrologix GPIB-USBアダプタを使用して、2つの機器(半導体関連のテスタとプローバ)間の通信を解読しています。バイナリへのバイト/ビットのデコード

マニュアルに記載されているようにほとんどの情報をデコードできますが、データ、つまりBINカテゴリのいずれかを変換できません。

サンプルデータ:

018022 
[email protected]@@@@@@@ 
Q 
O 
A 
A 
019022 
[email protected]@@@@@@ 

ツールマニュアル:

Manual on How to read Incoming Data

私は@されている "@@@@@@@ @ C" および「CAにinteretsedていたデータ@@@@@@ " 最初のバイト" C "は渡されるコマンドです。 " @ "または" A "の2番目のバイトは、実際にテストが合格/不合格であるかどうかを示します。

バイナリに変換する:結果は0000(パス)と0001(失敗)であるバイトの下位4ビットによって決定される

@ ---> 0100 0000 
A ---> 0100 0001 

。私はここまで正しく解読することができます。

次の8バイトはBINカテゴリを表します。テスト中にテストが失敗した場合は5に設定され、Passの場合は1に設定されるため、 "C @ A @@@@@@@"のBIN番号は1になります。 "CA @ A @@@@@@"に対応するBIN番号は5に設定されています。

GPIBアダプタから生成されたデータから5と1の値をデコードできません。誰かが実際に5と1としてデコードできるかどうかを提案することができますか?私は、入ってくるデータを読み取る方法を説明するマニュアルを添付しています。あなたは数字にバイト値をデコードするstruct.unpackを使用することができます:-(

答えて

0

長い時間のためにこれで立ち往生

。あなたは長さ(この場合は8バイト)と、数が大きいかであるかどうかを知る必要がありますリトルエンディアン(あなたがわからない場合はテストしてください)そして数字が符号付きか符号なしか

文字列が "C @ A @@@@@@@"で、 10、あなたはこれが8バイト長の符号なしビッグエンディアン番号をデコードするでしょう

import struct  
foo="[email protected]@@@@@@@" 
print struct.unpack(">Q", foo[3:11]) 

を試みることができる。を参照してください。手順については、をご覧ください。

これが役に立ちます。

ハンヌ

関連する問題