Если что, код архивирования
С русским проблема в кодсисе или на форуме)
Код:
(* Îòëàâëèâàòü è çàïèñûâàòü
â retain îòêëþ÷åíèÿ è ïîäêëþ÷åíèÿ ôëåøêè *)
(* ×òåíèå òåêóùèõ âðåìåíè è äàòû *)
TimeAndDate.Day:=0;
TimeAndDate.DayOfWeek:=0;
TimeAndDate.dwHighMsec:=0;
TimeAndDate.dwLowMSecs:=0;
TimeAndDate.Milliseconds:=0;
TimeAndDate.Minute:=0;
TimeAndDate.Second:=0;
TimeAndDate.Hour:=0;
TimeAndDate.Year:=0;
TimeAndDate.Month:=0;
Sys_time.ulHigh:=0;
Sys_time.ulLow:=0;
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);
IF today <> TimeAndDate.Day THEN (*åñëè íàñòóïèë íîâûé äåíü, òî ôîðìèðóåì íîâûé ôàéë ñ íîâûì èìåíåì äàòû*)
name_of_file:= CONCAT(pref , UINT_TO_STRING(TimeAndDate.Day));
name_of_file:= CONCAT(name_of_file , '.');
name_of_file:= CONCAT(name_of_file , UINT_TO_STRING(TimeAndDate.Month));
name_of_file:= CONCAT(name_of_file , '.');
name_of_file:= CONCAT(name_of_file , UINT_TO_STRING(TimeAndDate.Year));
name_of_file:= CONCAT(name_of_file , '.csv');
today:= TimeAndDate.Day;
need_new_header:= TRUE; (*äàëåå â íîâîì ôàéëå íåîáõîäèìî áóäåò ñîçäàòü "øàïêó" àðõèâà*)
END_IF
IF write_log = TRUE THEN
IF need_new_header THEN
header:= CONCAT( '', 'Äàòà');
header:= CONCAT( header, ';');
header:= CONCAT( header, 'Âðåìÿ');
header:= CONCAT( header, ';');
header:= CONCAT( header, '$0A');
ELSE (* Èíà÷å äîçàïèñûâàåì â (ñåãîäíÿøíèé) ôàéë *)
header:= CONCAT('' , UINT_TO_STRING(TimeAndDate.Day));
header:= CONCAT( header, '.');
header:= CONCAT(header , UINT_TO_STRING(TimeAndDate.Month));
header:= CONCAT( header, '.');
header:= CONCAT(header , UINT_TO_STRING(TimeAndDate.Year));
header:= CONCAT( header, ';');
header:= CONCAT(header , UINT_TO_STRING(TimeAndDate.Hour));
header:= CONCAT( header, ':');
header:= CONCAT(header , UINT_TO_STRING(TimeAndDate.Minute));
header:= CONCAT( header, ':');
header:= CONCAT(header , UINT_TO_STRING(TimeAndDate.Second));
header:= CONCAT( header, ';');
(* Äàëåå - ïåðåìåííûå *)
header:= CONCAT( header, ';');
header:= CONCAT( header, '$0A');
END_IF
END_IF (* write_log = TRUE*)
(* ×ÅÊÀÒÜ USB ïî òàéìåðó à íå
ïîñòîÿííî *)
IF usb_check_connection = TRUE THEN
(* Ïðîâåðêà ïîäêëþ÷åíèÿ ïî USB *)
usb_connection:= GetUSBSerial(0, ADR(buf));
IF usb_connection = 0 THEN
(*×òåíèå ñåðèéíîãî íîìåðà ïðîøëî óñïåøíî*)
(* file_name:= 'usb:mylogfile.txt'; *)
(* file_st:= File_open_start; *)
usb_check_connection:= FALSE;
ELSIF usb_connection = -1 THEN
; (* Óñòðîéñòâî USB íå ïîäêëþ÷åíî *)
ELSIF usb_connection = -2 THEN
; (*×òåíèå ñåðèéíîãî íîìåðà ïðîèçîøëî ñ îøèáêîé*)
END_IF
END_IF (* usb_check_connection = TRUE *)
IF write_log = TRUE AND usb_check_connection = FALSE THEN
IF file_opened = FALSE THEN
file_st:= File_open_start;
ELSE
file_st:= File_write_start;
END_IF
END_IF
CASE file_st OF
File_lazy:
(* Çäåñü ðåàëèçîâàòü
ïåðèîäè÷åñêèå ïîïûòêè îòêðûòü USB ïîðò ïî òàéìåðó*)
;
File_open_start:
res:= OwenFileOpenAsync(name_of_file, 'a', ADR(f_handle));
write_log:= FALSE;
IF res = ASYNC_WORKING THEN
file_st:= File_open_check;
END_IF
File_open_check:
res:= OwenFileOpenAsync(name_of_file, 'a', ADR(f_handle));
IF res = ASYNC_DONE THEN
IF f_handle <> 0 THEN
file_st:= File_write_start;
file_opened:= TRUE;
END_IF
END_IF
File_write_start:
res:= OwenFileWriteAsync( f_handle, ADR(header), LEN(header), ADR(wr_result));
write_log:= FALSE;
IF res = ASYNC_WORKING THEN
file_st:= File_write_check;
END_IF
File_write_check:
res:= OwenFileWriteAsync( f_handle, ADR(header), LEN(header), ADR(wr_result));
IF res = ASYNC_DONE THEN
IF wr_result = LEN(header) THEN
need_new_header:= FALSE;
file_st:= File_end;
END_IF
END_IF
File_end:
(* ÍÀäî çàêðûâàòü ôàéë? *)
;
END_CASE