2013/09/22

[nfcpy]ちょっと不明なところがあったが、書いていくうちにわかった

nfcpyを見ると、rcs380.pyというファイルが増えていた。
まあ、ダウンロードした理由はそこにあるのだが。

pythonに詳しくないのだが、なんか実装で不明なところがあった。
Frameクラスのinitで、引数を見て判断しているところがある。
たぶん、受信したフレームデータの1次解析みたいなことをしてるんだろう。

data[0:3]が、00 00 ffかどうかを見ている。
pythonでは「名前[start:end]」だと、その範囲はstart~end-1らしい。
なので、フレームの先頭3byteが00 00 ffかどうかを判定しているのだろう。
それはいい。
「00 00 ff」で始まっていたら、そのデータによって、ACKかERRかDATAかを分けている。

分けているのだけど、こんな感じになってるようなのだ。

ACK  : 00 00 ff 00 ff 00
ERR  : 00 00 ff ff ff
DATA :       ff ff

最後にelseがないから、これ以外だったらどうするんだよってのはあるとして、ERRとDATAの見方がおかしいと思うのだ。
実装としては、ERRは「00 00 ff ff ff」と一致する場合、DATAはdata[3:5]が「ff ff」と一致する場合・・・

と書いていて、ようやくわかった。
ERRになるのは受信データがちょうど「00 00 ff ff ff」だった場合で、DATAとするのは「00 00 ff ff ff ・・・」とさらに値が続いていた場合ということなんだな。

 

い、いや、RC-S380はコマンド調べるつもりはないからね。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。