• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

CS+ と IronPython を利用した自動化の取り組み


Commit MetaInfo

Revisionf670beda54ba44e66ea99c4fdded013b79c75ae5 (tree)
Time2016-07-15 22:51:23
Authorxm6_original <tanaka_yasushi2008@yaho...>
Commiterxm6_original

Log Message

Delete old files

Change Summary

  • delete: Excel/IronPythonScriptGenerator.xls
  • delete: Experimental/20151110.py
  • delete: Experimental/20151111.py

Incremental Difference

Binary files a/Excel/IronPythonScriptGenerator.xls and /dev/null differ
--- a/Experimental/20151110.py
+++ /dev/null
@@ -1,455 +0,0 @@
1-#coding:utf-8
2-
3-#
4-# CLRインポート
5-#
6-import clr
7-clr.AddReferenceByPartialName("System.Windows.Forms")
8-from System.Windows.Forms import *
9-clr.AddReferenceByPartialName("System.Drawing")
10-from System.Drawing import *
11-
12-#
13-# ライブラリインポート
14-#
15-import os
16-import datetime
17-
18-#
19-# スクリプト開始
20-#
21-common.OutputPanel("Pythonスクリプトを開始しました", MessageType.Information)
22-print "Pythonスクリプトを開始しました"
23-
24-#
25-# プロジェクトオープンされているか確認
26-#
27-common.OutputPanel("プロジェクト確認中です", MessageType.Information)
28-print "プロジェクト確認中です"
29-if project.IsOpen != True:
30- common.OutputPanel("プロジェクトがオープンされていません", MessageType.Error)
31- print "プロジェクトがオープンされていません"
32- sys.exit()
33-common.OutputPanel("プロジェクト確認しました", MessageType.Information)
34-print "プロジェクト確認しました"
35-
36-#
37-# アクティブプロジェクト名からPythonベースパスを作成
38-# (プロジェクト名に日本語文字を含めないこと)
39-# basePath:プロジェクトパス/Python/
40-#
41-common.OutputPanel("Python作業パスを確認中です", MessageType.Information)
42-print "Python作業パスを確認中です"
43-basePath = project.Path.rpartition('\\')[0] + project.Path.rpartition('\\')[1]
44-basePath = basePath + "Python"
45-# パスが存在しなければ作成(作成できたかどうかのチェックは行わない)
46-if os.path.exists(basePath) != True:
47- os.mkdir(basePath)
48-# パスの存在をチェック
49-if os.path.exists(basePath) != True:
50- common.OutputPanel("フォルダ作成に失敗しました", MessageType.Error)
51- print "フォルダ作成に失敗しました"
52- sys.exit()
53-# パスがディレクトリか、またはファイルかチェック
54-if os.path.isdir(basePath) != True:
55- common.OutputPanel("Pythonフォルダがファイルとして存在しています", MessageType.Error)
56- print "Pythonフォルダがファイルとして存在しています"
57- sys.exit()
58-# 末尾にパス区切り文字を追加
59-basePath = basePath + "\\"
60-common.OutputPanel("Pythonパスを確認しました " + basePath, MessageType.Information)
61-print "Python作業パスを確認しました " + basePath
62-
63-#
64-# ログファイルを作成
65-# scriptName:スクリプトファイル名(.pyは含まない)
66-# logPath:プロジェクトパス/Python/スクリプトファイル名_日付_時刻.log
67-#
68-logDate = datetime.datetime.now()
69-scriptName = os.path.basename(__file__).rpartition(".")[0]
70-logPath = basePath + scriptName + logDate.strftime("_%Y%m%d_%H%M%S.log")
71-logFile = open(logPath, "a")
72-# オープンできたかチェック
73-if logFile.closed == True:
74- common.OutputPanel("ログファイルを追加オープンできません", MessageType.Error)
75- print "ログファイルを追加オープンできません"
76- sys.exit()
77-
78-#
79-# ログ番号を初期化
80-#
81-logNum = 0
82-
83-#-[ 汎用関数 ]----------------------------------------------------------------
84-
85-#
86-# 関数:ログ出力
87-#
88-def output_log(msg, err=False):
89- # ログ番号をフォーマット
90- global logNum
91- numMsg = "[%06d] " % logNum
92-
93- # ログ番号を+1
94- logNum = logNum + 1
95-
96- # 日付をフォーマット
97- dtNow = datetime.datetime.now()
98- dtMsg = dtNow.strftime("%Y-%m-%d %H:%M:%S ")
99-
100- # [ログ番号] 日付 時間 文字列
101- numMsg = numMsg + dtMsg + msg
102-
103- # パネル
104- if err == True:
105- common.OutputPanel(numMsg, MessageType.Error)
106- else:
107- common.OutputPanel(numMsg, MessageType.Information)
108-
109- # Pythonコンソール
110- print numMsg
111-
112- # ログ
113- numMsg = numMsg + "\n"
114- logFile.write(numMsg.encode('cp932'))
115-
116- # エラーなら、ここでスクリプト打ち切り
117- if err == True:
118- # 中断
119- logFile.close()
120- sys.exit()
121-
122-#
123-# 関数:スクリーンキャプチャの取得とセーブ(マルチディスプレイ対応)
124-#
125-def save_screen(name):
126- # スクリーン番号を表すインデックスを初期化
127- index = 0
128-
129- # スクリーン毎にループ
130- for scr in Screen.AllScreens:
131- # 現在日付+スクリーン番号+パラメータからパス名を作成
132- dtNow = datetime.datetime.now()
133- dtMsg = dtNow.strftime("%Y%m%d_%H%M%S")
134- scrMsg = "_%1d_" % index
135- path = basePath + dtMsg + scrMsg + name + ".png"
136-
137- # スクリーン毎のサイズを表すRectangle型を取得
138- rect = scr.Bounds
139-
140- # ビットマップとグラフィックを併用してスクリーンキャプチャ
141- bmp = Bitmap(rect.Width, rect.Height)
142- grp = Graphics.FromImage(bmp)
143- grp.CopyFromScreen(Point(0, 0), Point(0, 0), Size(rect.Width, rect.Height))
144-
145- # PNG形式でファイルに保存
146- bmp.Save(path, Imaging.ImageFormat.Png)
147-
148- # 後片付け
149- grp.Dispose()
150- bmp.Dispose()
151-
152- # ログ出力
153- output_log("スクリーンキャプチャを保存しました " + path)
154-
155- # 次のスクリーンへ
156- index = index + 1
157-
158-#-[ ビルド ]------------------------------------------------------------------
159-
160-#
161-# 関数:ビルド
162-#
163-def build_project(all):
164- # ログ表示
165- if all == True:
166- output_log("リビルドしています")
167- else:
168- output_log("通常ビルドしています")
169-
170- # パラメータに応じて通常ビルドまたはリビルド
171- ret = build.All(all, True)
172-
173- # 結果確認
174- if ret == True:
175- output_log("ビルド成功しました")
176- else:
177- output_log("ビルド失敗しました", True)
178-
179-#
180-# 関数:メッセージボックスでビルドタイプを選択
181-#
182-def select_build():
183- # メッセージボックスでビルドタイプを選択
184- output_log("ビルドタイプ選択(はい:通常ビルド いいえ:リビルド)")
185- ret = MessageBox.Show("通常ビルドしますか?", "ビルド選択", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
186-
187- # キャンセルされたら終了する
188- if ret == DialogResult.Cancel:
189- output_log("キャンセルされました", True)
190-
191- # 結果を判定
192- if ret == DialogResult.Yes:
193- rebuild = False
194- else:
195- rebuild = True
196- return rebuild
197-
198-#-[ デバッガ ]----------------------------------------------------------------
199-
200-#
201-# 関数:デバッガをE1(Serial)へ変更
202-#
203-def change_debugger_e1s():
204- # ログ表示
205- output_log("デバッガをE1(Serial)へ変更しています")
206-
207- # デバッガ変更
208- if e1 == True:
209- ret = debugger.DebugTool.Change(DebugTool.E1Serial)
210- else:
211- ret = debugger.DebugTool.Change(DebugTool.Simulator)
212-
213- # 結果評価
214- if ret == True:
215- output_log("デバッガをE1(Serial)へ変更しました")
216- else:
217- output_log("デバッガのE1(Serial)への変更に失敗しました", True)
218-
219-#
220-# 関数:デバッガをE1(LPD)へ変更
221-#
222-def change_debugger_e1l():
223- # ログ表示
224- output_log("デバッガをE1(LPD)へ変更しています")
225-
226- # デバッガ変更
227- ret = debugger.DebugTool.Change(DebugTool.E1Lpd)
228-
229- # 結果評価
230- if ret == True:
231- output_log("デバッガをE1(LPD)へ変更しました")
232- else:
233- output_log("デバッガのE1(LPD)への変更に失敗しました", True)
234-
235-#
236-# 関数:デバッガをIECUBEへ変更
237-#
238-def change_debugger_iecube():
239- # ログ表示
240- output_log("デバッガをIECUBEへ変更しています")
241-
242- # デバッガ変更
243- ret = debugger.DebugTool.Change(DebugTool.Iecube)
244-
245- # 結果評価
246- if ret == True:
247- output_log("デバッガをIECUBEへ変更しました")
248- else:
249- output_log("デバッガのIECUBEへの変更に失敗しました", True)
250-
251-#
252-# 関数:デバッガをSimへ変更
253-#
254-def change_debugger_sim():
255- # ログ表示
256- output_log("デバッガをSimへ変更しています")
257-
258- # デバッガ変更
259- ret = debugger.DebugTool.Change(DebugTool.Simulator)
260-
261- # 結果評価
262- if ret == True:
263- output_log("デバッガをSimへ変更しました")
264- else:
265- output_log("デバッガのSimへの変更に失敗しました", True)
266-
267-#
268-# 関数:デバッガへ接続
269-#
270-def connect_debugger():
271- # ログ表示
272- output_log("デバッガへ接続しています")
273-
274- # デバッガへ接続
275- ret = debugger.Connect()
276-
277- # 結果評価
278- if ret == True:
279- output_log("デバッガへ接続成功しました")
280- else:
281- output_log("デバッガへ接続できませんでした", True)
282-
283-#
284-# 関数:デバッガを切り離す
285-#
286-def disconnect_debugger():
287- # ログ表示
288- output_log("デバッガを切り離しています")
289-
290- # デバッガを切断
291- ret = debugger.Disconnect()
292-
293- # 結果評価
294- if ret == True:
295- output_log("デバッガを切断しました")
296- else:
297- output_log("デバッガを切断できませんでした", True)
298-
299-#
300-# 関数:メッセージボックスでデバッガタイプを選択(E1Serial)
301-#
302-def select_debugger_e1s():
303- # メッセージボックスでデバッガタイプを選択
304- output_log("デバッガ選択(はい:E1(Serial) いいえ:Sim)")
305- ret = MessageBox.Show("E1(Serial)を使用しますか?", "デバッガ選択", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
306-
307- # キャンセルされたら終了する
308- if ret == DialogResult.Cancel:
309- output_log("キャンセルされました", True)
310-
311- # 結果を判定
312- if ret == DialogResult.Yes:
313- e1s = True
314- else:
315- e1s = False
316- return e1s
317-
318-#-[ 実行制御 ]----------------------------------------------------------------
319-
320-#
321-# 関数:ロードモジュールをダウンロード
322-#
323-def download_module():
324- # ログ表示
325- output_log("ロードモジュールをダウンロードしています")
326-
327- # ダウンロード
328- ret = debugger.Download.LoadModule()
329-
330- # 結果評価
331- if ret == True:
332- info = debugger.Download.Information()
333- output_log("ロードモジュールをダウンロードしました " + info[0].Name)
334- else:
335- output_log("ロードモジュールをダウンロードできませんでした", True)
336-
337-#
338-# 関数:プログラムをリセット後に実行
339-#
340-def reset_and_go(wait):
341- # ログ表示
342- if wait == True:
343- output_log("リセット後スタートします(ブレークするまで待機)")
344- else:
345- output_log("リセット後スタートします(待機しない)")
346-
347- # リセット後に実行
348- debugger.Run()
349-
350-#
351-# 関数:強制ストップ
352-#
353-def force_stop():
354- # ログ表示
355- output_log("強制ストップします")
356-
357- # 強制ストップ
358- debugger.Stop()
359-
360-#-[ ブレークポイント ]--------------------------------------------------------
361-
362-
363-#
364-# 関数:ブレークポイントをすべて削除
365-#
366-def clear_breakpoint():
367- # ログ表示
368- output_log("ブレークポイントをすべて削除します")
369-
370- # すべて削除
371- ret = debugger.Breakpoint.Delete()
372-
373- # 結果評価
374- if ret != True:
375- output_log("ブレークポイントを削除できませんでした", True)
376-
377-#
378-# 関数:実行時ブレークポイントを追加
379-#
380-def add_execbreak(name, hardware=True):
381- # ブレークポイントオブジェクトを作成
382- executeBreak = BreakCondition()
383- executeBreak.Address = name
384- if hardware == True:
385- executeBreak.BreakType = BreakType.Hardware
386- else:
387- executeBreak.BreakType = BreakType.Software
388-
389- # ブレークポイントを追加
390- ret = debugger.Breakpoint.Set(executeBreak)
391-
392- # 結果評価
393- if ret == True:
394- if hardware == True:
395- output_log("実行時ハードウェアブレークポイントを追加しました " + name)
396- else:
397- output_log("実行時ソフトウェアブレークポイントを追加しました " + name)
398- else:
399- output_log("ブレークポイントの追加に失敗しました" + name, True)
400-
401-#
402-# 関数:ブレーク時にPCからジャンプ
403-#
404-def view_break():
405- # PCを取得
406- pc = debugger.GetPC()
407-
408- # ログ表示
409- pcMsg = "%x" % pc
410- output_log("ブレークしました PC=0x" + pcMsg)
411-
412- # ジャンプ
413- debugger.Jump.Address(JumpType.Source, pc)
414-
415-#
416-# メイン(ビルド)
417-#
418-rebuild = select_build()
419-build_project(rebuild)
420-
421-#
422-# メイン(デバッグ開始)
423-#
424-if debugger.IsConnected() == True:
425- if debugger.IsRunning == True:
426- force_stop()
427- disconnect_debugger()
428-e1s = select_debugger()
429-if e1s == True:
430- change_debugger_e1s()
431-else:
432- change_debugger_sim()
433-connect_debugger()
434-download_module()
435-clear_breakpoint()
436-add_execbreak("R_TAU0_Channel0_Start")
437-reset_and_go(True)
438-
439-view_break()
440-save_screen("TAU0_Ch0_Start")
441-
442-#
443-# メイン(デバッグ終了)
444-#
445-if debugger.IsConnected() == True:
446- if debugger.IsRunning == True:
447- force_stop()
448- disconnect_debugger()
449-
450-#
451-# 終了
452-#
453-output_log("正常終了しました")
454-save_screen("終了")
455-logFile.close()
--- a/Experimental/20151111.py
+++ /dev/null
@@ -1,548 +0,0 @@
1-#coding:utf-8
2-
3-#
4-# CLRインポート
5-#
6-import clr
7-clr.AddReferenceByPartialName("System.Windows.Forms")
8-from System.Windows.Forms import *
9-clr.AddReferenceByPartialName("System.Drawing")
10-from System.Drawing import *
11-
12-#
13-# ライブラリインポート
14-#
15-import os
16-import datetime
17-import time
18-
19-#
20-# スクリプト開始
21-#
22-common.OutputPanel("Pythonスクリプトを開始しました", MessageType.Information)
23-print "Pythonスクリプトを開始しました"
24-
25-#
26-# プロジェクトオープンされているか確認
27-#
28-common.OutputPanel("プロジェクト確認中です", MessageType.Information)
29-print "プロジェクト確認中です"
30-if project.IsOpen != True:
31- common.OutputPanel("プロジェクトがオープンされていません", MessageType.Error)
32- print "プロジェクトがオープンされていません"
33- sys.exit()
34-common.OutputPanel("プロジェクト確認しました", MessageType.Information)
35-print "プロジェクト確認しました"
36-
37-#
38-# アクティブプロジェクト名からPythonベースパスを作成
39-# (プロジェクト名に日本語文字を含めないこと)
40-# basePath:プロジェクトパス/Python/
41-#
42-common.OutputPanel("Python作業パスを確認中です", MessageType.Information)
43-print "Python作業パスを確認中です"
44-basePath = project.Path.rpartition('\\')[0] + project.Path.rpartition('\\')[1]
45-basePath = basePath + "Python"
46-# パスが存在しなければ作成(作成できたかどうかのチェックは行わない)
47-if os.path.exists(basePath) != True:
48- os.mkdir(basePath)
49-# パスの存在をチェック
50-if os.path.exists(basePath) != True:
51- common.OutputPanel("フォルダ作成に失敗しました", MessageType.Error)
52- print "フォルダ作成に失敗しました"
53- sys.exit()
54-# パスがディレクトリか、またはファイルかチェック
55-if os.path.isdir(basePath) != True:
56- common.OutputPanel("Pythonフォルダがファイルとして存在しています", MessageType.Error)
57- print "Pythonフォルダがファイルとして存在しています"
58- sys.exit()
59-# 末尾にパス区切り文字を追加
60-basePath = basePath + "\\"
61-common.OutputPanel("Pythonパスを確認しました " + basePath, MessageType.Information)
62-print "Python作業パスを確認しました " + basePath
63-
64-#
65-# ログファイルを作成
66-# scriptName:スクリプトファイル名(.pyは含まない)
67-# logPath:プロジェクトパス/Python/スクリプトファイル名_日付_時刻.log
68-#
69-logDate = datetime.datetime.now()
70-scriptName = os.path.basename(__file__).rpartition(".")[0]
71-logPath = basePath + scriptName + logDate.strftime("_%Y%m%d_%H%M%S.log")
72-logFile = open(logPath, "a")
73-# オープンできたかチェック
74-if logFile.closed == True:
75- common.OutputPanel("ログファイルを追加オープンできません", MessageType.Error)
76- print "ログファイルを追加オープンできません"
77- sys.exit()
78-
79-#
80-# ログ番号を初期化
81-#
82-logNum = 0
83-
84-#-[ 汎用関数 ]----------------------------------------------------------------
85-
86-#
87-# 関数:ログ出力
88-#
89-def output_log(msg, err=False):
90- # ログ番号をフォーマット
91- global logNum
92- numMsg = "[%06d] " % logNum
93-
94- # ログ番号を+1
95- logNum = logNum + 1
96-
97- # 日付をフォーマット
98- dtNow = datetime.datetime.now()
99- dtMsg = dtNow.strftime("%Y-%m-%d %H:%M:%S ")
100-
101- # [ログ番号] 日付 時間 文字列
102- numMsg = numMsg + dtMsg + msg
103-
104- # パネル
105- if err == True:
106- common.OutputPanel(numMsg, MessageType.Error)
107- else:
108- common.OutputPanel(numMsg, MessageType.Information)
109-
110- # Pythonコンソール
111- print numMsg
112-
113- # ログ
114- numMsg = numMsg + "\n"
115- logFile.write(numMsg.encode('cp932'))
116-
117- # エラーなら、ここでスクリプト打ち切り
118- if err == True:
119- # 中断
120- logFile.close()
121- sys.exit()
122-
123- # コンソールをフラッシュ
124- sys.stdout.flush()
125-
126-#
127-# 関数:スクリーンキャプチャの取得とセーブ(マルチディスプレイ対応)
128-#
129-def save_screen(name):
130- # スクリーン番号を表すインデックスを初期化
131- index = 0
132-
133- # スクリーン毎にループ
134- for scr in Screen.AllScreens:
135- # 現在日付+スクリーン番号+パラメータからパス名を作成
136- dtNow = datetime.datetime.now()
137- dtMsg = dtNow.strftime("%Y%m%d_%H%M%S")
138- scrMsg = "_%1d_" % index
139- path = basePath + dtMsg + scrMsg + name + ".png"
140-
141- # ログ出力
142- output_log("スクリーンキャプチャを保存しました " + path)
143-
144- # スクリーン毎のサイズを表すRectangle型を取得
145- rect = scr.Bounds
146-
147- # ビットマップとグラフィックを併用してスクリーンキャプチャ
148- bmp = Bitmap(rect.Width, rect.Height)
149- grp = Graphics.FromImage(bmp)
150- grp.CopyFromScreen(Point(0, 0), Point(0, 0), Size(rect.Width, rect.Height))
151-
152- # PNG形式でファイルに保存
153- bmp.Save(path, Imaging.ImageFormat.Png)
154-
155- # 後片付け
156- grp.Dispose()
157- bmp.Dispose()
158-
159- # 次のスクリーンへ
160- index = index + 1
161-
162-#
163-# 関数:指定msだけ時間待ち
164-#
165-def sleep_ms(ms=1000):
166- # ログ
167- msMsg = "時間待ち %d(ms)" % ms
168- output_log(msMsg)
169-
170- # スリープ
171- time.sleep(ms * 0.001)
172-
173-#-[ ビルド ]------------------------------------------------------------------
174-
175-#
176-# 関数:ビルド
177-#
178-def build_project(all):
179- # ログ表示
180- if all == True:
181- output_log("リビルドしています")
182- else:
183- output_log("通常ビルドしています")
184-
185- # パラメータに応じて通常ビルドまたはリビルド
186- ret = build.All(all, True)
187-
188- # 結果確認
189- if ret == True:
190- output_log("ビルド成功しました")
191- else:
192- output_log("ビルド失敗しました", True)
193-
194-#
195-# 関数:メッセージボックスでビルドタイプを選択
196-#
197-def select_build():
198- # メッセージボックスでビルドタイプを選択
199- output_log("ビルドタイプ選択(はい:通常ビルド いいえ:リビルド)")
200- ret = MessageBox.Show("通常ビルドしますか?", "ビルド選択", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
201-
202- # キャンセルされたら終了する
203- if ret == DialogResult.Cancel:
204- output_log("キャンセルされました", True)
205-
206- # 結果を判定
207- if ret == DialogResult.Yes:
208- rebuild = False
209- else:
210- rebuild = True
211- return rebuild
212-
213-#-[ デバッガ ]----------------------------------------------------------------
214-
215-#
216-# 関数:デバッガをE1(Serial)へ変更
217-#
218-def change_debugger_e1s():
219- # ログ表示
220- output_log("デバッガをE1(Serial)へ変更しています")
221-
222- # デバッガ変更
223- if e1 == True:
224- ret = debugger.DebugTool.Change(DebugTool.E1Serial)
225- else:
226- ret = debugger.DebugTool.Change(DebugTool.Simulator)
227-
228- # 結果評価
229- if ret == True:
230- output_log("デバッガをE1(Serial)へ変更しました")
231- else:
232- output_log("デバッガのE1(Serial)への変更に失敗しました", True)
233-
234-#
235-# 関数:デバッガをE1(LPD)へ変更
236-#
237-def change_debugger_e1l():
238- # ログ表示
239- output_log("デバッガをE1(LPD)へ変更しています")
240-
241- # デバッガ変更
242- ret = debugger.DebugTool.Change(DebugTool.E1Lpd)
243-
244- # 結果評価
245- if ret == True:
246- output_log("デバッガをE1(LPD)へ変更しました")
247- else:
248- output_log("デバッガのE1(LPD)への変更に失敗しました", True)
249-
250-#
251-# 関数:デバッガをIECUBEへ変更
252-#
253-def change_debugger_iecube():
254- # ログ表示
255- output_log("デバッガをIECUBEへ変更しています")
256-
257- # デバッガ変更
258- ret = debugger.DebugTool.Change(DebugTool.Iecube)
259-
260- # 結果評価
261- if ret == True:
262- output_log("デバッガをIECUBEへ変更しました")
263- else:
264- output_log("デバッガのIECUBEへの変更に失敗しました", True)
265-
266-#
267-# 関数:デバッガをSimへ変更
268-#
269-def change_debugger_sim():
270- # ログ表示
271- output_log("デバッガをSimへ変更しています")
272-
273- # デバッガ変更
274- ret = debugger.DebugTool.Change(DebugTool.Simulator)
275-
276- # 結果評価
277- if ret == True:
278- output_log("デバッガをSimへ変更しました")
279- else:
280- output_log("デバッガのSimへの変更に失敗しました", True)
281-
282-#
283-# 関数:デバッガへ接続
284-#
285-def connect_debugger():
286- # ログ表示
287- output_log("デバッガへ接続しています")
288-
289- # デバッガへ接続
290- ret = debugger.Connect()
291-
292- # 結果評価
293- if ret == True:
294- output_log("デバッガへ接続成功しました")
295- else:
296- output_log("デバッガへ接続できませんでした", True)
297-
298-#
299-# 関数:デバッガを切り離す
300-#
301-def disconnect_debugger():
302- # ログ表示
303- output_log("デバッガを切り離しています")
304-
305- # デバッガを切断
306- ret = debugger.Disconnect()
307-
308- # 結果評価
309- if ret == True:
310- output_log("デバッガを切断しました")
311- else:
312- output_log("デバッガを切断できませんでした", True)
313-
314-#
315-# 関数:デバッガが接続されていれば切り離す
316-#
317-def disconnect_if_connect():
318- if debugger.IsConnected() == True:
319- if debugger.IsRunning == True:
320- debugger.Stop()
321- disconnect_debugger()
322-
323-#
324-# 関数:メッセージボックスでデバッガタイプを選択(E1Serial)
325-#
326-def select_debugger_e1s():
327- # メッセージボックスでデバッガタイプを選択
328- output_log("デバッガ選択(はい:E1(Serial) いいえ:Sim)")
329- ret = MessageBox.Show("E1(Serial)を使用しますか?", "デバッガ選択", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
330-
331- # キャンセルされたら終了する
332- if ret == DialogResult.Cancel:
333- output_log("キャンセルされました", True)
334-
335- # 結果を判定
336- if ret == DialogResult.Yes:
337- e1s = True
338- else:
339- e1s = False
340- return e1s
341-
342-#-[ 実行制御 ]----------------------------------------------------------------
343-
344-#
345-# 関数:ロードモジュールをダウンロード
346-#
347-def download_module():
348- # ログ表示
349- output_log("ロードモジュールをダウンロードしています")
350-
351- # ダウンロード
352- ret = debugger.Download.LoadModule()
353-
354- # 結果評価
355- if ret == True:
356- info = debugger.Download.Information()
357- output_log("ロードモジュールをダウンロードしました " + info[0].Name)
358- else:
359- output_log("ロードモジュールをダウンロードできませんでした", True)
360-
361-#
362-# 関数:プログラムをリセット後に実行
363-#
364-def reset_and_go():
365- # ログ表示
366- output_log("リセット後スタートします")
367-
368- # リセット実行
369- debugger.Run(RunOption.Normal)
370-
371-#
372-# 関数:プログラムを現在位置から実行
373-#
374-def resume_and_go():
375- # ログ表示
376- output_log("現在位置から継続実行します")
377-
378- # 継続実行
379- debugger.Go(GoOption.Normal)
380-
381-#
382-# 関数:強制ストップ
383-#
384-def force_stop():
385- # ログ表示
386- output_log("強制ストップします")
387-
388- # 強制ストップ
389- debugger.Stop()
390-
391-#-[ ブレークポイント ]--------------------------------------------------------
392-
393-#
394-# 関数:ブレークポイントをすべて削除
395-#
396-def clear_breakpoint():
397- # ログ表示
398- output_log("ブレークポイントをすべて削除します")
399-
400- # すべて削除
401- ret = debugger.Breakpoint.Delete()
402-
403- # 結果評価
404- if ret != True:
405- output_log("ブレークポイントを削除できませんでした", True)
406-
407-#
408-# 関数:実行時ブレークポイントを追加
409-#
410-def add_execbreak(name, hardware=True):
411- # ブレークポイントオブジェクトを作成
412- executeBreak = BreakCondition()
413- executeBreak.Address = name
414- if hardware == True:
415- executeBreak.BreakType = BreakType.Hardware
416- else:
417- executeBreak.BreakType = BreakType.Software
418-
419- # ブレークポイントを追加
420- ret = debugger.Breakpoint.Set(executeBreak)
421-
422- # 結果評価
423- if ret == True:
424- if hardware == True:
425- output_log("実行時ハードウェアブレークポイントを追加しました " + name)
426- else:
427- output_log("実行時ソフトウェアブレークポイントを追加しました " + name)
428- else:
429- output_log("ブレークポイントの追加に失敗しました " + name, True)
430-
431-#
432-# 関数:ブレークするまで待機
433-#
434-def wait_until_break():
435- # ログ表示
436- output_log("ブレーク待ち")
437-
438- # ブレーク条件が無い限り、10ms待つ処理を続ける
439- while debugger.GetBreakStatus() == BreakStatus.None:
440- time.sleep(0.001)
441- sys.stdout.flush()
442-
443-#
444-# 関数:ブレーク時にPCからジャンプ
445-#
446-def view_break_pc():
447- # PCを取得
448- pc = debugger.GetPC()
449-
450- # ログ表示
451- pcMsg = "%x" % pc
452- output_log("ブレークしました PC=0x" + pcMsg)
453-
454- # ジャンプ
455- debugger.Jump.Address(JumpType.Source, pc)
456-
457-#-[ ウォッチ ]----------------------------------------------------------------
458-
459-#
460-# 関数:ウォッチで値を表示(DEC)
461-#
462-def watch_value_dec(name):
463- # ログ
464- output_log("ウォッチします " + name + " = (DEC):")
465-
466- # ウォッチで値を取得
467- debugger.Watch.GetValue(name, WatchOption.Decimal)
468-
469-#
470-# 関数:ウォッチで値を表示(HEX)
471-#
472-def watch_value_hex(name):
473- # ログ
474- output_log("ウォッチします " + name + " = (HEX):")
475-
476- # ウォッチで値を取得
477- debugger.Watch.GetValue(name, WatchOption.Hexdecimal)
478-
479-#
480-# 関数:ウォッチで値を設定
481-#
482-def set_value(name, value, hex=True):
483- # ログ
484- output_log("変数を設定します " + name)
485-
486- # 値を設定
487- debugger.Watch.SetValue(name, value)
488-
489- # 設定値を確認
490- if hex == True:
491- debugger.Watch.GetValue(name, WatchOption.Hexdecimal)
492- else:
493- debugger.Watch.GetValue(name, WatchOption.Decimal)
494-
495-#-[ メイン ]--------------------------------------------------------
496-
497-#
498-# メイン(ビルド)
499-#
500-rebuild = select_build()
501-build_project(rebuild)
502-
503-#
504-# メイン(デバッグ開始)
505-#
506-disconnect_if_connect()
507-e1s = select_debugger_e1s()
508-if e1s == True:
509- change_debugger_e1s()
510-else:
511- change_debugger_sim()
512-connect_debugger()
513-download_module()
514-
515-#
516-# メイン(ブレーク設定)
517-#
518-clear_breakpoint()
519-add_execbreak("R_TAU0_Channel0_Start")
520-
521-Condition = BreakCondition()
522-Condition.Address = "check_data"
523-debugger.Breakpoint.Set(Condition)
524-#add_execbreak("check_data")
525-reset_and_go()
526-wait_until_break()
527-
528-
529-view_break_pc()
530-watch_value_dec("g_int_data")
531-watch_value_hex("g_int_data")
532-sleep_ms()
533-save_screen("check_data")
534-set_value("g_int_data", 0xffff)
535-resume_and_go()
536-wait_until_break()
537-view_break_pc()
538-watch_value_hex("g_int_data")
539-sleep_ms()
540-save_screen("R_TAU0_Channel_Start")
541-
542-
543-#
544-# 終了
545-#
546-disconnect_if_connect()
547-output_log("正常終了しました")
548-logFile.close()