Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: kimlenbu - 28 Nisan 2014, 14:31:59

Başlık: strcat ve memset komutlarının harcadığı süre
Gönderen: kimlenbu - 28 Nisan 2014, 14:31:59
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 ?
Başlık: Ynt: strcat ve memset komutlarının harcadığı süre
Gönderen: X-Fi - 28 Nisan 2014, 18:19:00
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);