Amigos, tenho a necessidade em meu projeto, em realizar a busca ráida, num arquivo .TXT, de um ID(Ex."999999"), String, contido em uma lista com mil registros (ID, NOME).

Hoje, realizo a leitura por cada linha desse arquivo, tornando muito demorado o processo de identificação de um registro. Sendo assim, gostaria de saber se alguém conhece uma forma rápida de busca. Grato!

Exibições: 730

Responder esta

Respostas a este tópico

Pode armazenar dados em um SD Card ? 

Sim.

Qual a velocidade da comunicação SPI que esta usando?:

9600

Renato , estou perguntando a velocidade de comunicação da interface SPI do cartão SD com o Arduino.
Velocidade lenta = pesquisa lenta !

Eu usaria um ESP8266 NodeMCU, que tem 1Mb de memória para código e 3MB de memória para armazenamento de dados (SPIFFS).

E tem também uma boa biblioteca de funções para acesso de leitiura e gravação.

Bom, não sei o que mais sua aplicação precisa fazer, mas com um ESP8266 você tem vários I/O digitais e um analógico.

Grato pela indicação Odilon!

Mestre, desculpe a grande latência!
Estou em um projeto que tenho essa mesma necessidade. Por ventura, você conseguiu resolver esse problema? Tenho alguns passos vencidos. Podemos os ajudar. Um abraço.

Faria assim:

Criaria uma rotina que gera um arquivo novo, de índice, para facilitar a busca.

Ele simplesmente abriria do arquivo original, em texto, para leitura e um novo, binário, para escrita.

Usando um buffer (por ex um array de 512/4=128 longints ) leria o primeiro numero, converteria para um longint e escreveria no array[0], idem, [1], etc.

Completou 128 grava no SD com o comando arquivo.write(buf, n)

A quantidade 512 é chave, que eu saiba, para bom funcionamento da lib.

Esse comando escreve o bloco todo, muito mais rápido que ficar buscando dado a dado.

Aih para a leitura idem, vc busca com .read um jogo de 128 numeros. Verifica se o desejado está dentro com um for() e já busca mais 128. Acesso super rápido, se comparado ao arquivo convencional.

Achado o numero vc anota a posição. Daí vc le o arquivo original até a linha x.

Não sei se realmente resolve pra vc, mas deve ajudar.

O ideal mesmo seria ter isso tudo em memoria, usando um microcontrolador com mais memória.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço