Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: baran123 - 01 Mart 2015, 21:05:37

Başlık: Karekterleri alıp stringe çevirme
Gönderen: baran123 - 01 Mart 2015, 21:05:37
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.
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: Salih - 01 Mart 2015, 21:19:02
Gelen karakterleri bir diziye ekle, karakterler bitince, en sona 0 (null) değerini ekle. Artık bir C tipi string elde etmiş olursun.
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: baran123 - 01 Mart 2015, 21:50:15
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();
   }
}
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: Salih - 01 Mart 2015, 22:10:08
time[y]

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

en son

time[y+1] = 0

yapın.
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: baran123 - 01 Mart 2015, 22:21:07
şö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();
   }
}
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: Salih - 01 Mart 2015, 22:25:58
time[y + 1] = 0;

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

time[y ] = 0;
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: baran123 - 01 Mart 2015, 22:30:59
Yine aynı ???
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: Salih - 01 Mart 2015, 22:39:36
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.
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: baran123 - 01 Mart 2015, 22:48:34
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);
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: Salih - 01 Mart 2015, 23:01:19
Oled_ConstText(time, 0, 4);

Bu fonksiyonu iyice denedin mi?
Bir tek o kalıyor.
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: baran123 - 01 Mart 2015, 23:10:15
evet calıyor onda hıc bır problem yok hocam
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: Salih - 01 Mart 2015, 23:14:29
Bende fikir bitti. :)
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: baran123 - 01 Mart 2015, 23:24:22
Kurcalayayım biraz alakasız bir yerde hata yapıyorum sanrım teşekkürler :)
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: Gökhan BEKEN - 01 Mart 2015, 23:41:11
teamviewer ile bağlan bakalım.
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: baran123 - 02 Mart 2015, 01:18:19
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. :)
Başlık: Ynt: Karekterleri alıp stringe çevirme
Gönderen: RaMu - 03 Mart 2015, 00:24:24
Onunda çözümü var.