Forum: PC-Programmierung Synaser und /dev/ttyUSB0


von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

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 ?

von g457 (Gast)


Lesenswert?

> Welche Einstellungen nimmt Putty noch vor, die ich nicht gemacht habe?

stty regelt

von Gerhard Z. (germel)


Lesenswert?

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

von Ralph S. (jjflash)


Lesenswert?

... 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)

von Ralph S. (jjflash)


Lesenswert?

... 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

von g457 (Gast)


Lesenswert?

> 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?

von Ralph S. (jjflash)


Lesenswert?

... 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 !

von Ralph S. (jjflash)


Lesenswert?

... 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)

von Guido B. (guido-b)


Lesenswert?

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.

von Ralph S. (jjflash)


Lesenswert?

... 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 !

von Ralph S. (jjflash)


Lesenswert?

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 !

von Guido B. (guido-b)


Angehängte Dateien:

Lesenswert?

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.

von Ralph S. (jjflash)


Lesenswert?

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 ?

von Guido B. (guido-b)


Lesenswert?

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.

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.