Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

hwcom sync auf Datenrahmen Kategorie: Programmierung (von Newbie - 16.09.2011 12:05)
Ich nutze:
C-Control II Station, OSOPT V3.1
�ber die serielle Schnittstelle will ich regelmässige Datenrahmen empfangen. Bisher hat das ganz gut
geklappt, wenn ich dies im Stile Anfrage -> Antwort gemacht habe.
Ein anderes Gerät sendet regelmässig (ca. 1x pro Sekunde) einen Datenrahmen. In meinem Fall 9 Byte.

Ich muss nun darauf synchronisieren und dann auswerten - aber irgendwie sehe ich den Wald vor lauter
Bäumen nicht..


thread COM
{
byte buffer[32];            //2ter serieller Buffer
byte length;
int Wert1;
int Wert2;
int Wert3;
byte Flag1;
byte Flag2;
byte Flag3;

long timer;

mem.fill(buffer,32,0x00);   //Löschen

loop
{

wait hwcom.ready();

length=hwcom.receive(buffer,9,500);   //Kürzerer Horizont als der Sendetakt!!
lcdext.clear();lcdext.zahl(length);   //Debug Info
if length!=9                      //Wenn unkorrekte Anzahl - unsynchronisiert
         {
          mem.fill(buffer,9,0x00);
          hwcom.flush();                //Buffer verwerfen
          wait hwcom.rxd();             //Warten auf nächsten Rahmen
          continue;
         }                              //direkt weiter
else
            {
           
            Wert1=mem.getint(buffer,0);                        
            Wert2=mem.getint(buffer,2);                    
            Wert3=mem.getint(buffer,4);                  
            Flag1=buffer[6];
            Flag2=buffer[7];
            Flag3=buffer[8];
           
            wait hwcom.ready();
            hwcom.send(buffer,9);  //Echo

   
            }

}



Nun habe ich dies mit einem Terminal-Programm getestet - wie die anderen Funktionen auch.

Aber es will einfach nicht klappen! Ich sende über ein Terminal folgendes im 1 Sekunden Takt (zum Testen):

x01xF4x00xF0x01x2Cx01x01x01

also 9 Byte. Eigentlich hätte ich gedacht, das ich spätestens beim 2ten Senden synchronisiert bin.

Aber weit gefehlt. Klappt gar nicht. Auf dem Display wird angezeigt, das weniger Bytes empfangen wurden.

Aber bei 9600Baud sollten doch 9 Byte wirklich viel Schneller übertragen werden als der Timeout?

Wer hat sowas schon mal gemacht? Bessere Ansätze sind gern gesehen..


    Antwort schreiben


Antworten:

Re: hwcom sync auf Datenrahmen (von Newbie - 16.09.2011 15:32)
    Re: hwcom sync auf Datenrahmen (von Newbie - 16.09.2011 16:26)