バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はコンフィグレーションパラメータ(JSON文字列)の作成と読み込み。
そして、そこからのコンフィグレーションオブジェクトの生成。
それを元にしたXCPマスターの生成まで実施した。
このXCPマスター使用してXCPコマンドの送受信ができるはずなので、一個ずつ試していく。
登場人物
博識フクロウのフクさん
イラスト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
CONNECT
XCPコマンドで最初にやるのは当然CONNECTコマンドだね。
そうだね。
XCPマスターにconnectってメソッドがあるから、
それをそのまま呼び出せばCONNECTコマンドが発行されるはずだ。
そして、戻り値がCONNECTコマンドのレスポンスに相当する情報が返ってくる。
じゃー、以下のコードを実行してみよう。
conn = xm.connect()
print(conn)
結果
Container:
resource = Container:
dbg = False
pgm = False
stim = False
daq = True
calpag = False
commModeBasic = Container:
optional = True
slaveBlockMode = False
addressGranularity = (enum) BYTE 0
byteOrder = (enum) INTEL 0
maxCto = 8
maxDto = 8
protocolLayerVersion = 1
transportLayerVersion = 1
お!
予想以上にちゃんとした情報がとれたぞ!
以前CONNECTコマンドをやった時は
CONNECTコマンドに対するレスポンスの明細は説明しなかったが、
サポートしてる機能や、通信方式、MAX_CTO、MAX_DTOを取得できる。
それらを一目で分かる形式で見れるのは良いねー。
GET_STATUS
続けてGET_STATUSコマンドを送ろう。
これもそのまんなメソッドがあるのかな?
そうだね。
getStatusってメソッドが有って、
これも戻り値でレスポンスの詳細が見れる。
じゃ、コードの感じは以下で。
status=xm.getStatus()
print(status)
結果
Container:
sessionStatus = Container:
resume = False
daqRunning = False
clearDaqRequest = False
storeDaqRequest = False
storeCalRequest = False
resourceProtectionStatus = Container:
dbg = False
pgm = False
stim = False
daq = False
calpag = False
sessionConfiguration = 0
これも結構詳細に出てくるねー。
sessionStatusってのは現状のXCPスレーブの状態を示してるのかな?
そうだね。
DAQが起動中なのかを確認するのに使用されることが多い。
あとはCAL_PAGEでROMに書き戻すって仕様があるんで、
その書き戻しが完了したかをstoreCalRequestで確認するってのもあるな。
うーん、意外とXCPの知らない仕様が出てくるなー。
まぁ今回は使う予定は無いんで、
そういうものがあるって程度の認識で良いと思うよ。
まとめ
まとめだよ。
- 早速PyXCPでCONNECTとGET_STATUSのコマンドを投げて見た。
- 共に問題無く動作
- 該当メソッドの戻り値でレスポンスの詳細が取得できる。
- かなり見やすい構造になっている。
- GET_STATUSはレスポンス内容の性質上、DAQ起動中やCAL_PAGEのROM書き戻し完了待ちなどの確認使用されることが多い。
バックナンバーはこちら。
コメント