FS_WRITE_DATA_TEXT
Escreve dados no formato texto em um arquivo do sistema de arquivos do SDCARD;
o arquivo precisa estar aberto no modo OPEN_FILE_WRITE_TXT ou
OPEN_FILE_APPEND_TXT. É um bloco de função (mantém estado entre scans;
requer instância).
Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função
Bloco de função
FS_WRITE_DATA_TEXT
+-------------------+
BOOL ----|START DONE|---- BOOL
| |
INT ----|FD RESULT|---- INT
| |
----|DATA_VALUE --------|----
+-------------------+
A escrita é iniciada colocando START em TRUE; se START voltar a FALSE
antes do término, o bloco é resetado. O descritor FD é o valor retornado por
FS_OPEN_FILE. O texto a ser gravado é passado em DATA_VALUE. Para
inserir os caracteres de controle CR + LF ('\n') ao final de uma linha,
concatene à string a sequência '$0D$0A'. Ao concluir, DONE gera um pulso
de um scan e o resultado deve ser lido em RESULT.
Nota
Antes de utilizar este bloco de função, consulte no manual do controlador utilizado se o mesmo possui suporte para sistema de arquivos no SDCARD.
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
START |
IN |
BOOL |
FALSE |
— |
Ativa a execução (TRUE). Voltar a FALSE antes do término reseta o bloco. |
FD |
IN |
INT |
0 |
— |
Descritor do arquivo aberto, obtido em FS_OPEN_FILE. |
DATA_VALUE |
IN_OUT |
ANY |
— |
— |
String com o texto a ser escrito no arquivo. |
DONE |
OUT |
BOOL |
FALSE |
— |
Pulso (um scan) indicando o fim da execução; leia |
RESULT |
OUT |
INT |
0 |
RET_CODE |
Código de retorno da execução (ver Códigos de retorno). |
Códigos de retorno
RESULT é do tipo RET_CODE. Use os identificadores com o namespace
HILS (ex.: HILS.RE_WRITE_ERR). Códigos mais comuns deste bloco:
Código |
Identificador |
Significado |
|---|---|---|
0 |
SUCCESS |
Escrita realizada com sucesso. |
5 |
GL_INV_PAR |
Parâmetro(s) inválido(s). |
7 |
GL_UNA_CMD |
Comando não disponível ou não implementado. |
8 |
GL_INV_STT |
Estado corrente inválido. |
10 |
GL_CMD_TMO |
Timeout na execução do comando. |
24 |
RE_NOT_AVA |
Sem suporte para o sistema de arquivos ou SDCARD não detectado. |
32 |
RE_WRITE_ERR |
Falha no processo de escrita do recurso. |
33 |
RE_NOT_INIT |
Recurso não inicializado. |
167 |
FS_CORRUPT |
Sistema de arquivos pode estar corrompido. |
168 |
FS_INV_OPER_MODE |
Modo de operação incompatível com o estado do arquivo. |
177 |
FS_INVALID_HANDLE |
Handle de arquivo aberto inválido. |
Lista completa dos códigos de retorno: RET_CODE - Códigos de retorno do firmware G5.
Pré-condições
O arquivo deve estar aberto no modo
OPEN_FILE_WRITE_TXTouOPEN_FILE_APPEND_TXT(ver FS_OPEN_FILE).O equipamento deve ter suporte a sistema de arquivos no SDCARD.
Observações
DONEfica ativo por apenas um ciclo de scan; consulteRESULTnesse pulso.Para quebrar linha no arquivo texto, concatene
'$0D$0A'(CR + LF) à string.
Ver também
FS_OPEN_FILE, FS_CLOSE_FILE, FS_WRITE_DATA_FILE, FS_READ_DATA_TEXT
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
STR_DATA : STRING; (* Texto desejado para ser escrito no arquivo *)
STR_LOG : STRING; (* Texto a ser escrito no arquivo *)
STR_CR_LF : STRING := '$0D$0A'; (* CR + LF, caracteres de controle '\n' (linefeed) *)
MY_START : BOOL := FALSE; (* Ativação da função *)
FILE_FD : INT; (* Descritor do arquivo a ser realizado a escrita de dados *)
WRITE_FILE : HILS.FS_WRITE_DATA_TEXT; (* Instância do bloco "FS_WRITE_DATA_TEXT" *)
END_VAR
(* ====================================================== *)
(* Exemplo de escrita de uma String no arquivo *)
(* ====================================================== *)
(* Texto desejado a ser salvo no arquivo. Utilize funções de manipulação
de string para montar este texto dinamicamente pela aplicação. *)
STR_DATA := '21/11/2021 09:13:32; 28.5 oC; 53.0 %;';
(* Acrescenta CR + LF na string a ser gravada no arquivo texto *)
STR_LOG := CONCAT(STR_DATA, STR_CR_LF); (* concatena '\n' *)
(* Preenche parâmetros para a chamada do bloco de função *)
FILE_FD := 0; (* Descritor do arquivo (obtido em FS_OPEN_FILE) *)
MY_START := TRUE; (* Ativação do bloco da função *)
(* Ativação da função FS_WRITE_DATA_TEXT *)
WRITE_FILE(
START := MY_START, (* [BOOL] Ativação da função *)
FD := FILE_FD, (* [INT] Descritor do arquivo *)
DATA_VALUE := STR_LOG (* [ANY] String para salvar no arquivo *)
);
(* Aguarda o término da execução da função do sistema de arquivos *)
IF WRITE_FILE.DONE THEN
MY_START := FALSE; (* Reseta a ativação da função *)
IF WRITE_FILE.RESULT = HILS.SUCCESS THEN
(* ... Função executada com sucesso *)
;
ELSE
(* ... Erro na execução da função *)
;
END_IF;
END_IF;