Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Serial_IRQ_Info Kategorie: Programmierung C (von Franz - 13.11.2010 22:28)
Als Antwort auf Re: Serial_IRQ_Info von ulrich korth - 13.11.2010 11:51

> > > > Hallo,
> > > >
> > > > kann mir einer sagen warum das nicht klappt, ich weis nicht mehr weiter ....
> > > >
> > > > *********************************************
> > > > byte buffer[41];
> > > >
> > > >
> > > > void main(void)
> > > > {
> > > >     byte count;
> > > >     count=0;
> > > >     Serial_Init_IRQ(0,buffer,20,15,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD38400);
> > > >     while(1)
> > > >     {
> > > >     AbsDelay(4000);
> > > >     count=Serial_IRQ_Info(0,RS232_FIFO_RECV);
> > > >     Msg_WriteWord(count);
> > > >     }
> > > > }
> > > > ***********************************************
> > > >
> > > >
> > > > COUNT  bleibt einfach null, Einstellungen stimmen auch(im Anhang Einstellungen von HTerm)?!
> > > >
> > > >
> > > >
> > > > ich hoffer Ihr könnt helfen.
> > > >
> > > > Grü�e
> > > >
> > >
> > > Liegt am AbsDelay
> > >
> > > in der Hilfe steht:
> > >
> > >
> > >
> > > Die Funktion Absdelay() wartet eine bestimmte Anzahl von Millisekunden.
> > >
> > >  
> > >
> > >  Die Funktion arbeitet zwar sehr genau, aber unterbricht nicht nur die Abarbeitung des aktuellen
> > >  Threads, sondern läÃ?t den Bytecode Interpreter insgesamt warten. Interrupts werden zwar registriert,
> > >  aber die Interruptroutinen in dieser Zeit nicht abgearbeitet, da auch dafür der Bytecode Interpreter
> > > nötig ist.
> > >
> > >  
> > >
> > >  Beim arbeiten mit Threads immer Thread_Delay und nicht AbsDelay benutzen. Wird trotzdem z.B.
> > >  ein AbsDelay(1000) benutzt, so tritt folgender Effekt auf: Da der Thread erst nach 5000 Zyklen
> > >  (Default Wert) zum nächsten Thread wechselt, würde der Thread 5000 * 1000ms (5000 Sek.) laufen,
> > >  bis der nächste Thread anfangen könnte zu arbeiten.
> > >
> > >  
> > >
> >
> > Hi,
> >
> >
> > Ausgabe bleibt die Selbe   0000000000000000000000000000000000000.
> >
> >
> Hallo Franz,
> was willst du eigentlich machen? Ich vermute du willst was einlesen.
> Dann solltest du Serial_ReadExt statt Serial_IRQ_Info benutzen.
> Ausserdem:
>  - das Abs_Delay muss weg
>  - ist da überhaupt ein Partner angeschlossen?
>  - hat der die gleiche baudRate,....
>  - ist der richtig angeschlossen? Evtl Pin 2 und 3 tauschen oder NullModem verwenden
> Ulrich


Hi,

Ja, alles erfüllt  Partner ist Rechner mit HTerm( ist oben nen Bild drin), Einstellungen stimmen.
ich kann Empfangen und senden, wollte aber mit Serial_Read nich mehr weiter machen,
weil die Funktion ja bekanntlich bis zum Zeichen wartet, wenn nichts kommt Kaffeepause.
also wollt ich umsteigen auf Serial_ReadExt, und hab erstmal probierl,
wie im Beispiel mit Serial_Init_IRQ  ob er Zeichen empfängt, zeigt aber immer null.

Ich mein mit Serial_ReadExt funktioniert schon !!!  


aber komisch ist es, ich kann  mit Msg_WriteText nichts mehr ausgeben?!?!?!


sebst bei    Msg_WriteInt(ieingabe); kommt nichts.


void leseEingabe(void)
{
while(true)
{
if(ieingabe==0)
{  eingabe="";}

ch=Serial_ReadExt(0);
if(ch)
{
  if(ch=='n')
  {
  ieingabe=0;
  Msg_WriteInt(ieingabe);
  setMsg(eingabe);
  isset=1;
   }
  else{
  eingabe[ieingabe]=ch;
  ieingabe++;
  }
}

GruÃ?.


    Antwort schreiben


Antworten: