Hallo Experten,
ich habe momentan ein mir nicht ganz nachvollziehbares Problem mit dem Lesen und Schreiben von Daten auf einen seriellen Port. Folgender Sachverhalt: Ich habe ein ZigBee Gerät an die serielle Schnittstelle ttyUSB0 angeschlossen und will dort nun mittels Tastutareingabe Befehle versenden und die Rückgabewerte auf die Konsole ausgeben.
Das Problem ist nun, dass der file descriptor nicht das liefert, was er soll. Wenn ich z.Bsp. den Befehl ATI eingebe(gibt Infos für das Gerät zurück) wird nur diese Eingabe auf die Konsole geschrieben. Nichts die erwarteten Werte.
Der Witz ist: Sobald ich allerdings in einer zweiten Konsole den Port mit Minicom öffne, erscheinen die Ausgaben auf der ersten Konsole. Hat jemand eine Idee, woran das liegen könnte?
Hier die beiden Threads, die das Senden und Empfangen bewerkstelligen:
fd ist dabei das Device.
/\*\* thread for message sending \*\*/
void \*startMessageSending() {
char key;
char message[BUFSIZE];
while(1) {
/\*\* get message from the keyboard input \*\*/
message[0] = '\0';
while ((key = getchar()) != '\n') {
sprintf(message, "%s%c", message, key);
}
//sprintf(message, "%s%c", message, '\0');
/\*\* send message to the port \*\*/
printf("Sending message %s to %s\n", message, DEVICE);
if (write(fd, message, strlen(message))