Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

seri haberleşmede karakter sorunu

Başlatan iguruz, 28 Nisan 2008, 12:56:41

iguruz

Merhaba ,
Aşagıdaki kodda seri haberlerşme yapıyorum gelen karakterleri pc ye gonderiyorum fakat gelen karakterler anlamsız..

fprintf(DIGERPIC,"ABCD%c%c",13,10);
  delay_ms(200);
  fgets(Gelen,SAYAC);
  delay_ms(200);
 
  fprintf(PC,"%S",Gelen);

aliveli

Aşağıdaki kodda seri porttan gelen bilgi int_rda ile içeriden buffer dizisine alınır daha sonrada ekrana geri yazdırılır.

#include <16F877.H>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)

#define BUFFER_SIZE 32
BYTE buffer[BUFFER_SIZE];
BYTE next_in = 0;
BYTE next_out = 0;


#int_rda
void serial_isr() {
   int t;

   buffer[next_in]=getc();
   t=next_in;
   next_in=(next_in+1) % BUFFER_SIZE;
   if(next_in==next_out)
     next_in=t;           // Buffer full !!
}

#define bkbhit (next_in!=next_out)

BYTE bgetc() {
   BYTE c;

   while(!bkbhit) ;
   c=buffer[next_out];
   next_out=(next_out+1) % BUFFER_SIZE;
   return(c);
}


void my_get_string(char* s, unsigned int8 max) {
   unsigned int8 len;
   char c;

   --max;
   len=0;
   do {
     //c=getc();  // Commented out.
       c = bgetc();   // Call bgetc() instead of getc()
     
       if(c==8) {  // Backspace
        if(len>0) {
          len--;
          putc(c);
          putc(' ');
          putc(c);
        }
     } else if ((c>=' ')&&(c<='~'))
       if(len<=max) {
         s[len++]=c;
         putc(c);
       }
   } while(c!=13);
   s[len]=0;
}

#define STRING_SIZE 40

//===================================
void main()
{
char input_str[STRING_SIZE];

enable_interrupts(int_rda);
enable_interrupts(global);

while(1)
  { 
   printf("Enter a string of text: ");
   my_get_string(input_str, STRING_SIZE-1);     
   printf("\n\rYou typed: %s \n\r\n\r", input_str);

  }

}


Burada ise en sade hali yer almaktadır
#use rs232(Baud=19200, Xmit=PIN_C6, Rcv=PIN_C7)

void main()
{
  char c;
  while(1)
  {
    c = getc();
    putc(c);
  }
}

iguruz

#use delay(clock=20000000)
#fuses NOWDT,WDT128,HS, NOPROTECT, NOOSCSEN, BROWNOUT, BORV20, NOPUT, STVREN, NODEBUG, LVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB

#use rs232(baud=300,parity=E,xmit=PIN_C6,rcv=PIN_C7,bits=7,stream=SAYAC)
#use rs232(baud=9600,parity=N,xmit=PIN_B1,rcv=PIN_B0,bits=8,stream=PC)

300 baudta bağlantı kuruyorum fakak gelen dataları 300 de lıp 9600 da pc ye gonderince sacma sapan karakterler geliyor
bu işi nasıl çözerim.......