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

Re: HWCOM Letzes Zeichen bei nächster Übertragung Kategorie: Programmierung (von Daniel Schartz - 8.08.2006 11:12)
Als Antwort auf Re: HWCOM Letzes Zeichen bei nächster Übertragung von Christian Jost - 7.08.2006 21:55
Ich nutze:
C-Control II Station, OSOPT V3.0
Danke fĂĽr's Feedback

> Hallo Daniel,
>
> Ich kenne das Problem und denke dass es sich um einen Bug im Betriebssystem handelt. Ich habe
> deshalb hier auch schon einmal eine Message gepostet aber André Helbig war der Meinung dass es
> sich nicht um einen Bug handelt bzw. konnte ihn nicht reproduzieren. Auf mein (wahrscheinlich zu
> kompliziertes) Testprogramm erhielt ich nie ein Feedback.
> siehe Hier...
>
> Habe dir leider auch keine Lösung. FĂĽr mich ist dieses Verhalten jedenfalls nicht brauchbar!!!  Zur
> Zeit prĂĽfe ich eine andere interessante Alternative:
> http://www.acmesystems.it/?id=4
>
> I2C-Bus und serielle Schnittstellen sind vorhanden und es hat eine Ethernet Schnittstelle :-))
>
> Gruss,
> Christian
>
>
>
> > Hallo,
> >
> > Ich bin dabei ein Programm zu schreiben um auf einer seriellen Schnittstelle bestimmte
> >  Messages abzufangen und ein Relais daraufhin zu schalten.
> >
> > Wenn ich die C-Control resette, dann funktionniert das Programm einwandfrei.
> > Nach einiger Zeit wird dann das letzte Zeichen der �bertragung dann erst bei der nächsten
> > Ă?bertragung mit inbuffercount gesehen.
> >
> > Kann ich ohne zusätslichen Protokoll diesen Zustand feststellen und das Zeichen 'nachlesen' ?
> >
> > Hier der Code :
> > thread HandleSerial
> > {
> >  byte i;
> >  int Holt;
> >  string strHolt;
> >  string strStart;
> >  string strTest;
> >  string strEnd;
> >  
> >  // Init Variables
> >  strStart ="START";
> >  strTest = "TEST";
> >  strEnd = "END";
> >
> > // wait hwcom.rxd();
> >    wait hwcom.inbuffercnt() >0;
> >    i= hwcom.get();
> >    if i== 13
> >     {
> >      strx.Ucase(mybuffer,0,str.length(mybuffer));
> > /*     capture flagRel;
> >      strDisplay1 = mybuffer;
> >      release;
> > */
> >      Send(mybuffer,str.length(mybuffer));
> >      if strx.InStr(0,mybuffer,strTest,str.length(mybuffer),4) > -1
> >      {
> >       /*capture flagRel;
> >       strDisplay2 = Dumbo;
> >       release;
> >       */
> >      }
> >      else
> >      {
> >       if strx.InStr(0,mybuffer,strStart,str.length(mybuffer),4) > -1
> >       {
> >        strx.left(mybuffer,strHolt,2);
> >        Holt = getNum(strHolt);
> >        Holter[Holt] =1;
> >        capture flagRel;
> >        strDisplay2 = "Start Alarm ";
> >        str.putint(strDisplay2,Holt);
> >        release;
> >
> >        stports.setRel(1,1);
> >       }
> >       else
> >       {
> >        if strx.InStr(0,mybuffer,strEnd,str.length(mybuffer),3)>-1
> >        {
> >         strx.left(mybuffer,strHolt,2);
> >         Holt = getNum(strHolt);
> >         Holter[Holt] =0;
> >         capture flagRel;
> >         strDisplay2 ="End Alarm ";
> >         str.putint(strDisplay2,Holt);
> >         release;
> >         if lastOn()
> >         {
> >          stports.setRel(1,0);
> >         }
> >        }
> >       }
> >       }
> >    BufPos =-1;
> >   }
> >    else
> >    {
> >    BufPos = BufPos +1;
> >    SetByte(mybuffer,i,BufPos);
> >    setStrLen(mybuffer,BufPos + 1);
> >    
> >    }
> > }
> >
> >
> > Mit Bitte um Hilfe
> >
> >
> > Danke in Voraus
> >
> > Daniel Schartz


    Antwort schreiben


Antworten: