バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はコンフィグレーションパラメータ(JSON文字列)の作成と読み込み。
そして、そこからのコンフィグレーションオブジェクトの生成。
それを元にしたXCPマスターの生成まで実施した。
このXCPマスター使用してXCPコマンドの送受信ができるはずなので、一個ずつ試していく。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
CONNECT
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
XCPコマンドで最初にやるのは当然CONNECTコマンドだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうだね。
XCPマスターにconnectってメソッドがあるから、
それをそのまま呼び出せばCONNECTコマンドが発行されるはずだ。
そして、戻り値がCONNECTコマンドのレスポンスに相当する情報が返ってくる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
じゃー、以下のコードを実行してみよう。
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
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
お!
予想以上にちゃんとした情報がとれたぞ!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
以前CONNECTコマンドをやった時は
CONNECTコマンドに対するレスポンスの明細は説明しなかったが、
サポートしてる機能や、通信方式、MAX_CTO、MAX_DTOを取得できる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
それらを一目で分かる形式で見れるのは良いねー。
GET_STATUS
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
続けてGET_STATUSコマンドを送ろう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
これもそのまんなメソッドがあるのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうだね。
getStatusってメソッドが有って、
これも戻り値でレスポンスの詳細が見れる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
じゃ、コードの感じは以下で。
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
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
これも結構詳細に出てくるねー。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
sessionStatusってのは現状のXCPスレーブの状態を示してるのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうだね。
DAQが起動中なのかを確認するのに使用されることが多い。
あとはCAL_PAGEでROMに書き戻すって仕様があるんで、
その書き戻しが完了したかをstoreCalRequestで確認するってのもあるな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
うーん、意外とXCPの知らない仕様が出てくるなー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まぁ今回は使う予定は無いんで、
そういうものがあるって程度の認識で良いと思うよ。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- 早速PyXCPでCONNECTとGET_STATUSのコマンドを投げて見た。
- 共に問題無く動作
- 該当メソッドの戻り値でレスポンスの詳細が取得できる。
- かなり見やすい構造になっている。
- GET_STATUSはレスポンス内容の性質上、DAQ起動中やCAL_PAGEのROM書き戻し完了待ちなどの確認使用されることが多い。
バックナンバーはこちら。
コメント