FS_LEN_FILE
Obtém o tamanho, em bytes, de um arquivo no sistema de arquivos do SDCARD,
identificando o arquivo pelo seu descritor (FD) ou pelo seu nome/caminho
(NAME), conforme o modo selecionado em ACCESS. É um bloco de função
(mantém estado entre scans; requer instância) e exige controlador com suporte a
sistema de arquivos.
Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função
Bloco de função
FS_LEN_FILE
+---------------+
BOOL ----|START DONE|---- BOOL
| |
HILS.FS_TYPE_ACCESS_FILE ----|ACCESS RESULT|---- INT
| |
INT ----|FD LEN|---- LINT
| |
STRING ----|NAME --------- |----
+---------------+
Coloque START em TRUE para iniciar a operação; se START voltar a FALSE
antes do término, o bloco é resetado. O parâmetro ACCESS seleciona como o
arquivo é identificado: HILS.ACCESS_FILE_BY_FD usa o descritor em FD (não
requer NAME); HILS.ACCESS_FILE_BY_NAME usa o caminho em NAME (não
requer FD). Ao final, DONE gera um pulso de um scan indicando que o
resultado já pode ser consultado em RESULT e o tamanho em LEN.
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 do bloco; retornar a FALSE antes do término reseta o bloco. |
ACCESS |
IN |
HILS.FS_TYPE_ACCESS_FILE |
0 |
ACCESS_FILE_BY_FD / ACCESS_FILE_BY_NAME |
Modo de especificação do arquivo: por descritor ( |
FD |
IN |
INT |
0 |
— |
Descritor do arquivo. Necessário quando |
NAME |
IN_OUT |
STRING |
— |
— |
Caminho completo do arquivo (inicia com |
DONE |
OUT |
BOOL |
FALSE |
— |
Pulso de fim de execução (ativo por um scan); nesse instante consulte |
RESULT |
OUT |
INT |
0 |
RET_CODE |
Código de retorno da execução (ver Códigos de retorno). |
LEN |
OUT |
LINT |
0 |
bytes |
Tamanho do arquivo, em bytes. |
Códigos de retorno
RESULT é do tipo RET_CODE. Use os identificadores com o
namespace HILS (ex.: HILS.SUCCESS). Códigos mais comuns deste bloco:
Código |
Identificador |
Significado |
|---|---|---|
0 |
SUCCESS |
Função executada 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. |
11 |
GL_CMD_CAN |
Comando cancelado. |
16 |
GL_CMD_PEND |
Tratamento do comando pendente. |
24 |
RE_NOT_AVA |
Sem suporte para o sistema de arquivos ou SDCARD não detectado. |
33 |
RE_NOT_INIT |
Recurso não inicializado. |
174 |
FS_NOTFOUND |
O arquivo não foi encontrado. |
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 controlador deve possuir suporte a sistema de arquivos no SDCARD.
Quando
ACCESS = HILS.ACCESS_FILE_BY_NAME,NAMEdeve conter o caminho completo, iniciando com/(diretório raiz) e com no máximo 64 caracteres. Exemplos:'/Dados.dat','/Pasta_1/Dados.dat','/PASTA_1/PASTA_2/Receita.cfg'.Quando
ACCESS = HILS.ACCESS_FILE_BY_FD,FDdeve conter um descritor válido de arquivo aberto.
Observações
O sistema de arquivos não é case sensitive:
'DADOS.DAT','Dados.Dat'e'dados.dat'referem-se ao mesmo arquivo.DONEfica ativo por apenas um ciclo de scan; consulteRESULTeLENnesse instante.
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
FILE_DADOS : STRING := '/DADOS.DAT'; (* Constante string com o nome do arquivo a ser obtido o tamanho *)
MY_START : BOOL := FALSE; (* Ativação da função *)
FILE_FD : INT; (* Descritor do arquivo a ser obtido o tamanho *)
ACCESS_MODE : HILS.FS_TYPE_ACCESS_FILE; (* Modo de especificação do acesso ao arquivo *)
FILE_NAME : STRING; (* Nome do arquivo, limitado a 64 caracteres *)
LEN_FILE : HILS.FS_LEN_FILE; (* Instancia do bloco "FS_LEN_FILE" *)
END_VAR
//============================================================================
// Exemplo de parametrização 1: Obtem tamanho no modo HILS.ACCESS_FILE_BY_FD
//============================================================================
// Preenche parâmetros para a chamada do bloco de função
FILE_FD := 0; // Descritor do arquivo a ser acessado
ACCESS_MODE := HILS.ACCESS_FILE_BY_FD; // Modo de acesso ao arquivo pelo seu FD
(* ... *)
//============================================================================
// Exemplo de FS_LEN_FILE no modo HILS.ACCESS_FILE_BY_FD
//============================================================================
// Preenche parâmetros para a chamada do bloco de função
MY_START := TRUE; // Ativação do bloco da função
(* ... *)
// Exemplo de ativação do bloco de função FS_LEN_FILE
LEN_FILE(
START := MY_START, // [BOOL] Ativação da função
ACCESS := ACCESS_MODE, // [TYPE_ACCESS_FILE] Tipo de especificação de acesso ao arquivo
FD := FILE_FD // [INT] Descritor do arquivo
);
// Aguarda término da execução da função do sistema de arquivos
if (LEN_FILE.DONE) then
MY_START := FALSE; // reseta ativação da função
// Testa código de retorno da execução da função
if (LEN_FILE.RESULT = HILS.SUCCESS) then
// ... Função executada com sucesso (tamanho disponível em LEN_FILE.LEN)
else
// ... Erro na execução da função
end_if;
end_if;
(* ... *)
//============================================================================
// Exemplo de parametrização 2: Obtem tamanho no modo HILS.ACCESS_FILE_BY_NAME
// de arquivo na raiz do sistema de arquivo
//============================================================================
// Preenche parâmetros para a chamada do bloco de função
FILE_NAME := FILE_DADOS; // Nome do arquivo '/DADOS.DAT' na raiz
ACCESS_MODE := HILS.ACCESS_FILE_BY_NAME; // Modo de acesso ao arquivo pelo nome do arquivo
(* ... *)
//============================================================================
// Exemplo de parametrização 3: Obtem tamanho no modo HILS.ACCESS_FILE_BY_NAME
// de arquivo dentro de um ou mais diretórios do sistema de arquivo
//============================================================================
// Preenche parâmetros para a chamada do bloco de função
FILE_NAME := '/Pasta_1/Dados.dat'; // Nome do arquivo 'Dados.Dat' dentro do diretório "/Pasta_1"
ACCESS_MODE := HILS.ACCESS_FILE_BY_NAME; // Modo de acesso ao arquivo pelo nome do arquivo
(* ... *)
//============================================================================
// Exemplo de FS_LEN_FILE no modo HILS.ACCESS_FILE_BY_NAME
//============================================================================
// Preenche parâmetros para a chamada do bloco de função
MY_START := TRUE; // Ativação do bloco da função
(* ... *)
// Exemplo de ativação do bloco de função FS_LEN_FILE
LEN_FILE(
START := MY_START, // [BOOL] Ativação da função
ACCESS := ACCESS_MODE, // [TYPE_ACCESS_FILE] Tipo de especificação de acesso ao arquivo
NAME := FILE_NAME // [STRING] Nome do arquivo a ser acessado
);
// Aguarda término da execução da função do sistema de arquivos
if (LEN_FILE.DONE) then
MY_START := FALSE; // reseta ativação da função
// Testa código de retorno da execução da função
if (LEN_FILE.RESULT = HILS.SUCCESS) then
// ... Função executada com sucesso
else
// ... Erro na execução da função
end_if;
end_if;
(* ... *)