Seri Haberleşmede Gelen Veriler Bozuk

Başlatan iguruz, 31 Mayıs 2008, 20:24:54

iguruz

seri haberleşmee karakter sorunu aşıdaki kodla serihaberleşmeyle başka bir cihazla haberleşmeye çalışıyorum fakat gelen karakterlet bozuk geliyor sebebi ne olabilir.

gelmesi gereken veri = /AEL5<1>
gelen veri=                 ¯AÅÌ5<±¾

#include <18F252.h>
#use delay(clock=4000000)

#fuses NOWDT,WDT128,HS, NOPROTECT, NOOSCSEN, NOBROWNOUT, BORV20, NOPUT, NOSTVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB
#use rs232(baud=300,parity=E,xmit=PIN_C6,rcv=PIN_C7,bits=7,stream=ANALIZOR,enable=PIN_B0)
#use rs232(baud=9600,parity=N,xmit=PIN_C4,rcv=PIN_C5,bits=8,stream=PC)

#use fast_io(b)
#use fast_io(c)
int Hata;

//****************************************************************************** METOTLAR******************************
int PortOkuChar(byte Karater,int Bekleme)
{

     int32 ZamanAsimi;
     int32 BeklemeSuresi;
     byte BeklenenC;  
     byte GelenC;      


     BeklemeSuresi=Bekleme*100000;
     BeklenenC= Karater;
     ZamanAsimi=0;
     GelenC=0;

     while(GelenC != BeklenenC)
    {
         while(!kbhit(ANALIZOR)&&(++ZamanAsimi<BeklemeSuresi))
               delay_us(10);
        if(kbhit(ANALIZOR))
        {
              GelenC=fgetc(ANALIZOR);
              fputc(GelenC,PC);
              ZamanAsimi=0;
        }
        else
        {
           Hata++;
           return 0;

        }
   }

   return 1;
}
//-----------------------------------------------------------------------------*
int HandShake()
{

  fprintf(PC,"/?!\r\n");//pc
  delay_ms(200);

  output_high(PIN_B0);//sayac
  delay_ms(200);

  fprintf(ANALIZOR,"/?!%C%C",13,10);//sayac

  output_low(PIN_B0);//sayac
  PortOkuChar(10,5);

  if(Hata>=1)
  {
   fprintf(PC,"Hata %d\n\r",Hata);
   return 0;
  }
  else
  {
  fprintf(PC,"Handshake tamam");
   return 1;
  }

}
Anadongu()
{


  int DonguTekrari;
  int Durum;

  ANADONGU_HATA_BASLANGICI:

  Durum=0;
  DonguTekrari=0;
 
  do
  {

     Hata=0;
     Delay_ms(5000);
     fputs("5 Saniye Bekliyor",PC);;
     delay_ms(250);
     Durum= HandShake();
     DonguTekrari++;
  }while(DonguTekrari<4 && Durum==0);
  DonguTekrari=0;

  delay_ms(1000);
   if(Hata!=0)
  {
      fprintf(PC,"Hata= %d ",Hata);//sayac
     goto ANADONGU_HATA_BASLANGICI;
     
  }
 

}





void main()
{

  setup_adc_ports(NO_ANALOGS);
  setup_adc(ADC_OFF);
  setup_spi(FALSE);
  setup_wdt(WDT_OFF);
  setup_timer_0(RTCC_INTERNAL);
  setup_timer_1(T1_DISABLED);
  setup_timer_2(T2_DISABLED,0,1);
  setup_timer_3(T3_DISABLED|T3_DIV_BY_1);

   set_tris_b(0b00000000);
       output_b(00000000);
  delay_ms(2000);

  set_tris_c(0b10100000);
      output_c(00000000);
  delay_ms(2000);

 
 

   Hata=0;
   fputs("Program Basladi",PC);
   delay_ms(5000);





  while(true)
  {
     Anadongu();
     Hata=0;
     fputs("Bitti Ana Program",PC);
     delay_ms(5000);
  }

}