我正在编写一个C#应用程序,它将用于在生产过程中对STM32微控制器进行编程和测试。我想编程和验证芯片,然后写一些配置到闪存,最后设置读出保护。作为后端,我决定使用OpenOCD及其运行在端口6666的Tcl接口。
问题是:我能够执行命令并获得它们的结果,但是我不知道如何检查命令是否成功执行。例如,reset命令返回空字符串,不管目标是否连接.其他一些命令,如mdw返回数据或错误字符串,但我正在寻找一些通用的方法,如何检查该命令是否成功。
谢谢你的想法。
发布于 2021-01-13 17:12:51
假设您的Tcl代码对sendBack [eval $script]有一点兴趣,那么您可以更改它来执行以下操作:
set code [catch {eval $script} result]
sendBack [list $code $result]甚至这个:
set code [catch {eval $script} result options]
sendBack [list $code $result $options]你需要打开另一边的清单。第一个元素是结果代码(成功为0,错误为1,理论上为其他几个,但您可能看不到它们);第二个元素是结果值或错误消息,第三个元素(如果使用第二个代码段)是一个选项字典,可以包含各种可用于调试的东西(包括结构化错误代码、堆栈跟踪等)。
传递完整的结果元组是将整个结果从一个上下文传递到另一个上下文的方式。许多用于Tcl的远程调试工具都使用了几乎完全相同的技巧。
https://stackoverflow.com/questions/65706427
复制相似问题