(gelöst) kUbuntu 10.10 Probleme mit seriellen Port

Alles zur Entwicklung von KDE - Anwendungen
Antworten
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 20:41

(gelöst) kUbuntu 10.10 Probleme mit seriellen Port

Beitrag von Ritchie » 7. Dezember 2010 13:57

Hallo Zusammen,

hat Erfahrungen damit gemacht, das sich offensichtlich etwas in der Ansteuerung der seriellen Schnittstetelle geändert hat.

Wenn ja, gibt es irgendwo ein Log, wo man nachlesen kann, was sich geändert hat.

Mein Binary Übertragung arbeiten nicht mehr, seit dem ich auf kUbuntu 10.10 mein System geupdated habe.

Gruss R.

Edit:
Störende Pakete sind 'brltty' oder 'brtty' und 'modem-manager'. :-)
Zuletzt geändert von Ritchie am 10. Dezember 2010 17:11, insgesamt 3-mal geändert.

franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf » 7. Dezember 2010 14:07

Ich hab kein Ubuntu, und auch keine Serielle Schnittstelle. Google hat nach ein wenig Quängeln aber das ausgespuckt:
http://www.linux.org/docs/ldp/howto/Ser ... TO-11.html
Bringt dich das weiter?

Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 20:41

Beitrag von Ritchie » 7. Dezember 2010 18:11

Hallo,

nun ja, hinter dem Link ist eine Beschreibung, wie man die Software erstellen soll, wenn man eine serielle Schnittstelle abfragen will.

Mein Routine hat eigentlich unter kUbuntu 9.4 / 10.4 korrekt gearbeitet. Ich konnte zwischen diesen beiden Rechner eine Binäre-Datenübertragung ohne Probleme fahren.
(Habe ein Simulationsprogramm für das Protokoll 3964 von Siemens geschrieben und am laufen.

Bei der Erstellung hatte ich damals schon Probleme, alleine in Sachen Doku., konnte diese aber alle lösen.

Nach dem Update auf 10.10 habe ich jetzt keine stabile Verbindung mehr und teilweise lässt sich der Port ttyS0 nicht mehr öffnen. Hier kommt die Fehlermeldung dev nicht vorhanden,
jedoch ist die Datei /dev/ttyS0 vorhanden.

Ich suche eigentlich nur die Stelle(n), wo beschrieben ist, was die Entwickler in diesem Teilbereich geändert haben, damit ich mein Programm anpassen kann.

Edit1:
Scheint ein Sicherheitproblem zu sein:
http://www.ubuntu-forum.de/artikel/5158 ... enied.html

Jedoch sind meine Benutzer bereits Mitglied in "dialout".

Code: Alles auswählen

	if ((fd = open("/dev/ttyUSB0", (O_RDWR | O_NOCTTY | O_SYNC))) == -1)
		{
Das Programm bleibt in diesem Aufruf hängen ??


Gruss R.

kater
Beiträge: 306
Registriert: 29. Dezember 2009 02:13
Wohnort: Darmstadt

Beitrag von kater » 7. Dezember 2010 22:05

Ach wie war das... buntu installiert irgendein Programm welches die erste serielle Schnittstelle belegt. berilie berlly beryl ich komm nicht drauf. Irgendwas mit Blindenschrift, Eingabehilfe für Behinderte, oder sowas.

Wenn man danach sucht steht als erstes immer, man solle es deinstallieren ^^ Mir fällt dummerweise grad nicht ein wie es heisst und auf die schnelle auch nicht bei google gefunden. Aber vllt. hast du mehr Glück :)

franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf » 7. Dezember 2010 22:49

kater hat geschrieben:berilie berlly beryl ich komm nicht drauf. Irgendwas mit Blindenschrift, Eingabehilfe für Behinderte, oder sowas.
Braille? Unter Gentoo hab ich als Paket das "nfbtrans" gefunden - meinst du das?

kater
Beiträge: 306
Registriert: 29. Dezember 2009 02:13
Wohnort: Darmstadt

Beitrag von kater » 8. Dezember 2010 05:45

brltty heisst es
http://www.ladyada.net/learn/arduino/lesson0-lin.html
If you see something like this

[ 1900.712000] ftdi_sio 2-10:1.0: FTDI USB Serial Device converter detected
[ 1900.712000] drivers/usb/serial/ftdi_sio.c: Detected FT232BM
[ 1900.712000] usb 2-10: FTDI USB Serial Device converter now attached to ttyUSB0
[ 1901.868000] usb 2-10: usbfs: interface 0 claimed by ftdi_sio while 'brltty' sets config #1
[ 1901.872000] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[ 1901.872000] ftdi_sio 2-10:1.0: device disconnected

That means you have not uninstalled brltty and you should try again.
http://wiki.laptop.org/go/Serial_adapte ... 9_software
Debian (and derivative) distros come with the brltty package installed. This package conflicts with using the device as a plain serial port. Upon insertion the brltty driver takes over the device and disconnects the /dev/ttyUSBn device. The solution to this is to remove or disable the brltty package. On Debian (and derivatives) you can do this with

sudo apt-get remove brltty

Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 20:41

Beitrag von Ritchie » 8. Dezember 2010 10:13

Hallo "kater",

werde das heute abend sofort prüfen. Hat mich eine Menge Nerven gekostet, da ich mir das nicht erklären konnte.

Danach sollte ich wohl, wenn es das ist, eine Funktion einbauen, welche prüft, ob die serielle Schnittstelle von jemand anderem verwendet wird.

Hätte ich eigentlich von dem Aufruf erwartet, das er mit Fehlermeldung beendet wird und nicht einfach "stirbt".

Gruss R.

kater
Beiträge: 306
Registriert: 29. Dezember 2009 02:13
Wohnort: Darmstadt

Beitrag von kater » 8. Dezember 2010 10:50

Eigentlich nicht nein. Warum nutzt du das Flag O_NOCTTY?

O_NOCTTY:
If pathname refers to a terminal device -- see tty(4) -- it will not become the
process's controlling terminal even if the process does not have one.

Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 20:41

Beitrag von Ritchie » 8. Dezember 2010 13:39

Weil ich eine Binäre Datenübertragung fahre und nicht haben will,
das Steuerzeichen interpretiert werden.
Die Software hat ja bereits ein Jahr lang so korrekt gearbeitet.

Edit1:
Joo, habe den Text "britty" erst gelesen und danach gesucht. Es ist aber BRTTY nur klein geschrieben. Das war noch auf einer Installation zu finden.


Ich habe jetzt gtkTerm auf beiden Rechner installiert und ich kann via Terminal in beiden Richtungen Daten übertragen. Die Schnittstellen sind also verfügbar. (jedenfalls für gtkTerm)

Jetzt habe ich auch den "ttyUSB0 Treiber gegen eine ttyS0 Schnittstelle an dem zweiten Rechner ersetzt. Läuft immer noch nicht :-(

Edit 2:
So, ein Testprogramm von Rechner 1 zu 2 arbeitet auch korrekt.
Wird der Port vom Hauptprogramm einmal korrekt geöffnet, arbeitet die Übertragung korrekt.

Das ganze läuft in einem Thread im Hintergrund (SysTray), wurde evtl. der Stackbereich verkleinert ? Ich sehe immer in eine Stringumwandlung nach den Aufruf "Schmutzzeichen" ...

Edit 3:
Ach ja,
lsof /dev/tty*
Zeige keine offenen Dateien, es ist also kein anderer beteiligt, obwohl die Fehlermeldung aussagt. "Device nicht vorhanden"



Gruss R.
Zuletzt geändert von Ritchie am 8. Dezember 2010 21:56, insgesamt 2-mal geändert.

kater
Beiträge: 306
Registriert: 29. Dezember 2009 02:13
Wohnort: Darmstadt

Beitrag von kater » 8. Dezember 2010 18:56

Aber das Flag ist doch für was ganz anderes zuständig als Steuerzeichen, oder hab ich das komplett falsch verstanden.

Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 20:41

Beitrag von Ritchie » 8. Dezember 2010 19:03

Hi,

habe es auch mal weg genommen. Keinen Einfluss. Es klappt ja auch mal, aber eben nicht stabil.

Code: Alles auswählen

//	p=comPortString.toLocal8Bit();						// Convert QT -> char
	if ((fd = open("/dev/ttyS0", (O_RDWR | O_NOCTTY | O_SYNC ))) == -1)
		{
		error=errno;
		ErrorText=tr("initPort: Can't open device %1 because of %2").arg(comPortString).arg(strerror(error));
		qDebug() << ErrorText;
		ErrorStatus=true;
		return;
		}
Wenn ich auf den ttyUSB0 Port schalte, arbeitet das Programm auf dem einen Rechner nicht mehr. Es bleibt im Aufruf stehen.
Hier habe ich jetzt eine echt serielle Schnittstelle, bis das Problem gelöst ist. (hoffe auf Treiberfehler)

Auf dem anderen Rechner scheint die Wandlung von QString nach ASC nicht immer korrekt zu arbeiten, daher wurde der Port nicht korrekt geöffnet (hier ist es bereits ttyS0).

Code: Alles auswählen

const		char	*p;

	p=comPortString.toLocal8Bit();						// Convert QT -> char

Wo ist der Fehler ?
wahrscheinlich deshalb! Ein geändertes timing im OS könnte den Fehler hervorgerufen haben, der schon immer im Programm vorhanden ist/war.
http://doc.trolltech.com/4.7/qstring.html
Note: All functions in this class are reentrant, except for ascii(), latin1(), utf8(), and local8Bit(), which are nonreentrant.

Gruss R.

Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 20:41

Beitrag von Ritchie » 8. Dezember 2010 22:00

Nochmals vielen Dank an Euch beide,

alleine wäre ich nicht so schnell weiter gekommen !

Gruss Ritchie :-)

P.S.: Das störende Paket kann auch 'BRLTTY' (klein geschrieben) heissen unter kUbuntu.
Edit: Und das Paket 'Modem-Manager' für UMTS handys

Antworten