Trace32不断读取文件

时间:2017-01-31 14:04:20

标签: scripting embedded trace32 lauterbach

我试图为Trace32 PRACTICE语言创建一个脚本,该脚本从.txt文件读取一些数据,然后将值传递给我需要调试的变量。

我的问题是,一旦.txt到达结尾,我就无法返回到文件的顶部并重新开始。有什么想法吗?

这是我现在所拥有的,它从一开始就进入IF:

OPEN #1 C:/Sandboxes/JLR_ADAS_DC/Trace32Scripts/ListCam_new.txt /Read

PRIVATE &value                // declare macro

WHILE TRUE() 
(
    if FILE.EOFLASTREAD()
    (
        CLOSE #1

        OPEN #1 C:/Sandboxes/JLR_ADAS_DC/Trace32Scripts/ListCam_new.txt /Read
    )
    else
    (
        READ #1 %LINE &line

        &value=STRing.TRIM(STRing.SPLIT("&line",",",0))

        PRINT "&value"

        V canConfigInitFlag = &value
    )
)

CLOSE #1

ENDDO

谢谢!

1 个答案:

答案 0 :(得分:1)

关闭并重新打开文件以返回文件顶部是正确的方法。 (没有搜索命令。)

但是您的脚本中存在错误: 如果最后FILE.EOFLASTREAD()命令仅返回空数据,则函数READ返回TRUE(),因为您已到达文件的末尾。在您的代码中,一旦到达文件末尾,您就不再执行READ命令。因此FILE.EOFLASTREAD()将继续返回TRUE()。

以下内容可行:

OPEN #1 C:/Sandboxes/JLR_ADAS_DC/Trace32Scripts/ListCam_new.txt /Read
PRIVATE &value &line  // declare macros

WHILE TRUE() 
(
    READ #1 %LINE &line
    IF FILE.EOFLASTREAD()  // Last READ was after the end of the file
    (
        CLOSE #1
        OPEN #1 C:/Sandboxes/JLR_ADAS_DC/Trace32Scripts/ListCam_new.txt /Read
        READ #1 %LINE &line  // Read 1st line
    )
    &value=STRing.TRIM(STRing.SPLIT("&line",",",0))
    PRINT "&value"
    Var.set canConfigInitFlag=&value
)
CLOSE #1
ENDDO