mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik kurzen String senden...


Autor: Paule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hei Leute,
komme einfach nicht auf die Loesung des folgenden Problems:

Will eigentlich nur das der uC das sendet was ich vorher eingebe. Der
uC sendet aber mit untem geposteten Programm nix, nur wenn ich eine
Endlosschleife mit serDwrite mache, dann klappts einwandfrei. Das
versteh ich ueberhaupt nicht, ist doch sehr komisch oder, dass er nur
bei einer Endlosschleife sendet. Er gibt auch immer an, dass er 6
Zeichen erfolgreich gesendet hat, also ich versteh nur noch Bahnhof.
Kann vielleicht jemand den Code checken oder weiss jemand sont was???
Bin solangsam am verzweifeln.....
VG Paule

#define DINBUFSIZE 127
#define DOUTBUFSIZE 127
#class static

//************************************************
void SerDwrite(char *s) {

      int i,j;
      j=0;
      serDopen(9600);
      serDwrFree;
      serDwrFlush;
      serDflowcontrolOff();
      serDdatabits(PARAM_8BIT);

      while(j<6) { j=serDwrite(s,6); } //return-Wert von j ist
                                       //erfolgreich
                                       //gesendete Bytes
//hier funktionierts nur mit Endlosschleife!!!!!!??????????

serDclose();
                   }
//************************************************

main () {

          char s1[50];
          gets(s1);

          SerDwrite(s1);  //Habe unten die Fkt-Def. von SerDwrite
                          //angehaengt, falls es was hilft
         }

/* START FUNCTION DESCRIPTION
********************************************
serDwrite                   <RS232.LIB>

SYNTAX:       int serDwrite(void *data, int length);

DESCRIPTION:   Transmits length bytes to serial port D.
               This function is non-reentrant.

PARAMETER1:    data  : data structure to write to serial port D
               length: number of bytes to write

RETURN VALUE:  The number of bytes successfully written to serial port
D.

END DESCRIPTION
**********************************************************/

nodebug int serDwrite(void *data, int length)
{
   static int bytesleft;
   static char *p;

   p = (char *)data;
   bytesleft = length;
   if (cbuf_wrlock(spd_ocbuf))
   {
      while (bytesleft)
      {
         bytesleft -= cbuf_put(spd_ocbuf, p+(length-bytesleft),
bytesleft);
         spd_starttx();
      }
      cbuf_wrunlock(spd_ocbuf);
   }
   return length - bytesleft;
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.