Ich hoffe, ich bin hier im richtigen Forum. Ich bastle und bastle und bastle an einer Slackware basierenden Livedistribution, die irgendwann mal eine AVR Programmierumgebung fuer absolute Anfänger geben soll (USB einstecken und fertig). Aus verschiedenen Gründen programmiere ich mit GCC UND FreePascal (smile weil ich eben nicht jeden alten Code wegwerfen mag). FPC macht mir in Verbindung mit der Unit SYNASER etwas Ärger. Im Entwicklungsprogramm soll auch ein serieller Monitor integriert sein. Das funktioniert für echte serielle Schnittstellen auch absolut problemlos. Einzig über einen USB2RS232 Adapter macht das ganze Kind Ärger (sehr sogar). Ich habe ein Minimalprogramm genieriert, das den Fehler verdeutlich (siehe Anhang). "Merkwürdiges" Verhalten hierbei ist: Starte ich mein Linux (Slackware 14) als Textkonsolenlinux (ohne X), kommen manchmal Zeichen, manchmal nicht, manchmal stürzt das Programm ab. Starte ich das Linux mit LXDE und starte dann das Programm, kommen manchmal korrekte Zeichen, meistens aber nicht (sagen wir Verhältnis 20 : 1). Jetzt kommt es aber: Habe ich zuvor Putty laufen lassen (um zu sehen, ob mein Adapter überhaupt funktioniert) seh ich, dass alles korrekt ist. Lass ich NACH Putty mein Testprogramm laufen, funktioniert auch dieses korrekt. Welche Einstellungen nimmt Putty noch vor, die ich nicht gemacht habe? Hat jemand ein ähnliches Problem schon einmal gehabt ?
> Welche Einstellungen nimmt Putty noch vor, die ich nicht gemacht habe?
stty regelt
Hallo Ralph, wahrscheinlich ist der Tip von g457 schon zielführend. Eine Bemerkung meinerseits, die aber wohl leider dein spezielles Problem nicht trifft. Ich verwende auch die synaser Library (Lazarus unter Linux und Windows), hier allerdings mit Hilfe der SdpoSerial Unit eingebunden. Habe auch eine virtuelle serielle Schnittstelle, die via USB tunnelt. Sie zeigt sich alledings im Linux /dev Verzeichniss als /dev/ttyACM0 (Debian-basiertes Linux Mint). Ich sende und empfange mit 115200 baud. Funktioniert problemlos. Gerhard
... dann google ich mal, was "stty regelt" macht ! ttyACM0 erscheint nicht im dev - Verzeichnis, weder bei einem PL2303 noch mit einem FTDI Chip ! (s und ich werde sicherlich nicht am Kernel werkeln, mir dauert das Übersetzen viel zu lange ... ich hab nicht wirklich die allerschnellsten Computer)
... so, jetzt hab ich stty angesehen. Das... war es leider nicht (wäre auch viel zu schön und wahr gewesen wenn es so einfach gewesen wäre). Beim Aufruf von stty werde mir vor dem Start von Putty (und meinem Testprogramm) dieselben Werte angezeigt wie nach dem Start von Putty ! Leider
> Beim Aufruf von stty werde mir vor dem Start von Putty (und meinem > Testprogramm) dieselben Werte angezeigt wie nach dem Start von Putty ! auch mit '--all'? auch während putty läuft?
... auch mit 'all'. Während putty läuft werde ich jetzt einmal gleich nachsehen (ich wußte nicht, dass ich stty für ein Device aufrufen kann wenn dieses gerade in Arbeit ist) Ich hab sogar kurzerhand ein Script erstellt, welches alle Einstellungen so vornimmt, wie mir stty --file=/dev/ttyUSB0 -a liefert. Vielleicht ... ist ja ein Parameter während der Laufzeit von putty anderst !
... zur Laufzeit von putty liefert stty dieselben Ergebnisse wie nach dessen Beendigung! Ich werde noch wahnsinnig, leider ! (Bin ich knapp davor aufzugeben und zu sagen: Okay, dann unterstützt das Programm halt keine USB2SERIAL Adapter ... aber das kann es ja bei "heutigen" Programmen ja auch nicht sein ... hrmpfgrmpf)
Lass doch Synaser einfach weg, das ist doch nur interessant, wenn man für mehrere Plattformen gleichzeitig entwickelt. Ich merke (ohne Synaser) keinen Unterschied ob direkt RS232 oder via USB/Bluetooth.
... na ja ... das Problem ist, dass ich zum einen das schon sehr auf Synaser abgestellt hab, zum anderen ich mir die Option das für Windows oder dem Raspberry zu machen offen halten mag !
So, damit man mir aber nicht nachsagen kann ich sei stur, hab ich das jetzt auch noch mit der Unit serial versucht... gleiches Symptom. Irgendetwas ... irgendetwas hab ich vergessen, ich kann auch mit den Parametern von stty herumspielen wie ich will, es bleibt das gleiche ! ... ich bin halt doch zu doof !
Hmmh, da kann man doch nicht viel falsch machen, liegt es ev. an Rechten? Ich habe mal meine Mini-Wrapper-Unit hierfür angehängt, bei mir gehts.
Guido B. schrieb: > Hmmh, da kann man doch nicht viel falsch machen, liegt es > ev. an Rechten? > Smile, das dachte ich auch, dass man da nicht viel falsch machen kann. Falsch gedacht. An den Rechten kann es nicht liegen, denn: - zum einen läuft es ja, wenn putty zuvor gelaufen ist. - zum anderen teste ich das alles mittlerweile als root Deine Mini-Unit erzeugt dasselbe Phänomen: Mit nativen RS-232 Schnittstellen ist alles oki, mittels eines USB2SERIAL Adapter leider nicht (ich hab nur 2 verschiedene hier, die ich testen kann, einen Logilink und einen DeLock, beide mit PL2303 Chip). Was machst du innerhalb deiner Unit mit der Stringvariable Stage1. Schickst du diesen "zusammengesetzten" String nach dem Öffnen an das Device ?
Stage1 ist nur der Übersicht halber hier drin. Es ist die 1. Stufe meines Bootstraploaders, einige Bytes werden im Hauptprogramm noch geändert und dann wird es gesendet. Mit einem Pl2303 funktioniert es bei mir. Im Grunde kenne ich das Problem nur von Windows und mit dem Hyperterminal. Damals bin ich folgendermaßen vorgegangen, das könnte auch mit Synaser gehen: - Rechner starten, eigenes Programm starten, welches die Flags der Schnittstelle ausliest. - Hyperterminal starten, Schnittstelle öffnen, testen und Programm beenden. - Wieder Schritt 1 und Unterschiede notieren.
So, jetzt hab ich auch das ausprobiert wobei ich mir nicht wirklich sicher bin, ob es noch "andere" Flags gibt (jetzt mußte ich erst einmal die synaser-unit verändern um an die Flags zu kommen). Wie leider erwartet: NICHTS. Es ist mir auch überhaupt nicht einsichtig, warum das an den Flags liegen soll (mittlerweile), weil dieselbe Routine funktioniert ja bei nativen Schnittstellen absolut korrekt. Im Anhang hab ich mittels stty genau DIE Einstellungen vorgenommen, die putty hinterlässt. Also hab ich jetzt einmal das ganze OHNE Programmiersprache getestet um zu sehen wie es sich dann verhält. Aufruf ohne vorheriges laufen lassen von Putty: setusb cat /dev/ttyUSB0 Ergebnis: Murks, ein paar (wenige) Zeichen sind manchmal übertragen. Putty laufen lassen und dann das ganze noch einmal: setusb cat /dev/ttyUSB0 und siehe da: alles ist wunderbar ! Ich werde wirklich noch verrückt, weil mir langsam die Ideen ausgehen wie ich das zum Laufen bekommen soll, wenn ich es noch nicht mal schaffe, den Adapter auf der Konsole direkt zum Funktionieren zu bringen. Weiß wirklich keiner Rat ?
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.