Если что, код архивирования
С русским проблема в кодсисе или на форуме)
Код:(* Îòëàâëèâàòü è çàïèñûâàòü â 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


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