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 em seguida.

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_TXT ou OPEN_FILE_APPEND_TXT (ver FS_OPEN_FILE).

  • O equipamento deve ter suporte a sistema de arquivos no SDCARD.

Observações

  • DONE fica ativo por apenas um ciclo de scan; consulte RESULT nesse 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;