FS_READ_DATA_TEXT

Realizar a leitura de dados em um arquivo de dados no sistema de arquivos do SDCARD no formato Texto.

Para executar a função é necessário que o arquivo esteja aberto no modo OPEN_FILE_READ.

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.

Bloco

           FS_READ_DATA_TEXT
         +-------------------+
BOOL ----|START          DONE|---- BOOL
         |                   |
 INT ----|FD           READED|---- INT
         |                   |
 INT ----|DATA_LEN     RESULT|---- INT
         |                   |
     ----|DATA_VALUE --------|----
         +-------------------+

Parâmetros

Nome

Classe

Tipo

Dim.

V. Ini.

Descrição

START

Entrada

BOOL

FALSE

Ativação da função

FD

Entrada

INT

0

Descritor do arquivo a ser relizado a leitura de dados

DATA_LEN

Entrada

INT

0

Tamanho maximo de cacareres a serem lidos do arquivo (bytes)

DATA_VALUE

Entrada/Saída

ANY

String para armazenar os dados lidos do arquivo

DONE

Saída

BOOL

FALSE

Pulso de fim de execução da função

READED

Saída

INT

0

Quantidade de dados efetivamente lidos do arquivo

RESULT

Saída

INT

0

Código de retorno da execução da função

Detalhamento dos Parâmetros

Parâmetro

Descrição

START

Deve ser colocado em “TRUE” para iniciar a execução. Caso seu valor seja alterado para “FALSE” antes do fim da operação, o bloco irá ser resetado.

FD

Descritor do arquivo a ser relizado a leitura de dados.

DATA_LEN

Neste parâmetro deve-se especificar o tamanho máximo da string especificada no parâmetro “DATA_VALUE”. Note que o tamanho máximo permitido para uma string é de 246 cacarcteres. Este parâmetro representa a quantidade máxima de caracteres a serem lidos no arquivo em um ciclo de leitura. Note que este parâmetro indica apenas a quantidade máxima de caracteres a serem lidos em cada ciclo de leitura no arquivo, mas efetivamente pode realizar a leitura de uma quantidade menor, caso encontre o fim da linha corrente no arquivo.

DATA_VALUE

Variável do tipo String para armazenar os caracteres lidos do arquivo. São lidos no máximo a quantidade de caracteres especificados no parâmetro DATA_LEN, ou até encontrar o fim da linha corrente no arquivo, através do caracter ‘\n’ (linefeed). Se atingir a quantidade máxima de caracteres especificada em DATA_LEN o ultimo caractere é reservado para delimitador de fim de string ‘\0’.

Exemplo 1: se DATA_LEN = 246, e a linha corrente no arquivo possui apenas 45 caracteres, a string retornada neste parâmetro possui tamanho 45 sendo delimitada pelo fim da linha corrente no arquivo.

Exemplo 2: se DATA_LEN = 50, e a linha corrente possui 60 caracteres, o primeiro ciclo de leitura retorna uma string com tamanho 49 com os primeiros 49 caracteres iniciais da linha corrente do arquivo, sendo o ultimo caractere desta string é utilizado pelo delimitador ‘\0’, e um segundo ciclo de leitura retorna os 11 caracteres restantes da linha corrente.

DONE

Pulso para indicar o término da execução da função. Após este pulso (fica ativo por apenas um ciclo de scan), o resultado da execução da função deve ser consultado no parâmetro de saída “RESULT”.

RESULT

Código de retorno associado a execução da função, onde:

Se for igual a 0: Função executada com sucesso, código HILS.SUCCESS

Se for diferente de 0: Falha na execução da função [3]

Segue alguns exemplos de códigos de retorno:

RESULT

LABEL [4]

Descrição

0

HILS.SUCCESS

Função executada com sucesso.

5

HILS.GL_INV_PAR

Parâmetro(s) inválido(s).

7

HILS.GL_UNA_CMD

Comando não disponivel ou nao implementado.

8

HILS.GL_INV_STT

Estado corrente inválido.

10

HILS.GL_CMD_TMO

Timeout na execução do comando.

11

HILS.GL_CMD_CAN

Comando cancelado.

16

HILS.GL_CMD_PEND

Tratamento do comando pendente.

24

HILS.RE_NOT_AVA

Sem suporte para o sistema de arquivos ou SDCARD não detectado.

27

HILS.RE_RES_EMP

Buffer do recurso vazio.

31

HILS.RE_READ_ERR

Falha no processo de leitura do recurso, ou fim de arquivo.

33

HILS.RE_NOT_INIT

Recurso não inicializado.

167

HILS.RC_FS_CORRUPT

Sistema de arquivo pode estar corrompido.

168

HILS.RC_FS_INV_OPER_MODE

Modo de operação incompátivel com estado do arquivo.

177

HILS.RC_FS_INVALID_HANDLE

Handle de arquivo aberto inválido.

Exemplo

Declaração de variáveis

Nome

Tipo

Valor Inicial

Descrição

STR_DATA

STRING

String para armazenar o texto lido do arquivo

MY_START

BOOL

FALSE

Ativação da função

FILE_FD

INT

Descritor do arquivo a ser realizado a escrita de dados

READ_FILE

FS_READ_DATA_TEXT

Instância do bloco “FS_READ_DATA_TEXT”

Clique aqui para baixar a tabela de variáveis

Código ST

//============================================================================
// Exemplo de ativação da função FS_READ_DATA_TEXT, para leitura de uma
// string do arquivo
//============================================================================

// Preenche parâmetros para a chamada do bloco de função
FILE_FD    := 0;                // Descritor do arquivo
MY_START   := TRUE;             // Ativação do bloco da função

(* ... *)

// Exemplo de ativação do bloco de função FS_WRITE_DATA_TEXT
READ_DATA_TEXT(  // FS_READ_DATA_TEXT
  START      := MY_START,  // [BOOL] Ativação da função
  FD         := FILE_FD,   // [INT] Descritor do arquivo
  DATA_VALUE := STR_DATA,  // [ANY] String para armazenar os dados lidos do arquivo
  DATA_LEN   := 246        // [INT] Tamanho maximo em bytes dos caracteres a serem lidos


// Aguarda término da execução da função do sistema de arquivos
if (READ_DATA_TEXT.DONE) then

  MY_START := FALSE;     // Reseta ativação da função

  // Testa código de retorno da execução da função
  if (READ_DATA_TEXT.RESULT = HILS.SUCCESS) then
    // ... Função executada com sucesso

    // Exemplo de string retornada lida do arquivo
    //
    // '21/11/2021 09:13:32; 28.5 oC; 53.0 %;'
    //
    // OBS.: Utilizar funções de manipulação de string para processar
    //       dinamicamente o texto lido do arquivo

  else
    // ... Erro na execução da função
  end_if;

end_if;

(* ... *)