Zu deinem Code läßt sich eine Menge sagen, hier nur einiges.
"volatile" hat in einem Anwenderprogramm nichts zu suchen.
Zeichen sind chars, alles andere, Zähler etc sind ints. Und was soll die Hex-Notation?
char lenght = 0x00;
Also:
int length = 0;
nicht:
unsigned char Send_UART(char c[])
sondern
int Send_UART(char *c)
Und wenn man einer Funktion einen Returnwert verpasst, sollte man ihn auch liefern.
Und statt
length = strlen(c); // Länge des Strings feststellen
while(Counter < lenght)
{
res = write(fd, &c[Counter], 1);
Counter++;
}
einfach
res = write(fd, c, strlen(c));
Dann auch noch res bearbeiten und feststellen, ob auch alles geschrieben wurde.
Und in main()
char buffer[] = "";
Das ist ein array mit der Länge 1, das mit einem Null-Byte gefüllt ist. Ist es das, was du willst?
UART_init() liefert den Filedescriptor als Rückgabewert, keiner sieht ihn an. Das funktioniert, weil fd global ist. Wenn man das will, warum dann als Returnwert?
Laenge = strlen(argv[1]);
strncpy(buffer, argv[1], Laenge);
Warum kopierst du eigentlich argv[1] in einen Buffer und sendest es nicht gleich?
char LineEnd[] = "\r\n";
write(fd, argv[1], strlen(argv[1]);
write(fd, LineEnd, 2);
Ich hoffe, das ist nicht allzu schlimm ausgefallen
MfG Klebwax
[/CODE]
Lesezeichen