Visual Basic'de Seri Port Veri Alımı Sorunu

Başlatan erdinch, 29 Mayıs 2007, 01:33:20

erdinch

pic den seri porta veri aktarıyorum.visual basic de gelen veriyi içinde tutan değişkeni string olarak tanımlıyorum.

tek karakter göndermelerde sorun yaşamıyorum.fakat verinin uzunluğu belirli bir sınırı aşınca sorun oluyor.
örneğin ccs de    
printf("erdinç");
gönderince sorun yok.Fakat

printf("Kocaeli Üniversitesi");
gönderdiğimde text nesnesinden sadece "sitesi" kısmını okuyabiliyorum. "Kocaeli Üniver" kısmını okuyamıyorum.

Sorunum neden kaynaklanıyor olabilir? Nasıl çözebilirim?


Yardımcı olabilecek arkadaşlara şimdiden teşekkürler.

ise

sorun 'Ü' harfinden  printf in gönderdiği putchar fonsiyonunda char karekter olarak görmediğinden göndermiyor olabilir.

Veli B.

String için bir uzunluk tanımlıyor musunuz?
Sanki 6 veya 7 byte tanımlamışsınız gibi görünüyor.Kodu açsanız işler dahada kolaylaşır. Sanırım buffer içinde, son 6 byte değeri alıyorsunuz.

erdinch

Private Sub Command1_Click()

seri.Output = "a"
End Sub


Private Sub Command2_Click()
seri.Output = "b"
End Sub

Private Sub Command3_Click()
seri.Output = "c"
End Sub

Private Sub Command4_Click()
seri.Output = "d"
End Sub

Private Sub Command5_Click()
seri.Output = "e"
End Sub

Private Sub Command6_Click()
seri.PortOpen = False
Unload Me
End Sub

Private Sub Command7_Click()
seri.Output = "f"
End Sub
Private Sub Form_Load()
seri.PortOpen = True
    seri.Settings = "9600,N,8,1"
    seri.Handshaking = comNone
    seri.RThreshold = 4
End Sub

Private Sub seri_OnComm()
    Dim alinan As String
    If (seri.CommEvent = comEvReceive) Then
        alinan = seri.Input
        Label1.Caption = alinan
    End If
End Sub


visual basic kodum tam olarak böyle.label yerine textboxda da denedim aynı sorunla karşılaştım.


c kodunda bir sorun olduğunu zannetmiyorum.yine de paylaşıyım.

#include<16f877.h>
      #use delay(clock=4000000)
      #fuses   xt, NOWDT, PUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
      #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
      #org 0x1F00, 0x1FFF void loader16F876(void) {}
      #use fast_io(c)
      #define led1 pin_a0
      #define led2 pin_a1
      #define led3 pin_a2
      #define led4 pin_a3


//////////////////////////////////////////////////////////////////////
       int i,j;
       int veri;
       void yukari_say();
       void asagi_say();
       void yurut();

/////////////////////////////////////////////////////////////////////

char  const segment[10] = {0b01111110,  // 0
                           0b00001100,  // 1
                           0b10110110,  // 2
                           0b10011110,  // 3
                           0b11001100,  // 4
                           0b11011010,  // 5
                           0b11111010,  // 6
                           0b00001110,  // 7
                           0b11111110,  // 8
                           0b11011110};

char const ledler[4] = { led1,led2,led3,led4};

////////////kesme ile veri al /////////////////////////

#int_RDA
serin()
{
veri=getc();
if(veri=='a'){
printf("Yürüyen Işık");
yurut();
}
else if(veri=='b'){
printf("Aşağı Sayıyor");
asagi_say();
}
else if(veri=='c'){
printf("Yukarı Sayıyor");
yukari_Say();
}
else if(veri=='d'){
printf("A Portu Yandı");
output_a(0xff);
}
else if(veri=='e'){
printf("A Portu Söndü");
output_a(0x00);
}
else if(veri=='f'){
printf("Reset Atıldı");
delay_ms(1000);
reset_cpu();
}
}
////////////////////////////////////////////////////
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
set_tris_c(0b10000000);
enable_interrupts(int_rda);
enable_interrupts(global);
Printf("Cihaz Çalıştı.");

   while(true){



}
}
//////////////////////////////fonksiyonlar////////////////////////////

////    yukari_say();  ////////////////

void yukari_say(void){                                         ///////////
for(i=0;i<10;i++)                                              /////////
{
output_b(segment[i]);
delay_ms(500);
}
output_b(0x00);
}

//////////     asagi_Say(); //////////////

void asagi_say(void){                                         ///////////
for(i=10;i>0;i--)                                              /////////
{
output_b(segment[i-1]);
delay_ms(500);
}
output_b(0x00);
}


///////////////ledleer/////////////


void yurut(void){
j=1;
for(i=0;i<5;i++){
output_a(j);
delay_ms(200);
j=j*2;
}
j=8;
for(i=0;i<5;i++)
{
output_a(j);
delay_ms(200);
j=j/2;
}
}
//////////////////////////////////////