CCS C RS232 gets()

povulon

Üye
Katılım
25 Eyl 2009
Mesajlar
58
Puanları
1
Yaş
37
Merhaba

bilgisayardan seri port terminal programı ile herhangi bir kelime gönderiyorum ve bu string ifadeyi pic e aktarıp Lcd ekranda görmek istiyorum

pic programda char veri[80]; olarak tanımladım ve

int rda kesmesinin içinde
gets(veri) kısmına geldiğinde program burda takılıyor netteki tüm örnekler bu tarzda fakat yapamadım bi türlü


neden burda takılıyor

Ama

char k;


k=getc ();

yaptığımda veriyi tek harf olarak alıyorum sorun yok
 
programı gönderiyorum
 

Ekli dosyalar

  • program.JPG
    55.2 KB · Görüntüleme: 122
tek sorunum gets() komutu bu konuda yardımcı olabilirseniz memnun olurum teşekkürler
 
char *gets(char *str);
fonksiyonu stdin dosyasından '\n' karakteri girene kadar okuma yapar. Okuduğu karakterleri parametresi ile verilen adrese yerleştirilir.
'\n' karakteri yerine yazının sonuna '\0' karakteri koyar.

printf ile yazdırırken %s kullanmalısın.
 
bu konuyu yeni öğreniyorumda
char *gets(char *str); bu komutu nasıl kullanıcam programda nereye yazıcam
 
gets fonksiyonu standart c fonksiyonudur.
gets fonsksiyonunu ben genel olaraka açıkladım.
char *gets(char *str) fonksiyon prototipidir.
Yani sen bu fonksiyonu kullanacağın zaman gets(klavye) demende yanlış bir şey yok,
klavye den yazıp entera basınca gets fonksiyonu klavye değişkeni içine o değeri yazar.
Bu okuduğun değer string ifade yani karakter dizisi olduğundan, printf ile yazdırırken %c yerine %s kullanmalısın.
 
programı ben proteus programı ile sanal olarak çalıştırıyorum acaba protesu programı yüzündenmi takılıyor olabilirmi
henüz gerçek deneme yapmadım
 
bilmiyorum. Ben programlama dili standartları ne diyorsa onu dedim.
bu tür standart okuma yazma fonksiyonları stdin stdout dosyalarına okuyup yazar.
printf deki %c leri %s ile değiştirip denediniz mi?
ve hata tam olarak nasıl?
 
TTL yada UART tipleri RS232 haberleşme tipleridir. Bazı entegreler direk TTL çalışır bazıları da UART.
Dikkat edilecek husus seri portdan gönderdiğiniz sinyali bir echo yazılımı (entegre içinde) reverse etmeniz gerekir ki sizin gönderdiğiniz sinyalin entegre tarafından nasıl yordamlandığını görebilesiniz. Line Feed konusunu arkadaşlar yazmışlar. Her cümlenin sonunda konuşmanın bittiğini gösteren bir im bulunması gerekir ki siz ikinci cümleye başlayabilesiniz.
Ayrıca IC ye gönderilen datanın belirli bir kalıpla terslenmesi gerekir yoksa saçma sapan bir veri gönderilmiş olunur.

Bknz. UART to TTL vs.
 
bilmiyorum. Ben programlama dili standartları ne diyorsa onu dedim.
bu tür standart okuma yazma fonksiyonları stdin stdout dosyalarına okuyup yazar.
printf deki %c leri %s ile değiştirip denediniz mi?
ve hata tam olarak nasıl?

denedim defalarca fakat aynı gets(klavye) komutunda takılıp kalıyor verinin gelmesini bekliyor

fakat sadece karakter gönderdiğimde sorun yok yani k=getc(); gibi bir komut yazdığımda karakteri Lcd de görebiliyorum

ama string okuyamıyorum
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…