2017-01-31 16 views
1

Я пытаюсь создать скрипт для языка Trace32 PRACTICE, который считывает некоторые данные из TXT-файла, а затем передает значения переменной, которую мне нужно отлаживать.Trace32 непрерывно читает файл

Моя проблема в том, что я не могу заставить ее вернуться в начало файла и начать все, как только .txt достигнет конца. Есть идеи ?

Вот что у меня есть на данный момент, и это входит в ПЧ с самого начала:

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 

 Смежные вопросы

  • Нет связанных вопросов^_^