2017-01-31 54 views
1

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

我的问题是,我不能让它返回到文件的顶部,并重新开始,一旦.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

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

但是有一个在您的脚本中的错误: 功能FILE.EOFLASTREAD()返回TRUE()如果因为你已经到达了文件的末尾最后READ命令也只能空车返回的数据。在您的代码中,一旦到达文件末尾,就不再执行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