
Zitat von
what?
Danke erstmal für deine Mühe, mir zu helfen!
Gerne. Ich bin froh, dass ich auch immer mal Hilfe hatte und insbesondere hier im Forum viel Hilfe und Tipps erhalten und gefunden habe.
Auf deinem System sieht ja schonmal alles ganz gut aus. Beobachten solltest du ggf. die vielen "reset full speed device" Meldungen. Die sollten - denke ich - nicht ständig auftreten; es sein denn du hast hier zum Testen das USB-Kabel öfter gezogen und wieder gesteckt. Zum Testen.
Die aktuelle Doku ist auch wieder online. Wie gewohnt auf meiner Homepage (siehe Signatur).
Deine verwendeten Code-Schnipsel sehen auf den ersten Blick schon gut aus. ABER: Du hast in der openAtmelPort einen elementaren Codeteil weggelassen!
Code:
int openAtmelPort(char *dev_name)
{
// This method is only used for the atmel serial port!
// *Not* for the laser scanners!
if ((dev_fd = open(dev_name, O_RDWR | O_NOCTTY, 0)) < 0)
{
return (-1);
}
//============ DIESE ZEILEN HIER SETZEN DIE PORT SETTINGS ================================
struct termios ctio;
tcgetattr(dev_fd, &ctio); /* save current port settings */
ctio.c_iflag = IXON | IGNPAR; // TODO: IXON oder IXOFF ?!??
ctio.c_oflag = 0;
// | SW flow control | Parity 0 | 8 Databits | 1 StopBit
ctio.c_cflag = CREAD | CLOCAL | 0 | CS8 | 1;
ctio.c_lflag = 0;
ctio.c_cc[VTIME] = 0; /* inter-character timer unused */
ctio.c_cc[VMIN] = 0; /* blocking read until 0 chars received */
cfsetispeed(&ctio, (speed_t) B9600);
cfsetospeed(&ctio, (speed_t) B9600);
tcflush(dev_fd, TCIFLUSH);
tcsetattr(dev_fd, TCSANOW, &ctio);
//==========================================================================
return (dev_fd);
}
Dieser Teil stellt den USBPort auf 9600,8,N,1 ein. Er stellt FlowControl außerdem auf "Software". Ohne dass dürfte es nie klappen!
readAtmelPort liefert im Erfolgsfall immer einen Wert > 0; nämlich die Anzahl der gelesenen Bytes.
Zum Testen, ob dein Code auf dem Atmel läuft, könntest du minicom auf der Konsole (Shell) nutzen. Hier unbedingt den richtigen Anschluss wählen, die Portsettings setzen und Hardflowcontrol ABSCHALTEN! Ggf. als "minicom -s" und ggf. als root starten, falls es ein Rechteproblem sein sollte.
Lesezeichen