Добрый день. Стоит задача записи данных на 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;




Ответить с цитированием