wie kann ich mit der putc() funktion , die ja nur ein character überträgt eine printf oder sprintf funktion bauen, die komplette strings überträgt.... ich benötige die Funktion um daten zwischen mikrocontroller und pc zu übertragen danke Samuel meine putc() funktion sieht folgendermassen aus: void putc(UBYTE SendChar) { //******************************* // Notice while loop!!!!! // ***************************** //We will wait here till the last char was transmitted while(!SciaRegs.SCICTL2.bit.TXRDY); SciaRegs.SCITXBUF=SendChar; }
trotz der etwas unglücklich formulierten frage (printf u8nterstützt eine menge formatierungen) denk ich mal das ist das richtige void put_string(char* s) //Send null-terminated string on the UART Tx line. { char c; while ( (c = *s++) ) { putc(c); } }
super.....danke...hat geklappt... jetzt muss ich das noch in umgekehrter Richtung haben, also dass ich einen string vom PC zum Mikrocontroller schicke.zum Empfangen eines characters habe ich mir folgende funktionen gebaut: hast du eine Idee wie man aus dieser funtion eine funktion bauen kann, die einen ganzen string empfängt? //****************************** // We want to get a char from the SCI port, thus return the char // ***************************** UBYTE getc(void) { while(!kbhit()); return SciaRegs.SCIRXBUF.bit.RXDT; } wobei die funktion kbhit() auf Übertragungsfehler überprüft und das Ready bit zurückliefert, was bedeutet, dass ein zeichen richtig im eingangsbuffer angekommen ist
Am besten schreibst du das, was ankommt in einen Ringspeicher. Wenn der so ca. halb voll ist, schickst du xoff oder was auch immer für ein Handshake du benutzt. Wenn er wieder leer genug ist, lässt du wieder eine Übertragung zu. Wenn du das Interrupt gesteuert machst, also bei jedem ankommenden Zeichen in der Service Routine den Empfangs Ringspeicher verwaltest, bist du gut gerüstet. Diesen Empfangspuffer kannst du dann ganz in Ruhe analysieren und nach Steuerzeichen durchsuchen etc.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.