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.
Lesezeichen