Hallo zusammen
Startrail hat geschrieben:Ich habe bemerkt, dass die Konsole mit der neusten version (0.2.86) einige Anläufe braucht, um sich mit der Kamera zu verbinden:
...
[0,2] Canon PowerShot A530 : (null)
Die Neuerung für mehrere Kameras habt ihr ja schon bemerkt. Allerdings glaube ich sie hat derzeit eher ein kurzes Zwischenspiel, denn VxWorks (wie im Bsp. der A530) liefert offenbar keine Seriennummer mit. Diese ist für die Kameraerkennung unerlässlich.
Meine Erfahrungen mit Kameras und libusb unter Windows:
Ich hatte erwartet, dass libusb den pysikalischen Aknschluss der Kamera am USB wiedergibt. Dafür sind ja die Optionen --bus und --dev da. Dem scheint aber nicht so zu sein. Egal an welchem USB-Anschluss ich die Kameras angeschlossen habe, sie wurden immer am BUS 0 indentifiziert und die Gerätenummern bekamen Werte ab 1 in fortlaufender Folge. Bei zwei Kameras daher 1 und 2.
Um mehrere Kameras erkennen und indentifizieren zu können, muss eine bestehende Konsolenverbindung zuvor getrennt werden und dadurch wird es ganz verwirrend.
Ein Beispiel:
Es sind zwei Kameras angeschlossen und eingeschaltet. Libusb hat die Gerätenummern 1 und 2 vergeben. Führt man nun ein REBOOT mit Kamera 1 durch und versucht, wie bisher, mit einem RESET die Konsole mit der neu gestarteten Kamera zu verbinden, wird diese nicht gefunden. Der Grund ist die geöffnete Konsole für die Gerätenummer 1. Diese verhindert, dass die Gerätenummer 1 wieder vergeben wird und damit erhält Kamera 1 nun die Nummer 3. Um jetzt nach der Kamera zu fragen muss die Konsole zur Gerätenummer 1 geschlossen werden. Eine erste Abfrage mit ptpcam -l liefert die Gerätenummern 2 und 3. Ein Versuch Kamera 1 über -dev=3 zu erreichen schlägt aber fehl, da durch das Schliessen der Konsole libusb den Kameras mittlerweile die Gerätenummern nach vorn verschob und damit die Nummern 1 und 2 zugewiesen hat. Allerdings ist jetzt Kamera 2 über --dev=1 und Kamera 1 über --dev=2 erreichbar. Daher wird in der GUI ptpcam -l nach einer Sekunde Wartezeit nochmals aufgerufen und daher auch die Notwendigkeit die Seriennummern mittels ptpcam --dev=.. -i auszulesen. Nur durch die Seriennummer kann die richtige Kamera wieder angesprochen werden.
Das gleiche gilt natürlich auch, wenn sich die Kamera durch die Stromspareinstellungen abschaltet.
Diese Verfahrensweise benötigt also etwas Zeit und ist offenbar auch fehleranfällig. Zusätzlich liefert VxWorks nicht einmal ein Indentifikationsmerkmal (siehe oben).
Bisher wurde die Kammera immer über die Gerätenummer 0 angesprchen, was für libusb bedeutet "nimm die Erste die du findest".
Aus diesen Erkenntnissen bin ich dafür diese Funktion wieder aus der GUI zu entfernen. Was meint Ihr?
Startrail hat geschrieben:Wäre es vielleicht sinnvoller erst nachdem das Bild geladen wurde den Balken zu verlängern?
Ja, da kann ich in Zeile 1208 $i+1 durch $i ersetzen.
Eine Optimierung will ich noch vorstellen. Diese Betrifft das Ausführen von Lua-Code mit dofile(). Um nicht jedes Mal erst den Code der Datei "ptpgui.lua" übertragen zu müssen, wird dazu zukünftig eine Bibliothek erstellt, welche einmalig beim Initialisieren und Erfordernis übertragen wird. Da eine Bibliothek eine Lua-Tabelle ist in der Funktionen und Variablen gespeichert sind, kann diese mit 'require "bibliothek"' geladen werden und liefert diese Tabelle zurück. Daher ist folgender Aufruf möglich:
- Code: Alles auswählen
require "bibliothek".funktion()
oder
require "bibliothek".variable
Im Debugfenster der GUI sieht es dann so aus:
- Code: Alles auswählen
>> luar require("lptpgui").version << 86 (56) (Length: 7)
>> luar require("lptpgui").dcimdl() << 6
A/ptpgui.txt
9 (Length: 18)
>> download A/ptpgui.txt ptpgui.txt << (Length: 0)
Gruß rudi