2017-01-31 134 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