Добрый день. Стоит задача записи данных на FLASH карту с помощью библиотеки OwenLibFileAsyn*c, с записью и чтением разобрался но возникла проблема с функцией OwenFileEOFAsync(handle,ADR(End_file)). Из описания она должна возвратить значение TRUE если файл закончился но этого не происходит, хотя прочитал уже весь файл.
Код:
CASE Status_read_file OF
0:
Descriptor_Open_File:= OwenFileOpenAsync('usb:test.txt','r', ADR(handle));
IF Descriptor_Open_File=ASYNC_WORKING THEN
Status_read_file:=1;
ELSIF Descriptor_Open_File=ASYNC_BLOCK_ACCESS THEN
(*Descriptor_Close_File:=OwenFileCloseAsync(handle,ADR(result));*)
Status_read_file:=10;
END_IF
1:
Descriptor_Open_File:= OwenFileOpenAsync('usb:test.txt','r', ADR(handle));
IF Descriptor_Open_File=ASYNC_DONE THEN
IF handle<>0 THEN
Status_read_file:=2;
ELSE
Status_read_file:=0;
Descriptor_Close_File:=OwenFileCloseAsync(handle,ADR(result));
END_IF
ELSIF Descriptor_Open_File<0 THEN
Status_read_file:=0;
END_IF
2:
Descriptor_Read_File := OwenFileReadAsync(handle, ADR(READ_DATA), 40, ADR(Descriptor_Read_Result));
IF Descriptor_Read_File=ASYNC_WORKING THEN
Status_read_file:=3;
ELSIF Descriptor_Read_File=ASYNC_BLOCK_ACCESS THEN
Status_read_file:=10;
END_IF
3:
Descriptor_Read_File := OwenFileReadAsync(handle, ADR(READ_DATA), 40, ADR(Descriptor_Read_Result));
IF Descriptor_Read_File=ASYNC_DONE THEN
Status_read_file:=4;
(*IF result=SIZEOF(Temp_write1) THEN
Status_write_file:=4;
ELSE
Status_write_file:=6;
END_IF*)
ELSIF Descriptor_Read_File<0 THEN
Status_read_file:=5;
END_IF
4:
Descriptor_EOF := OwenFileEOFAsync(handle,ADR(End_file));
IF Descriptor_EOF = ASYNC_WORKING THEN
Status_read_file:=5;
END_IF
5:
Descriptor_EOF := OwenFileEOFAsync(handle,ADR(End_file));
IF Descriptor_EOF = ASYNC_DONE THEN
IF End_file THEN (*Смотрим возвращаемое значение, если TRUE то заканчиваем читать файл*)
Status_read_file:=99;
ELSE
Status_read_file:=3;
END_IF
ELSIF Descriptor_EOF < 0 THEN
Status_read_file:=6;
END_IF
END_CASE;