Rs232: Empfangsprobleme
-
Hallo
also ich hab ein Ansteuerungsprogramm fuer ein Motor geschrieben.
Das funktioniert auch der Motor bewegt sich schon mal
Aber mein Problem ist das er nicht immer richtig antwortet.
Das soll heissen es gehen Zeichen verloren.
Hat einer von euch eine Idee was das seien koennte??
Meine Port einstellung lautet so.newTermIo->c_cflag &= (~( CSTOPB | PARENB | CSIZE)); newTermIo->c_cflag |= (CLOCAL|CREAD|CS8); newTermIo->c_iflag |= 0; newTermIo->c_oflag |= 0; newTermIo->c_lflag |= (PENDIN | NOFLSH); newTermIo->c_lflag &= (~(ICANON | ECHO | ISIG | IEXTEN )); newTermIo->c_cc[VMIN] = 1; newTermIo->c_cc[VTIME] = =0; self->fd=open ("/dev/ttyS0",(O_RDWR | O_NOCTTY| O_NONBLOCK| O_ASYNC) );
wobei PENDIN | NOFLSH und O_ASYNC nur Versuchweise drin sind bringt also kein Unterschied.
Der Motor anwortet nach 200 ms und sendet ca 5-10 bytes zurueck.
Sollte ich vielleicht andere Porteinstellungen nehmen???Gruss
C-Snoopy
-
Gehen die Zeichen wirklich "verloren"? Oder macht der Motor vielleicht nur eine Pause zwischen den Zeichen, sodass die read()-Funktion zunächst "abbricht" und die weiteren Zeichen erst mit einem weiteren read() verfügbar werden.
Außerdem solltest du klären, ob der Motor RTS/CTS nutzt und, wenn ja, dieses aktivieren.Martin
-
Hallo
Außerdem solltest du klären, ob der Motor RTS/CTS nutzt und, wenn ja, dieses aktivieren.
Nein ist leider nur eine ZweiDraht Leitung und das dumme Teil hat keine Fehlerkorrektur
Gehen die Zeichen wirklich "verloren"? Oder macht der Motor vielleicht nur eine Pause zwischen den Zeichen, sodass die read()-Funktion zunächst "abbricht" und die weiteren Zeichen erst mit einem weiteren read() verfügbar werden.
Inzwischen hab ich rausgefunden das er mir bei Bewegungskommandos richtig antwortet , bei anderen Komandos antwortet er mir mit Datenmuell.
Wobei ich inzwischen den datenmuell immer wieder richtige Daten sehe.
Mir kommt es manchmal so vor das Teile der Nachricht verschluckt werden.
Naja vielleicht liegt das ganze auch am MotorGruss Snoopy