strcat ve memset komutlarının harcadığı süre

Başlatan kimlenbu, 28 Nisan 2014, 14:31:59

kimlenbu

Selamlar,

Üzerinde çalıştığım cihazda menü tasarımlarını grafik olarak tasarlayıp rgb565 formatında sd karta atıyorum ve STM32F4 ile okuyup ekrana basıyorum.

Eskiden klasör kullanmıyordum, şimdi ingilizce menü de eklemem gerektiğinden Türkçe grafikleri system/TR klasörüne attım.

Eskiden direkt dosya adını verip açıyordum şu şekilde :

res=f_open(&fsrc, fname , FA_READ | FA_OPEN_EXISTING);


şimdi dosyanın tam yolunu vermek ya da dizini değiştirmek zorundayım, o yüzden şöyle bir kod kullandım :

memset(tmpStr27, '\0', sizeof (tmpStr27));
	strcat(tmpStr27,"0:/system/TR/");
	strcat(tmpStr27,fname);
	res=f_open(&fsrc, tmpStr27 , FA_READ | FA_OPEN_EXISTING);


bu kod çalışıyor ama eskiden ekrana tabiri caizse çötenk diye basılan grafikler arasında oldukça büyük sayılabilecek gecikmeler oluştu ve ekrana atıyorum 10 grafik basıyorsam bunların gösterilme sırasını tek tek görebiliyorum.

Bu dosya yolu işini minimum gecikmeyle nasıl yapabilirim ?

X-Fi

Aslında memset demenize gerek yok eski stringin üzerine yazar sonunu NULL ile kendisi kapatır. Temizlemeye ihtiyaç olmaz.

Bu kısmı;
   
memset(tmpStr27, '\0', sizeof (tmpStr27));
strcat(tmpStr27,"0:/system/TR/");
strcat(tmpStr27,fname);
res=f_open(&fsrc, tmpStr27 , FA_READ | FA_OPEN_EXISTING);


Bu şekilde değiştirip deneyin daha hızlı çalışacaktır.

    
sprintf(tmpStr27,"0:/system/TR/%s",fname);
res=f_open(&fsrc, tmpStr27 , FA_READ | FA_OPEN_EXISTING);
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)