【问题标题】:How do I get feedback from T32 after running cmm scripts?运行 cmm 脚本后如何从 T32 获得反馈?
【发布时间】:2017-01-12 01:00:48
【问题描述】:

我正在通过命令行运行如下 T32 CMM 脚本(放入 python 包装器)但是我想知道 T32 的状态是脚本运行成功还是出现错误,我该如何反馈从T32?

cd C:\T32\bin\windows64

Config.t32:

RCL=NETASSIST
PORT=20000
PACKLEN=1024

; Environment variables
OS=
ID=T32
TMP=C:\Users\jhigh\AppData\Local\Temp
SYS=C:\T32


PBI=
USB

; Printer settings 
PRINTER=WINDOWS

用法:-

t32marm.exe -s c:\Temp\vi_chip_cmd_line.cmm \\Filerlocation\data\files

【问题讨论】:

  • 脚本完成后是否应该退出 TRACE32 应用程序?或者您想通过 TRACE32 远程 API 检查脚本的执行状态?
  • Holger - 感谢您的回复......它不应该退出,想检查执行状态,一旦完成,TRACE32应用程序将在成功的情况下处于运行状态

标签: python trace32 lauterbach


【解决方案1】:

TRACE32“远程控制和 JTAG 访问 API”允许您与正在运行的 TRACE32 应用程序进行通信。

要为您的 TRACE32 应用程序启用 API,只需将以下两行添加到您的 TRACE32 启动配置文件(“config.t32”)。这两行之前和之后的空行是强制性的。

RCL=NETASSIST
PORT=20000

API 的用法在 PDF api_remote.pdf 中进行了描述,该文件位于您的 TRACE32 安装的 PDF 文件夹中,或者您可以从 http://www.lauterbach.com/manual.html 下载它

您可以在http://www.lauterbach.com/scripts.html 找到有关如何在 Python 中使用远程 API 的示例(只需在页面上搜索“Python”)

要检查您的 PRACTICE 脚本(“vi_chip_cmd_line.cmm”)是否仍在运行,请使用 API 函数 T32_GetPracticeState();

我还建议在脚本开头使用Var.NEWGLOBAL int \state 创建一个人工变量。在脚本测试期间,将变量“\state”设置为使用Var.Set \state=42 递增的值。通过 TRACE32 命令EVAL Var.VALUE(\state) 和 API 调用 T32_EvalGet(),您可以获得变量 "\state" 的当前值,通过这样做,您可以检查您的脚本是否达到其最终状态。

另一种方法是使用 TRACE32 命令APPEND 从您的 PRACTICE 脚本(“vi_chip_cmd_line.cmm”)中写入一个日志文件,然后从您的 Python 脚本中读取该日志文件。

【讨论】:

  • 几个问题 1.我查看了python脚本,我找不到使用T32_GetPracticeState 2.你能解释一下Var.Set \state=42,为什么我们必须使用42?我仍然必须尝试看看我是否可以合并并按照您的设置继续前进
  • 我在 t32apicmd.py 中硬编码了 dll 以使用 t32api = r'C:\T32\demo\api\capi\dll\t32api.dll',我得到以下错误,我怎样才能确定要使用的正确 dll 以及在哪里可以得到它? Traceback (most recent call last): File "t32apicmd.py", line 152, in <module> main(sys.argv[1:]) File "t32apicmd.py", line 87, in main t32api.T32_Config(b"NODE=",node.encode('latin-1')) AttributeError: 'str' object has no attribute 'T32_Config'
  • 大约 42:这只是一个例子。您可以分配任何数值。您还可以更改变量的名称。 (它只需要以反斜杠开头)
  • 好的,谢谢,错误呢?您能提供有关如何调试和消除错误的指导吗?
  • 好吧,如果你在 Windows 上有一个 64 位 python 二进制文件,你应该在 Windows 上使用 t32api64.dll 作为 32 位 python 二进制文件,你应该使用 t32api.dll,对于 Linux 使用 t32api64.so (如果是 Linux 上的 32 位 python 二进制文件,则为 t32api.so)
【解决方案2】:

请检查您的 T32 安装以获取有关如何使用 T32 API 的演示 (demo/api/python)。请记住,如果没有有效的许可证,它将无法工作。同样重要的是,如果您在 64 位主机上使用 32 位 cygwin 中的 Python,则需要加载 32 位 DLL。

配置:

RCL=NETASSIST
PORT=20000
PACKLEN=1024

Python 脚本:

import platform
import ctypes

# Adjust the path / name to the DLL
t32api = ctypes.CDLL("./t32api64.dll")

t32api.T32_Config(b"NODE=",b"localhost")
t32api.T32_Config(b"PORT=",b"20000")
t32api.T32_Config(b"PACKLEN=",b"1024")

t32api.T32_Init()
t32api.T32_Attach(1)
t32api.T32_Ping()

t32api.T32_Cmd(b"AREA")

t32api.T32_Exit()

然后你可以使用 Holger 建议的命令/技术:

T32_GetPracticeState()

获取 PRACTICE 的当前运行状态。和/或在你的脚本中设置一个变量

Var.Assign \state=1
Var.Assign \state=2
....

然后使用 T32_ReadVariableValue()

轮询它

【讨论】:

  • dev15 - 感谢您的回复...我没有 t32rem.exe,我只看到 t32marm.exe,t32pbi.exe,t32start.exe,t32win.exe,trace32.api 我在一台windows7机器并使用t32api.dll,我的防火墙已关闭,我有许可证....用屏幕截图更新了问题..我运行你提供的脚本..它既不运行命令“AREA”也不抛出错误,我遗漏了一些非常明显的东西....我可以在这个上获得远程支持吗?如果你能指点我一个可以提供远程支持的人,我真的很感激
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 2020-02-05
  • 1970-01-01
  • 2020-05-06
  • 1970-01-01
相关资源
最近更新 更多