バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
PyXCPでXCPパケットを投げる準備が整ったことで、
前回は早速CONNECTとGET_STATUSのコマンドを投げて見た。
問題無く動作し、レスポンスも詳細に見れることも確認できた。
引き続きSYNCH等の非メモリアクセス系のコマンドを確認する。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
SYNCH
前回はGET_STATUSコマンドをやったから、
流れとしてはSYNCHだね。
そうだね。
まぁSYNCHは特に何かしてくれるコマンドでは無いが、
エラーハンドリングの際に使用する割と重要なコマンドなので、確認しておいた方が良いだろう。
使用するメソッドはsynchになって、戻り値にレスポンスコードが入ると思う。
これもそのまんまな名前なんだねー。
こんな感じで送ってみよう。
res=xm.synch()
print(res)
結果
bytearray(b'\x00')
この結果の00hが確かERR_CMD_SYNCHって名前の正常応答か。
そうそう。
エラーにカテゴリされた応答ではあるが、
SYNCHとしては正常応答だ。
GET_COMM_MODE_INFO
次はメモリアクセス系になるのかな?
その前にGET_COMM_MODE_INFOコマンドを試してみよう。
GET_COMM_MODE_INFO?
初めて出てきたコマンドなような?
前回のXCP Basicの動作確認ではやっていなかったが、
XCPの通信モードや適用されたXCP仕様Versionが読み出せる。
ほう。
じゃーそれもやってみよう。
メソッドとしてはgetCommModeInfo。
戻り値でレスポンスの情報が見れるはずだ。
はいよー。
CommModeInfo=xm.getCommModeInfo()
print(CommModeInfo)
結果
Container:
commModeOptional = Container:
interleavedMode = False
masterBlockMode = False
maxBs = 0
minSt = 0
queueSize = 0
xcpDriverVersionNumber = 16
GET_COMM_MODE_INFOのレスポンス内訳
なんか知らん単語がいっぱい出てきた気がする。
まぁ今回は使わないパラメータだし、
XCP Basicとしても対応していないから不要な情報ではあるんだよね。
使わないにしても知ってはおきたいかな。
何を示したパラメータになってるの?
まずは転送モードで
今やってる通常のコマンドのやり取りがstandardMode。
それ以外に
複数のコマンド一気に送れるinterleavedMode、
DOWNLOAD_NEXTのようにレスポンスを待たずに連続で通信するmasterBlockMode。
がある。
XCP Basicでは共にFalseで未対応となる。
そして、その下のmaxBsがmasterBlockMode時に連続で送れるフレーム数で
そのフレーム数に到達したら一旦スレーブからレスが返る。
minSTはそのブロック転送時のフレーム間の最小時間だな。
例えば1となっていたら1[ms]以上空ける必要がある。
queueSizeはinterleavedModeで使用するパラメータで、
連続に送って良いコマンド数を示す。
最後のxcpDriverVersionNumberはスレーブ側が使用しているXCP仕様のVersionだな。
上位ニブル(4bit)がメジャーversionで下位ニブル(4bit)がマイナーversionを示す。
ここでは10進数で表記されているが、実際には16進数で見る必要がある。
つまり、今回の場合だと16=10h。
よって、メジャーVersion1、マイナーVersion0のXCP仕様ver1.0を使用していることを示している。
なんか雪崩のように情報が・・・。
まぁさっきも言ったが今回使うパラメータでは無いので、
こういうのがあるってのだけ認識しておけばOKだ。
そうするー。
まとめ
まとめだよ。
- SYNCHコマンドを投げた。
- 想定通りERR_CMD_SYNCHを受け取れた。
- GET_COMM_MODE_INFOコマンドを投げた。
- 今回使用しないがinterleavedMode、masterBlockModeの有無や関連パラメータが返ってくる。
- 上記以外に適用しているXCP仕様Versionも取得可能。
バックナンバーはこちら。
コメント