| Autor |
|
|
|
BID = 441093
Morgoth Schreibmaschine
    
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
|
Hallo Zusammen!
Hat sich hier schonmal jemand die Mühe gemacht PonyProg2000 unter Linux zu compilieren?
Ich habe das gestern endlich erfolgreich hingekriegt (zuerst waren nicht alle Pakete installiert, die man braucht um loscompilieren zu können, und die werden längst nicht alle in der Anleitung erwähnt).
Natürlich funktionierte dann erstmal noch garnichts, weil ich nen USB-RS232-Adapter verwende, und der muss ja zuerst mal den richtigen Port zugeordnet bekommen... Nun, das habe ich inzwischen erfolgreich hingekriegt (wenn man mal weiß wie's am besten geht ganz einfach...), der Adapter hört jetzt auf "ttyS0", was ja COM1 unter Windows entspricht (So steht es sogar im Quelltext von PonyProg, also sollte sich das programm ja auch daran halten...). Er lässt sich auch ansprechen, und tut was er soll.
Nur Ponyprog tut nicht was es soll... wenn ich da meinen "SI-Prog I/O" anwähle und dann noch COM1, schlägt "Probe" fehl, auch wenn ich alle andern Variationen von Programmer und COM-Port durchprobiere.
Langer Rede kurzer Sinn:
Ponyprog2000 weigert sich/ist unfähig meinen RS2323-Port anzusprechen.
Hat zufällig jemand ne Idee was da noch im Wege stehen könnte?
Meine Linux Distribution ist Ubuntu 6.06.1,
Der Adapter hat unter WindowsXP mit Ponyprog2000 und dem SI-Prog funktioniert.
Grüße
Tobias
_________________
Es irrt der Mensch solang er strebt |
|
BID = 441132
faustian.spirit Schreibmaschine
    
Beiträge: 1388 Wohnort: Dortmund
|
|
Hat denn der Benutzer, unter dem Du das Programm ausführst, überhaupt entsprechende Rechte an /dev/ttyS0 bzw /dev/ttyS1 (gelegentlich sind die unter Linux verdreht, da hab ich schon einiges erlebt)? |
|
BID = 441136
Dombrowski Stammposter
   
Beiträge: 450
|
Moin.
Du musst "SI Prog API" nehmen. "/dev/ttyS0" heißt ja gerade, dass der Zugriff über das API geht. "SI Prog I/O" und die anderen "xyz I/O" sind unter Linux bähbäh.
Dass es inzwischen (...seit 2 Monaten) ein PonyProg2000 V2.07a gibt, ist bekannt, ja?
D.
|
BID = 441147
Morgoth Schreibmaschine
    
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
Das habe ich eigentlich schon alles probiert...
Die passende Rechte habe ich wie ich gerade rausgefunden habe immer noch nicht (hatte aber immer mit sudo gestartet, bzw den Port angesprochen), obwohl ich mich eigentlich in die passenden Gruppen eingetragen habe.
Und wie ich oben schrieb HÖRT der Port auf ttySO, das heißt, wenn ich da nen Text an ttyS0 rausschicke kommt er auch raus.
Meine Version ist natürlich die neuste (diese Woche nochmal frisch runtergeladen), aber die fängt ja auch mit 2000 an (Die fertig compilierte bin heißt ja dann auch einfach "ponyprog2000")
Wenn ich PonyProg ohne sudo starte dagt er dass ich keine I/O rechte habe. Mit sudo und API-Auswahl sagt er, wenn ich den Chip lesen will: "Communication Port not available (-16)".
Wie es scheint muss ich heute Nachmittag noch ein bissel an den Rechten basteln...
Danke für die Hinweise
_________________
Es irrt der Mensch solang er strebt
|
BID = 441153
faustian.spirit Schreibmaschine
    
Beiträge: 1388 Wohnort: Dortmund
|
Zu den Rechten gibt es zwei Dinge zu beachten:
-Ein Eintragen in Gruppen ist nicht sofort wirksam sondern erst ab dem nächsten login (eine ssh-Schleife oder ein Zweitlogin tun es aber!), da die Gruppen dem "logischen" Benutzer aus Kernelsicht nur genau einmal beim Login "angeknotet" werden (das hat sehr gute technische Gründe).
-Heutzutage hat man auf vielen Systemen ein /dev-Managementsystem wie udev (wahrscheinlich! Ist bei Ubuntu Standard) oder devfs installiert, was /dev zum Flurförderzeugbereich macht. Oft werden vermeintliche Änderungen schnell automatisch rückgängig gemacht.
|
BID = 441156
Dombrowski Stammposter
   
Beiträge: 450
|
Moin.
Via USB emulierte serielle Schnittstellen werden ja normalerweise über /dev/ttyUSBn angesprochen... Wie hast du das hingekriegt, dass es trotzdem über ttySn geht? Ich wüsste nicht, wie man so einen Bezeichner /dev/ttyUSBn in Ponyprog integriert - außer durch Ändern vom Quellcode.
Einstellung "I/O" geht bei emulierten Schnittstellen schon mal gar nicht. Das kann nicht funktionieren, denn die betreffenden I/O Ports existieren ja nicht, und Abfangen von Portzugriffen zu Emulationszwecken wird AFAIK unter Linux nicht gemacht.
Die Sache mit den Rechten ist sicher lösbar, denn mit sudo u.ä. hantiert man nur im äußersten Notfall herum. Deswegen "bähbäh". "ls -l /dev/ttyS*" (oder welches Device auch immer) zeigt die Rechte ja. Wenn es nicht über Gruppenzugehörigkeit geht und falls die Devices bei dir dynamisch erzeugt werden, musst du Änderungen wohl über udev machen. Damit kenne ich mich aber nicht aus, nur mit devfs.
Neue Ponyprog-Version meinte ich vor allem wegen neuer Features (tiny13 etc.), nicht wg. evtl. Fehlerbeseitigung.
D.
|
BID = 441161
Morgoth Schreibmaschine
    
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
Über udev kann man mittels
einer .rules-Datei mit dem Inhalt
| Code : |
KERNEL=="ttyUSB0", NAME="ttyS0" |
|
hinkriegen, dass man den Adapter über "ttyS0" ansprechen kann. Das funktioniert auch perfekt, wie gesagt, ich kann ohne weiteres einen Text an ttyS0 schicken und er kommt aus dem Adapter "raus"
Das mit den Rechten kann ich erst heute nachmittag nachgucken.
_________________
Es irrt der Mensch solang er strebt
|
BID = 441214
Dombrowski Stammposter
   
Beiträge: 450
|
Moin.
Ahso.
"Communication Port not available (-16)" kann an etlichen Stellen getriggert werden. Um dem Ursprung auf die Spur zu kommen, aktivier mal User Debug 1-3 unter File->Debug; vielleicht reicht auch schon User Debug 1. Dann werden Namen von Funktionen, Return Codes, usw. ausgegeben. Dazu Ponyprog vorher von einer Konsole aus starten.
D.
|
BID = 441224
Morgoth Schreibmaschine
    
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
Hi, hier die Ausgabe, wenn ich zuerst SI-Prog API anwähle, dann einmal "probe" und danach noch versuche den Chip zu lesen.
| Code : |
e2Dialog::UpdateDialog() IN *** init=1, type=0
e2Dialog::Test() IN *** p=1, open_only=1
e2App::TestPort(port=1, open_only=1)
BusInterface::TestOpen(1) IN
BusInterface::TestSave(1) IN
SIProgInterface::Close() IN *** Inst=0
SIProgInterface::Close() OUT
SIProgInterface::Open(1) IN *** Inst=0
RS232Interface::OpenSerial(1) I
RS232Interface::OpenSerial() now lock the device /var/lock/uucp/LCK..ttyS0
RS232Interface::OpenSerial Can't lock port 0
SIProgInterface::Open() = -16 OUT
BusInterface::TestSave() = -16 OUT
BusInterface::TestRestore() IN *** Inst=0
BusInterface::TestRestore() OUT
BusInterface::TestOpen() = -16 OUT
e2App::TestPort() = -16
e2Dialog::Test() = -16 *** OUT
e2Dialog::Test() IN *** p=2, open_only=1
e2App::TestPort(port=2, open_only=1)
BusInterface::TestOpen(2) IN
BusInterface::TestSave(2) IN
SIProgInterface::Close() IN *** Inst=0
SIProgInterface::Close() OUT
SIProgInterface::Open(2) IN *** Inst=0
RS232Interface::OpenSerial(2) I
RS232Interface::OpenSerial() now lock the device /var/lock/uucp/LCK..ttyS1
RS232Interface::OpenSerial Can't lock port 1
SIProgInterface::Open() = -16 OUT
BusInterface::TestSave() = -16 OUT
BusInterface::TestRestore() IN *** Inst=0
BusInterface::TestRestore() OUT
BusInterface::TestOpen() = -16 OUT
e2App::TestPort() = -16
e2Dialog::Test() = -16 *** OUT
e2Dialog::Test() IN *** p=3, open_only=1
e2App::TestPort(port=3, open_only=1)
BusInterface::TestOpen(3) IN
BusInterface::TestSave(3) IN
SIProgInterface::Close() IN *** Inst=0
SIProgInterface::Close() OUT
SIProgInterface::Open(3) IN *** Inst=0
RS232Interface::OpenSerial(3) I
RS232Interface::OpenSerial() now lock the device /var/lock/uucp/LCK..ttyS2
RS232Interface::OpenSerial Can't lock port 2
SIProgInterface::Open() = -16 OUT
BusInterface::TestSave() = -16 OUT
BusInterface::TestRestore() IN *** Inst=0
BusInterface::TestRestore() OUT
BusInterface::TestOpen() = -16 OUT
e2App::TestPort() = -16
e2Dialog::Test() = -16 *** OUT
e2Dialog::Test() IN *** p=4, open_only=1
e2App::TestPort(port=4, open_only=1)
BusInterface::TestOpen(4) IN
BusInterface::TestSave(4) IN
SIProgInterface::Close() IN *** Inst=0
SIProgInterface::Close() OUT
SIProgInterface::Open(4) IN *** Inst=0
RS232Interface::OpenSerial(4) I
RS232Interface::OpenSerial() now lock the device /var/lock/uucp/LCK..ttyS3
RS232Interface::OpenSerial Can't lock port 3
SIProgInterface::Open() = -16 OUT
BusInterface::TestSave() = -16 OUT
BusInterface::TestRestore() IN *** Inst=0
BusInterface::TestRestore() OUT
BusInterface::TestOpen() = -16 OUT
e2App::TestPort() = -16
e2Dialog::Test() = -16 *** OUT
e2Dialog::UpdateDialog() OUT ***
e2Dialog::Test() IN *** p=0, open_only=0
e2App::TestPort(port=1, open_only=0)
SIProgInterface::TestPort(1) IN
BusInterface::TestSave(1) IN
SIProgInterface::Close() IN *** Inst=0
SIProgInterface::Close() OUT
SIProgInterface::Open(1) IN *** Inst=0
RS232Interface::OpenSerial(1) I
RS232Interface::OpenSerial() now lock the device /var/lock/uucp/LCK..ttyS0
RS232Interface::OpenSerial Can't lock port 0
SIProgInterface::Open() = -16 OUT
BusInterface::TestSave() = -16 OUT
BusInterface::TestRestore() IN *** Inst=0
BusInterface::TestRestore() OUT
SIProgInterface::TestPort() = -16 OUT
e2App::TestPort() = -16
e2Dialog::Test() = -16 *** OUT
e2ProgressDialog::UpdateDialog() closing...
e2ProgressDialog::UpdateDialog() showing... (Reading...)
e2AppWinInfo::Read(1,1,0) - IN
e2App::OpenBus(80e5488h)
SIProgInterface::Close() IN *** Inst=0
SIProgInterface::Close() OUT
e2App::OpenBus() ** Close
SIProgInterface::Open(1) IN *** Inst=0
RS232Interface::OpenSerial(1) I
RS232Interface::OpenSerial() now lock the device /var/lock/uucp/LCK..ttyS0
RS232Interface::OpenSerial Can't lock port 0
SIProgInterface::Open() = -16 OUT
e2App::OpenBus() ** Open = -16
e2App::OpenBus() = -16
e2AppWinInfo::Read() ** OpenBus = -16
e2AppWinInfo::Read() = -16 - OUT
CmdWindow->Read -- Error
|
|
Ich bin mittlerweile automatisch Besitzer von ttyS0, daran lag es aber wohl nicht (nur)...
_________________
Es irrt der Mensch solang er strebt
|
BID = 441229
faustian.spirit Schreibmaschine
    
Beiträge: 1388 Wohnort: Dortmund
|
Also ich würde den Locking-Mechanismus vermuten... vielleicht existiert das Verzeichnis /var/lock/uucp ja gar nicht, oder die Rechte sind falsch.
Ansonsten: apt-get install strace && man strace
|
BID = 441232
Morgoth Schreibmaschine
    
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
Zitat :
faustian.spirit hat am 5 Jul 2007 15:38 geschrieben :
|
Also ich würde den Locking-Mechanismus vermuten... vielleicht existiert das Verzeichnis /var/lock/uucp ja gar nicht,...
|
Volltreffer!
Nur was fange ich mit dieser Information an? Einfach erstellen wird nicht sein...
Beim compilieren gab es ähnliche Probleme, die sich durch nur durch installation einiger pakete beheben ließen... Welches Paket ist es wohl diesmal?
_________________
Es irrt der Mensch solang er strebt
|
BID = 441236
faustian.spirit Schreibmaschine
    
Beiträge: 1388 Wohnort: Dortmund
|
Doch. Erstellen könnte tatsächlich enorm helfen.
|
BID = 441238
Morgoth Schreibmaschine
    
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
Tatsächlich...
DANKE!!!
Aber laaaaaaaaaaaaaaaaangsam ist dieser Adapter... aber das war er ja schon unter Windows
_________________
Es irrt der Mensch solang er strebt
[ Diese Nachricht wurde geändert von: Morgoth am 5 Jul 2007 16:06 ]
|
BID = 441310
Dombrowski Stammposter
   
Beiträge: 450
|
Moin.
Okay, gut dass es geht.
Das gegenseitige Blockieren gelingt nur, wenn verschiedenste Programme im System die gleichen Lockfiles benutzen - gleicher Name, gleiches Verzeichnis. /var/lock/uucp als Standort für Lockfiles ist anscheinend uralt. In /usr/src/linux/Documentation/devices.txt steht ganz hinten der Hinweis, als Lockfiles für die seriellen Ports /var/lock/LCK..ttySn zu benutzen. Auch schon in Kernel-2.2.1 von 1999, den ich mal als alte Referenz genommen habe. Aktuelle Beispiele: minicom und irrecord (von LIRC) halten sich an den Hinweis; in deren Binaries sind die Zeichenfolgen "/var/lock" u. "LCK.." zu finden, aber kein "uucp". Deshalb schlage ich vor, auch in den PonyProg Sourcen das uucp aus der Definition von LOCK_DIR zu streichen (oben in rs232int.cpp).
D.
|
BID = 441340
Morgoth Schreibmaschine
    
Beiträge: 2930 Wohnort: Rockenhausen (Pfalz)
|
Jo, das könnte sinnvoll sein, wenn ich schon dabei bin kann ich ja direkt den Serial-port umtaufen.
Aber das hat jetzt zuerst mal Zeit...
_________________
Es irrt der Mensch solang er strebt
|