Karekterleri alıp stringe çevirme

Başlatan baran123, 01 Mart 2015, 21:05:37

baran123

CCS de şöyle bir fonksiyon ile karakterleri alıp teker teker 2x16 ekrana basıyorum (karakterler USB den geliyor)
if(text == 'd')
   {
      for(x = 3; x <= count; x++)
      { 
         printf(lcd_putc,"%c",gelen_paket[x]);
      }
   }

gelen her karateri bir diziye sırayla alıp daha sonra bunu tek bir şekilde basacağım ama nasıl olacağını tam kestiremedimBir bakarsanız sevinirim kolay gelsin.

Salih

Gelen karakterleri bir diziye ekle, karakterler bitince, en sona 0 (null) değerini ekle. Artık bir C tipi string elde etmiş olursun.

baran123

Hocam şöyle bir şey denedim ama olmadı karışık şeyler gözüktü ekranda

void LcdOperations(char text)
{
   char time[10];
   
   if(text == 'c')
   {
      for(x = 3; x <= count; x++)
      { 
         time[x] =  gelen_paket[x];
      }
      time[count + 1] = '\0';
      Oled_ConstText(time, 0, 4);
   }
   
   if(text == 'd')
   {
      Oled_FillScreen(0x00);
      Info();
   }
}

Salih

time[y]


olsun ve y değişkeni sıfırdan başlasın.

en son

time[y+1] = 0


yapın.

baran123

şöyle yaptım ama şimdide ekranda tek bir anlamsız karakter çıkıyor

void LcdOperations(char text)
{
   unsigned int y = 0;
   char time[];
   
   if(text == 'c')
   {
      for(x = 3; x <= count; x++)
      { 
         time[y] =  gelen_paket[x];
         y++;
      }
      time[y + 1] = 0;
      Oled_ConstText(time, 0, 4);
   }
   
   if(text == 'd')
   {
      Oled_FillScreen(0x00);
      Info();
   }
}

Salih

time[y + 1] = 0;


bunu şöyle yaz, çünkü y++ çalışıyor zaten.

time[y ] = 0;

baran123


Salih

Gelen_paket içeriğinden eminmisin. Başka problem kaynağı gözükmüyor.
Gelen_paket içine bildiğin bir içerik kopyala ve  dene.

baran123

hocam programın başlangıcına şöyle bir şey yapıyorum fakat yine karışık şeyler gözüküyor ekranda anlamsız bir harf de değil
unsigned int y = 0;
   char time[10];
   
   gelen_paket[3] = 'a';
   gelen_paket[4] = 'b'; 
   gelen_paket[5] = 'c';
   gelen_paket[6] = 'd';
   
   for(x = 3; x < 7; x++)
   { 
      time[y] =  gelen_paket[x];
      y++;
   }
   time[y] = 0;
   Oled_ConstText(time, 0, 4);

Salih

Oled_ConstText(time, 0, 4);


Bu fonksiyonu iyice denedin mi?
Bir tek o kalıyor.

baran123

evet calıyor onda hıc bır problem yok hocam

Salih


baran123

Kurcalayayım biraz alakasız bir yerde hata yapıyorum sanrım teşekkürler :)

Gökhan BEKEN

Özel mesaj okumuyorum, lütfen göndermeyin.

baran123

Gökhan ağabey çözdü sağ olsun.
Kütüphanede fonksiyonun buffer değeri rom tanımlanmış bu yüzden değişken kullanamadım.Normal tanımlama ile çözüldü.
Neyse kaçtım ben bir süre yokum görüşmek üzere. :)