プロが教える店舗&オフィスのセキュリティ対策術

現在装置を外部PCから操作させる設定の一覧を作成しています。

メーカーからの指定は、設定したい数値を(16進数)
40 NN NN NN CRC 
をASCIIコードで入力するように指定されています。

例えば、50に設定したい場合は
@050* (40 30 35 30 2A)
と入力します。

ここで、CRCがASCIIの制御文字(00~1F)に該当してしまう場合、どのように
CRCを設定するか分からずにいます。

このような場合は、どのような設定をするものなのでしょうか?

A 回答 (2件)

補足が付きましたのでもう少し。



補足のような仕様だとするならば、
CRCを入力する必要が無いです。

そもそもCRCはチェックサムですから、それを入力したらCRCの意味がありません。
(CRCを入力間違えしたらおしまいですから)

通常は以下のように
入力は@099とだけ入力し、PC内で入力からCRCを計算します。
入力にCRCを付加して5バイトのデータ(0x40,0x30,0x39,0x39,0x1D)として
装置に転送すればよいだけだと思います。

受信側では同様に受信データを4バイト分加算しNOTして、
受信したCRCと計算したCRCが合致するかチェックします。
    • good
    • 0
この回答へのお礼

返信が遅くなり申し訳ございません。

本日は装置を触ることができないので、明日に早速試してみたいと思います。
とても助かります。
ありがとうございました。

お礼日時:2011/10/31 09:53

質問者様の文だけではメーカからの意図がはっきりしませんが


ASCIIコードで入力しろといっているので

403035302A
で良いのじゃないの?

@050*
だとASCII文字になっちゃうけど?

この回答への補足

説明不足ですみません。
コードと文字が混同していました。
文字で入力するように指定されています。

ですので、50を入力したい場合、16進数で書きますと
40←メーカー指定の数字
30←0
35←5
30←0
2A←CRC

となり、ASCII文字の@050*を入力するようになっております。

また、CRCの計算は@505の部分の和を2進数に直し、bitを反転した物になります。
このCRCの部分が、例えば99を入力させたいとなると
「40 30 39 39 1D」となり
この1DがASCII文字ではグループ区切りで文字で表すことができないので、一般的には
どのようにしているのか知りたく、質問させて頂きました。

以上、よろしくお願いいたします。

補足日時:2011/10/28 18:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!