Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

rs232 string iletisimi

Başlatan selvi, 31 Temmuz 2013, 20:36:03

selvi

char data[]="ccs";

fputs(data,iletisim_1);

seklinde string ifadesini yolladigimda alici almiyor.ama karakterleri alabiliyor.
Yaşam anlamlandırıldıkça kutsaldır....

skara1214

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

selvi

Yaşam anlamlandırıldıkça kutsaldır....

MrDarK

Alıntı yapılan: skara1214 - 31 Temmuz 2013, 21:44:32
sonuna \r ekle

puts komutu CCS'de otomatik olarak textin sonuna /r/n ekliyor ama şunu söylemek istiyorum dizinizin sonuna null karakteri eklemenizi tavsiye ederim.

yani ;

char data[]="ccs\0";

dipnot:Null karakteri 0x00'dır bunu text ortamında ifade etmek için ters slaş 0 koyuyoruz.
Picproje Eğitim Gönüllüleri ~ MrDarK

selvi

  belirttiginiz sekilde anladigim kadariyla kodlari duzenledim simulasyonda denedim olmadi.verici ve alici programlarini asaidaki sekildedir.

verici kismi:
#include <16f877.h>     // Kullanýlacak denetleyicinin baþlýk dosyasý tanýtýlýyor.

// Denetleyici konfigürasyon ayarlarý
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanýlacak osilatör frekansý belirtiliyor.

#use fast_io(a)
#use fast_io(b)
#use fast_io(c)

#define buton pin_A0

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1, stream=iletisim_1) // RS232 protokolünün 9600 bit/sn baud hýzýnda olacaðýný ve
                                                                  // TX,RX uçlarýnýn hangi pinler olacaðýný tanýmlýyor
char data[]="ccs\0";                                                                  // parity bitinin olmadýðýný, stop bitinin 1 bit olacaðý belirtiliyor

void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dýþý
   setup_timer_1(T1_DISABLED);     // T1 zamanlayýcýsý devre dýþý
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayýcýsý devre dýþý
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriþ yok
   setup_adc(ADC_OFF);             // ADC birimi devre dýþý
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dýþý
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dýþý
  
   set_tris_c(0x00);
   set_tris_b(0x00);
   set_tris_a(0x01);

   while(1) // Sonsuz döngü
   { 
     if (input(buton))
     {
        fputc(0x55,iletisim_1);
        fputc(0x55,iletisim_1);
        fputc(0x55,iletisim_1);
        fputc(0x55,iletisim_1);
        fputc(0x55,iletisim_1);
        
        fputc('s',iletisim_1);
        
        fprintf(iletisim_1,data);
  
        while(input(buton));
     }
   }
}


alici kismi:
#include <16f877.h>     // Kullanýlacak denetleyicinin baþlýk dosyasý tanýtýlýyor.

// Denetleyici konfigürasyon ayarlarý
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanýlacak osilatör frekansý belirtiliyor.

#use fast_io(b)
#use fast_io(c)

#define led pin_B0

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1, stream=iletisim_1) // RS232 protokolünün 9600 bit/sn baud hýzýnda olacaðýný ve
 
char data[]="ccs\0";    // TX,RX uçlarýnýn hangi pinler olacaðýný tanýmlýy   
 
char sifre[3];                                                      // parity bitinin olmadýðýný, stop bitinin 1 bit olacaðý b

void main ( )
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dýþý
   setup_timer_1(T1_DISABLED);     // T1 zamanlayýcýsý devre dýþý
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayýcýsý devre dýþý
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriþ yok
   setup_adc(ADC_OFF);             // ADC birimi devre dýþý
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dýþý
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dýþý
  
   set_tris_c(0b10000000);
   set_tris_b(0x00);

  output_b(0x00);
  
   while(1)
   {
      if(fgetc(iletisim_1)=='s')
      {
             if(fgets(sifre,iletisim_1)==data)
             {
               output_high(led);delay_ms(500);output_low(led);delay_ms(500);
             }
      }
   }
}


Yaşam anlamlandırıldıkça kutsaldır....

MrDarK

Verici kısmı kontrol ederken ne kullanıyorsun isis şemanı ekleyebilir misin , hiç mi yazı gelmiyor yoksa sadece ccs mi görmüyorsun ??
Picproje Eğitim Gönüllüleri ~ MrDarK

selvi

vericide buton a basildiginda alicida led yanyor.yani "ccs" bilgisi butona basilirak yollanir eger alicida bilgi dogrulandiginda led yaniyor.seklinde programi yazdim.
Yaşam anlamlandırıldıkça kutsaldır....