CCS ' de gönderilen veriden sonra "enter tuşuna basma" işlemi yapan komut ekleme

Başlatan yasin_arsln, 28 Haziran 2013, 23:22:19

yasin_arsln

Arkadaşlar merhaba,

Bir çalışmamda bilgisayarla RS232 ile kontrol edilecek  bir motor sürücüyü pic ile kontrol etmek istiyorum. Pic olarak çift Uart donanımlı 18F45k22 kullanıyorum. İlgili sürücüyü bilgisayardan kontrol ederken komutları hyper Terminal ile gönderdikten sonra enter tuşuna basmam gerekiyor. Ben ilgili komutları gönderen kodları yazdım fakat enter tuşuna basılmadığı için işlem yapmıyor.CCS 'de böyle bir komut varmıdır. Fprintf("gönderi\n\r"(enter tusuna basılacak),iletisim_1) şekilde bir veri göndermem gerekiyor. Şimdiden Teşekkürler.

Salih

Özel komuta gerek yok. Enter tuşu (CR) desimal 13 değerindedir. Gelen karakterleri kontrol et,
13 değerinde karakter gördüğünde eylemi gerçekleştir.

skara1214

Herkes ölür ama herkes gerçekten yaşamaz

yasin_arsln

sıkıntıyı 0x0d yollayarak proteusda çözdüm. Fakat devremi kurduğumda rs232 den veri gönderemiyorum. PIC olarak 18F46k22 kullanıyorum tx1 ve rx1 i max485 ile usb-to-rs485 üzerinden tx2 ve rx2 yi de max232 den usb-to-Rs232 ile bilgisayara bağlıyorum. Rs485 ile iletişim sorunsuz fakat RS232 ile bir türlü bağlantı kuramıyorum. sorunu çözemedim. Max 232N ile yaptığım devrenin bağlantısı.

yasin_arsln

Arkadaşlar merhaba, İletişim sorunlarımı hallettim fakat enter'e basma yani hyperterminalde "stp" şeklinde yazılan komutu sisteme klavyeden enter tuşuna basarak yollanıyor.
Fprintf(iletisim_2,"STP\n\r");
Putc(0x0d);

gönderdiğimde hyperterminalden ekrana geri dönüş olarak

STP
i´¨~æß gibi karakterlerle dönüyor. sorun nerede bulamadım. \r satır başı demek bu varsa enter komutu göndermemize gerek varmı?

kralsam

Alıntı yapılan: yasin_arsln - 15 Temmuz 2013, 12:32:35
Arkadaşlar merhaba, İletişim sorunlarımı hallettim fakat enter'e basma yani hyperterminalde "stp" şeklinde yazılan komutu sisteme klavyeden enter tuşuna basarak yollanıyor.
[b]Fprintf(iletisim_2,"STP\n\r");[/b]
Putc(0x0d);

gönderdiğimde hyperterminalden ekrana geri dönüş olarak

STP
i´¨~æß gibi karakterlerle dönüyor. sorun nerede bulamadım. \r satır başı demek bu varsa enter komutu göndermemize gerek varmı?

Komut kısımda yer alan \n\r yerine \r\n yazmalısın. Sırası yanlış olmuş.

Kolay gelsin.

esensoy

çok daha fazla özellikli terminal programları var, hyper terminal i hemen değiştirmelisin bence,
terminal olarak ben "terminal by bray" diye bir program kullanıyorum, şiddetle tavsiye ederim,
En tehlikeli an "zafer" anıdır.

MrDarK

Picproje Eğitim Gönüllüleri ~ MrDarK

yasin_arsln

Arkadaşlar sorunu çözdüm. sonuç olarak \r satır başı yapıyor enter tuşu işlevi görüyor. tekrardan fputc(13,iletisim2 ) yapıldığında saçmalıyor. İlk başta görememin nedeni iletişim için bekleme zamanı vermemişim. Bunuda Hyper terminal'de ayarlar kısmında ascıı setupda bekleme süresi eklemek gerekiyor.

Şuan çift usart donanımı ile veri gönderimi yapabiliyorum. RS232 ile gönderdiğim veri işlev görüyor ve bir cevap gönderiyor. Tekrar geri dönen bilgiyi RS232'den alıp RS485'e üzerinden görmeyi deniyorum. Bunun için önerilere ihtiyacım olacak. Fgetc() fonksiyonunu kullandım ama olmadı.

ISIS'de tek denetleyici iki virtual terminal ile simulasyon yapıyorum. Rs485 ile gönderdiğim komut işlevini yaptıktan sonra Rs232 iletişiminin bağlı olduğu virtual terminal 'de işlem sonucu dönüyor. Buraya yazdığım veriyi tekrardan işleyip rs485 ile yazdırmak istiyorum.
Yazdığım kodun ilgili bölümü aşağıdadır.
         case(RUN_GONDER) :
                                 delay_ms(10);
                                 Fprintf(iletisim2,"RUN\n\r");
                                 delay_ms(10);
                                 gln_veri=fgetc(iletisim2); //PROGRAM BURADA takılı kalıyor.
                                 delay_ms(10);                                   
                                 output_high(RS485_ReceiveTransmit); //Rs485 yazma modunda 
                                 fprintf(iletisim1,"%c\n\r",s);
                                 ilkDurum=BASA_DON;
                                 break;