1

我正在尝试为 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

谢谢 !

4

1 回答 1

1

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

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

以下将起作用:

打开 #1 C:/Sandboxes/JLR_ADAS_DC/Trace32Scripts/ListCam_new.txt /Read
PRIVATE &value &line // 声明宏

当真()
(
    读取 #1 %LINE &line
    IF FILE.EOFLASTREAD() // 上次 READ 是在文件末尾之后
    (
        关闭 #1
        打开 #1 C:/Sandboxes/JLR_ADAS_DC/Trace32Scripts/ListCam_new.txt /Read
        READ #1 %LINE &line // 读取第一行
    )
    &value=STRing.TRIM(STRing.SPLIT("&line",",",0))
    打印“&值”
    Var.set canConfigInitFlag=&value
)
关闭 #1
ENDDO
于 2017-01-31T22:52:36.913 回答