RS232 DİZİ GÖNDERİP ALMA YARDIMM

Başlatan toyo, 28 Nisan 2012, 23:50:33

toyo

Rs232 ile dizi göndermek istiyorum.Dizileri göndermede sorun yaşamadım ancak alıcı devre alamıyor.Bu işi halletmem gerekiyor yardımlarınızı lütfen esirgemeyin.İlgilenen arkadaşlara çok teşekkürler.
#include <16f628a.H>
                
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT               //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection


#use delay(clock=4000000)

#use rs232(baud=2400, xmit=PIN_B2, rcv=PIN_B1,parity=N,stop=1)
int i=0;
int j=0;
char msg[8]={0x55,0x55,0x55,0x55,0x55,'Z','I','L'};
void main()
{


while(1)
   {
     
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

       if(input(pin_b0))
       {
       delay_ms(15);
                     
 
             for(i=0;i<10;i++)
             {
                for(j=0;j<8;j++)
                  {
    
                   printf("%c",msg[j]);
                   }
                   j=0;
                  output_high(pin_a0);
                  delay_ms(100);
                  output_low(pin_a0);
              }
         }
   }
}


ALCI
#include <16f628A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                         //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection


#use delay(clock=4000000)
#use rs232(baud=2400, xmit=PIN_B2, rcv=PIN_B1,parity=N,stop=1)

#define LCD_ENABLE_PIN     PIN_A0      //lcd enable pini b5
#define LCD_RS_PIN         PIN_A1      //lcd rs pini pin b4
#define LCD_RW_PIN         PIN_A2     //lcd rw pini pin c0
#define LCD_DATA4          PIN_b7         //lcdnin data4 pini pinb0 
#define LCD_DATA5          PIN_b6         //lcdnin data5 pini pinb1 
#define LCD_DATA6          PIN_b5         //lcdnin data6 pini pinb2 
#define LCD_DATA7          PIN_b4         //lcdnin data7 pini pinb3

#include <Clcd.c>
#define dur pin_b0
char msg[6];
char AL;
int i=0;
int j=0;
void main()
{

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
   
lcd_init();
printf(lcd_putc,"\fTEKNO KULAK");
delay_ms(100);
printf(lcd_putc,"\fEMRE SIMSEK");
delay_ms(100);
printf(LCD_PUTC, "\f");
while(1)
{           
       if(getchar())
       {
       msg[i]=getchar();
       i++;
       }
          if(i==3)
          {
            i=0;
              if(msg[0]=='Z' && msg[1]=='I' && msg[2]=='L')
              {
               lcd_gotoxy(1,1);
               printf(lcd_putc,"KAPI ");
               lcd_gotoxy(1,2);
               printf(lcd_putc,"CALIYOR");
               output_high(pin_a3);
               delay_ms(100);
               output_low(pin_a3);
             }
           }
      }   
 }
          
   
Gelirken ne getirilir ki giderken ne götürülür.

serhat1990

#1
Sorunun burada olabilirmi ? Sen 5 6 ve 7 . karakterlere bakman gerekmiyormu ... yani bu sekilde
;
              if(msg[0]=='Z' && msg[1]=='I' && msg[2]=='L')


değilde su sekilde

;
              if(msg[5]=='Z' && msg[6]=='I' && msg[7]=='L')


kontrol etmen gerekmiyormu ?




toyo

Öylede denemiştim olmadı.Teşekkürler...
Gelirken ne getirilir ki giderken ne götürülür.

serhat1990

Programını biraz karmaşık yazmışsın şimdi farkettim söylediğim olmaz zaten alıcı tarafta diziyi 6 karakterlik tanımlamışsın. Tanımlama satırlarında dikkat etmedim. Bu kadar işlem karmaşıklığı yapmak yerine direk olarak gönderdiğin tüm diziyi al ve senin için önemli olan satırları dikkate al demek istediğim gönderdiğin tüm datayı al ve sonra dizi içerisinde önemli olan datanı karşılaştır. Problemin düzelecektir. İyi çalışmalar.

toyo

Çok teşekkürler sabah dediklerinizi yapmaya çalışacağım.
Gelirken ne getirilir ki giderken ne götürülür.