Hallo,

@Lifty:
test.c:22: warning: passing arg 1 of `SerRead' makes pointer from integer without a cast
test.c:22: error: void value not ignored as it ought to be
Die Signatur des Prototypen ist folgendermassen:
Code:
void SerRead(unsigned char *data, unsigned char length, unsigned int timeout);
d.h.
der 1. Parameter ist ein pointer auf eine char Variable,
der 2. Parameter ist dessen Länge (maximal)
der 3. Parameter der Timeout

Du rufst die Funktion aber folgendermassen auf:
while (SerRead('a',1,9)==1) {
Fehler 1: 'a' ist keine Variable
Fehler 2: die Funktion ist void und liefert somit keinen Wert


Beispiel:
Code:
#include <string.h>
#include "asuro.h"

// Deklaration der Variablen
char szReceive[30];

int main(void) {
   Init(); // nur einmal aufrufen!!

   // Lesen von einem Zeichen in die Variable szReceive, Timeout 9msec
   SerRead((char*)szReceive, 1, 9);
   // String hinter dem Zeichen terminieren.
   szReceive[1] = 0;
   // Anhängen von " received\r\n" and den Inhalt von szReceive
   strcat(szReceive, " received\r\n");
   // Ausgeben von szReceive
   SerWrite(szReceive, strlen(szReceive));

   while (1); // niemals vergessen!
   return 0;

}

Habe das Proggi nicht getestet! Es macht so auch noch keinen Sinn ohne eine while Schleife. Der Kode ist nur zur Verdeutlichung.


Ist es jetzt klar?

O.