SD deki txt nin içinde arama yapmak

Merhaba arkadaşlar SD karta sorunsuz şekilde txt oluşturup içine istediğim verileri yazabiliyorum. Daha sonra bu SD deki textin içinde arama yapmam gerekiyor.Nasıl yapabilirim?substring,strstr gibi fonksiyonları denedim ancak çıktı alamadım.

sd karttan önce veriyi okuyup bir buffer içine koyup onun içinde strstr ve indexof gibi fonksiyonlarla ararsınız.

Merhaba hocam file = SD.open(“val.txt”); if (file) { while (myFile.available()) { byte okunan=file.read(); Serial.print(okunan); } bu şekilde okumaya çalışıyorum.Serial monitorden tüm kolonları görebiliyorum.Fakat üzerinde bir fonksiyonla işlem yapmaya çalıştığımda değişkenin içindekileri unicode olarak değil decimal olarak işleme alıyor.sonuç negatif char byte string türleri arasında dönüştürme yapıp denedim ancak çıktı alamadım.

fonksiyondan da ornek koyarmısınız.

file = SD.open(“val.txt”); if (file) { while (myFile.available()) { byte okunan=file.read(); Serial.print(okunan.substring(3,8)); } okunan değişkenini ne tanımlarsam tanımlayayım veriler byte byte geliyor.Yani texti byte byte okuyor.Galiba fonksiyon bu yüzden düzgün çalışmıyor.Ancak arama yapacağım txt de 45 000 000 dan fazla karakter var nasıl bir tampon ile okuma yapmalıyım?

okomanın dediği gibi okuduklarının hepsiniş önce bir buffer a alıp sonra arama yapabilirsin. Önceki kodda karakter karakter okuyup anlık olarak Serial monitöre basıyosun veriyi. file = SD.open(“val.txt”); String tmp = “”; if (file) { while (file.available()) { tmp +=(String)file.read(); } Serial.print(tmp.substring(3,8)); } Bunu dener misin?

bir kaç düzenleme yapıp denedim.Ancak veriler unicode olarak değil decimal olarak geliyor maalesef bu yüzden içinde arama ve karşılaştırma yapamıyorum

pardon ben sadece algoritmada sorun var sanmıştım. bu şekilde decimal veriyi stringe dönüştürüp arayabilirsin. file = SD.open(“val.txt”); String tmp = “”; if (file) { while (file.available()) { char c = (char)file.read(); tmp +=c; } Serial.print(tmp.substring(3,8)); } ben bu şekilde kullanıyorum çalışıyor.

if (myFile) { while (myFile.available()) { c = (char)myFile.read(); tmp += c; } for (int a = 0; a < 400; a = a + 10) { say++; met=“”; b = b + 10; met = (tmp.substring(a, b)); Serial.print(met); if (met == “ORNEK”) { Serial.print(met+" Kayitlarda var “); Serial.print(say+ " kadar islem sonunda bulundu”); } //Serial.print(tmp); } } şu şekilde çalışıyor ancak 1500 karakterlik bi texti 4-5 sn de arayabiliyor.Benim tam aratmak istediğim text ise 500 000 civarı karater var tmp ye bunu alması mümkün değil zaten birde karşılaştırması var.400 ü 40 000 yaptım 8 dk bekledim ve hala sonuç verememişti.Yani farklı bi algoritmaya ihtiyacım var.Teşekkürler ama yinede küçük txtlerde iş görür.

kaydederken veriyi tasnifleyin ayrı bir txt dosyada index tutun

void tara() { for(int x=1; x<sayisi x string acilacak=" " myfile=“SD.open(acilacak);” if while c=“(char)myFile.read();” tmp serial.print myfile.close veriyi byte l txtlere b … txt ye giriyor kar kapat tamponu temizliyor.sonra … ama yine fazla y d devam etmedim.bu tampon bellek problemini asl veri zaten tek tip hocam tasniflemek zor. derken mi ve nas kullan bu indexlemeyi for un i :int neden farkl g bilmiyorum :d>

verinin bir kısmını indexleyin neyi arıyorsanız ona göre kolay ulaşılacak bir index geliştirin hiç database kullanamdınızmı işlerinizde.

Bilgisayarda genellikle accdb kullandım arduinoda nasıl yapabilirim hiç bir fikrim yok

Merak eden arkadaşlar için.Denediğim algoritmalardan iyi sonuç alamadım en iyi algoritmada 64000 karakterlik txt de arama yapması yaklaşık 10-12 dk sürdü(inanın diğerlerine göre çok iyi).Çok farklı şekilde txtlerin içini okumadan basit görünen bir algoritma oluşturdum.Taranacak txt yi 8 byte lık dilimlere böldüm ve her biri için bir txt oluşturdum.Ve aramayı şu şekilde yaptım. file=SD.open(gelenkk+“.txt”); if (file) { //Bulundu } else{ //Bulunamadı } 55 Bin txt var SD içinde. Ancak şimdi de txt olan bir veri geldiğinde çok kısa sürede tepki verirken, kayıtlarda bulunmayan bir veri geldiğinde yaklaşık 10 sn bekliyor(sd tarıyor).Beklediği yer kesinlikle burası başka bir algoritma veya önerisi olan var mı? Teşekkürler.