嵌入式烧写固件太繁琐了,交给自动化脚本解决。
我将相同类型的代码封装成函数,以便更易于阅读和维护。这包括运行和激活应用程序、打开文件对话框并选择文件,以及在应用程序窗口中发送命令。
; 定义应用程序路径和窗口标题
Local $appPath1 = "H:\vmwareWork\MC661\MC661归档文件\archive-main\Fibocom_Windows_MultiUpgradeDL_V1.0.0.0\FibocomMultiUpgradeDL\FibocomMultiUpgradeDL_V1.0.0\FibocomMultiUpgradeDL_V1.0.0.exe"
; 应用程序路径,请替换为您要启动的软件路径
Local $windowTitle1 = "FibocomMultiUpgradeDL_V1.0.0"
; 窗口标题,请替换为软件窗口的标题
Local $dialogTitle = "打开"
; 定义您要选择的文件路径
Local $filePath = "\\192.168.73.128\ShareFiles\my_work\iot_os_2\.build\hex\8850CM_cat1bis_volte_plus-8850CM_cat1bis_volte_plus-debug.pac"
; 启动应用程序并选择文件
If Not RunAndActivateApp($appPath1, $windowTitle1) Then
Exit
EndIf
OpenFile($windowTitle1, $filePath)
; 定义第二个应用程序路径和窗口标题
Local $appPath2 = "E:\zbl_owner\常用软件\sscom_5033\SSCOMv5131.exe"
; 应用程序路径,请替换为您要启动的软件路径
Local $windowTitle2 = "SSCOM V5.13.1 串口/网络数据调试器,作者:大虾丁丁,2618058@qq.com. QQ群:52502449(最新版本)"
; 启动应用程序并发送命令
If Not RunAndActivateApp($appPath2, $windowTitle2) Then
Exit
EndIf
SendCommand($windowTitle2, "AT^FORCEDNLD")
; 函数定义
; 启动应用程序并激活窗口
Func RunAndActivateApp($appPath, $windowTitle)
; 检查窗口是否已经打开
Local $hWnd = WinGetHandle($windowTitle)
If $hWnd <> "" Then
; 激活窗口并等待其激活
WinActivate($windowTitle)
WinWaitActive($windowTitle)
Return True
Else
; 运行应用程序并等待窗口激活
Run($appPath)
If Not WinWait($windowTitle, "", 10) Then
; 超时后退出
Return False
EndIf
WinActivate($windowTitle)
WinWaitActive($windowTitle)
Return True
EndIf
EndFunc
; 在指定窗口中打开文件
Func OpenFile($windowTitle, $filePath)
; 使用相对于控件的坐标模式
Opt("MouseCoordMode", 2)
; 在窗口的指定位置单击
MouseClick("left", 204, 27)
Sleep(50)
; 单击打开文件对话框按钮
MouseClick("left", 35, 30)
Opt("MouseCoordMode", 0)
; 等待打开对话框并激活
WinWait($dialogTitle)
WinActivate($dialogTitle)
WinWaitActive($dialogTitle)
; 在对话框中设置文件路径并单击打开按钮
ControlSetText($dialogTitle, "", "Edit1", $filePath)
Sleep(50)
ControlClick($dialogTitle, "", "Button1")
WinWaitClose($dialogTitle)
; 激活原始窗口
WinActivate($windowTitle)
WinWaitActive($windowTitle)
; 将鼠标坐标模式设置为相对于控件
Opt("MouseCoordMode", 2)
; 获取控件 "ToolbarWindow32" 的位置
$Sa = ControlGetPos($windowTitle, "", "ToolbarWindow32")
; 在指定的坐标位置点击鼠标左键,停止坐标
MouseClick("left", 152, 29)
; 将鼠标坐标模式恢复为默认模式
Opt("MouseCoordMode", 0)
Sleep(50)
EndFunc
; 在指定窗口中发送命令
Func SendCommand($windowTitle, $command)
; 激活窗口并选择命令输入框
WinActivate($windowTitle)
WinWaitActive($windowTitle)
ControlClick($windowTitle, "", "TMemo1")
; 在输入框中设置命令并单击发送按钮
Sleep(50)
ControlSetText($windowTitle, "", "TMemo2", $command)
ControlClick($windowTitle, "", "TBitBtn5")
EndFunc