UART'ta seri bilgi okuma, Algoritma nasıl olmalı?

Başlatan kantirici, 28 Aralık 2012, 21:07:21

kantirici

Merhaba arkadaşlar.

Pic'e seri iletişim ile bilgi yolluyorum.Kesme ile gelen veriyide alıyorum.Fakat bir string dizisini almayı nasıl yapabilirim, tam olarak çözemedim.

void interrupt isr(void) {

    INTCONbits.GIE = 0; 
    if (PIR1bits.RCIF) {
        PIR1bits.RCIF = 0; 

        GelenVeri[veri] = (char) RCREG;
        veri++;

    }


    INTCONbits.GIE = 1; 

}


Yukarıdaki kodda veri değişkenine göre gelen veriyi yorumluyorum, mesela 5 karakter yolluyorsam veri 5 se tamam veri alındı diyorum.Bunu genel bir yapıya dönüştürmek için her string sonuna, verinin bittigini belirten bir karakter yollamayı düşündüm ama tam olarak algoritmayı kuramadım.

Sonuç olarak seri porta gelen uzunlugu belirsiz bir veriyi nasıl alırım?

AsHeS

C dilinde uzunluğu belirsiz diziler kullanılmaz genelde(malloc fonksiyonun ram de başka alanlara yapacağı tahribattan dolayı)ancak dizinin uzunluğunu uzun tanımlarsanız istediğiniz veriyi alırsınız.Eğer stringi nasıl ayırırım diyorsanız null(\0) karakteri ANSI C'de bir stringin son karakteridir ona göre ayırırsınız.