Hiiilfeeeeeee! Ich dreh langsam ab hier! Ich benutzte Debian Sarge und versuche RS232/ttyS0 - Daten vom Mikrokontroller einzulesen - funktioniert auch ganz super (wie schon bei DOS und W98)... DOCH stellt euch vor aus der RS232 wird von der PC-Seite etwas zum MC gesendet!!!! Mein gcc-Programm öffnet das ttyS0-Device mit "fopen" und dem Attribut "nur lesen"... und ich schreibe (vom PC) auch nichts. Habe es auch schon mit "open()" versucht - das selbe Ergebnis. Fragt mich nicht WAS da rauskommt, es dauert auf jeden Fall ca. 5x so lange wie mein Zeichen(vom MC) und sieht nach einer 2-fachen Wiederholung aus... Gibts da draussen irgendeinen Linux-Freak dem das was sagt? Ich bin neu bei Linux/Debian und wäre für jede Idee unglaublich dankbar. Habe sogar schon mit "stty" rumexperimentiert weil ich dachte es wird ein Softwarehandshake (XON/XOFF) gesendet, doch das wars wohl auch nicht. Mir fällt echt nix mehr ein... heul *schnüff* Ambodenzerstörtpeter
hmmh wie schnell ist denn echo hallo > /dev/ttys1?? ueebr den umweg kannst du auch daten ueber die rs232 senden
???????? wie schnell???? Die Schnittstelle ist momentan auf 38.4kb eingestellt und "hallo" wird völlig problemlos gesendet. (auf /dev/ttyS0 weil /dev/ttyS1 habe ich nicht). Doch mein Problem ist ja das "automatische" und ungewollte senden von irgendwas beim ordnungsgemässem Empfang vom Daten. Wenn ich gewollt Daten vom PC sende werden diese übrigens auch übertragen - mit der ungewollten Übertragung von ???? Man kann sich vorstellen, dass man damit Probleme hat einem Mikrocontroller etwas mitzuteilen. Ich hänge noch ein Miniprogramm an bei dem der Fehler? schon auftritt... Peter
Hi Peter Du koenntest erst mal probieren herauszubekommen was da gesendet wird,in dem der Mikrocontroller das ganze zurücksendet. möglicherweise ist ein serielles Terminal aktiv (sollte in /etc/inittab stehen) probiere doch mal den Port lesend und schreibend zu öffnen ("r+") sollte da noch ein Programm sein was zugreift sollte das scheitern zur not kannst du ein fflush machen. Zur Portabilität würde es sich empfehlen genau anzugeben ob Text oder Binaermodus erwünscht ist,wenn ich mich recht entsinne behandeln das Linux und Windows unterschiedlich.
Hi Wolfram! Vielen Dank für deine Anregungen: Das was da von Debian gesendet wird ist nicht "decodierbar". Wenn sieht es eher nach 9600Baud wie eingestellte 38400B aus... und auch dann ist es nicht "lesbar". Klingt blöd, doch ich kann dir nicht erklären was ich da auf dem Oszilloskop sehe.. sieht schon einigermassen synchronisiert aus, und meisst wird der selbe "Wert" übertragen, doch die Anzahl schwankt und ist nicht synchron mit meinen Mikrocontroller-Daten (Hahahah - hört sich wirklich sehr fachmännisch an grins *dem Wahnsinn nahe*) In /etc/inittab ist kein Terminal aktiv Text/Binärmodus -> Nach meinem bisherigen Wissensstand gibt es bei Linux nur Binärdateien. Doch auch alle Kombinationen "r+" "r+b" "w+".... ändern nichts. Auch fflush ändert nichts... Trotzdem Danke und ein schönes Wochende! Peter
@Peter Serielle Schnittstelle öffnet mit z.B mit: fd = open("/dev/ttyS0", O_RDWR) nichts mit fopen und "r+". Dann muss die serielle Schnittstelle konfiguriert werden: struct termios term_attr; term_attr.c_cflag = B38400 | CS8 | CLOCAL | CREAD; term_attr.c_iflag = 0; term_attr.c_oflag = 0; term_attr.c_lflag = 0; tcsetattr(fd, TCSAFLUSH, &term_attr); Jetzt kann geschrieben und gelesen werden: write(fd,senddata_buffer,8);//8byte geschrieben read(fd,revdata_buffer,8);//8byte gelesen Dann serielle Schnittstelle schleissen: close(fd); Mann sollte auch alles mit if überprüfen, aber hier habe ich das weggelassen.Dieser Code funktioniert schon, ob wohl da noch die Funktion select(..) fiehl, damit kannst du dich später auseinander setzen. Ansonsten, diesen Code benutze ich momentan zu Komunikation zwischen MCU<->PC: http://www1.kielnet.net/home/marc.in/pc-oszilloskop/PC_src/transfer.h Ein zimmlich genaue beschreibung wie man unter Linux (posix) auf serielle Schnittstelle zugreift findest du hier: http://www.easysw.com/~mike/serial/serial.html Leider Englisch, dann gleich Online-Wörterbuch dazu: http://dict.tu-chemnitz.de/
Hi Lanius und besonders Martin! vielen Dank für eure Antworten! Ich habe meinen Fehler gefunden! Ich musste mit "stty -F /dev/ttyS0 -echo" ein Echo?!? deaktivieren. Da ich - um Betriebssystemrumwursteleien meinerseits auszuschliessen - Sarge neu installierte, müsste dieses "echo-Problem" jedoch bei jedem auftreten der Daten über die Seriellen Schnittstellen einliest... zumindest bei Debian Sarge. Und auch mit open(), denn damit habe ich es auch schon probiert. Puh - endlich kanns mit dem Seismographen WEITERgehen! Viiiieeeelen Dank an alle und ich wünsche euch ein schönes Wochenende!!! Peter
Ach ja Martin, um auf dein "transfer.h" zugreifen zu können müsste ich mich über KielNet einwählen - von einem anderen Provider aus klappts nicht... Peter
>um auf dein "transfer.h".....
Ich denke das lag an der Berechtigung, die war falsch gesetzt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.