[PTP] elementare PTP-Interface-Funktion

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 14.11.2010, 21:03

Hallo TZocker,

Kannst Du uns noch kurz mitteilen mit welchen Betriebs-System:

  • Windows, Linux, OSX,..
  • Version
  • 32/64 Bit

Du das gemacht hast ?


Wie mach man ein foto?


<conn> mode 1
<conn> lua shoot()

Wieder in den Display-Modus wechseln:

<conn> mode 0

ist es eigentlich normal das die Kamera ab und an abstürtz?


Ja/Nein aber bei mir muss man zumindest nach einem Fehler einen "<conn> reset" machen.

<conn> m 16 16
00000010 14 f0 9f e5 00 00 a0 e1 10 f0 9f e5 10 f0 9f e5 |................|


Interessant das da das gleiche wie bei mir steht.

luar get_buildinfo().version.." Funzt leider nicht


Bei Eingaben ist das Program recht entfindlich. Evtl. war da ein Fehler. Probiere es mal nur mit:

<conn> luar get_buildinfo().version

Viele Grüße,
TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 15.11.2010, 14:02

Hallo rudi,

Ein Problem habe ich gefunden in CHDK core/ptp.c:

Syntax: [ Download ] [ Verstecken ]
Benutze C Syntax Highlighting
// #define BUF_SIZE 0x20000 // XXX what's a good camera-independent value?
#define BUF_SIZE 0x2000  // is ok for ixus100is
Erstellt in 0.002 Sekunden, mit GeSHi 1.0.8.9



Mit einem fest ein programmierten "filename", konnte ich dann einen Upload/Download machen.

Ein weiteres Problem ist evtl: malloc(temp_data_extra+1); :

Syntax: [ Download ] [ Verstecken ]
Benutze C Syntax Highlighting
case PTP_CHDK_DownloadFile:
      {
        FILE *f;
        int tmp,t,s,r,fn_len;
        char *buf, *fn;

#ifdef DIDI_DEBUG
    script_console_add_line( "PTP_CHDK_DownloadFile" );
#endif
        if ( temp_data_kind != 1 )
        {
          ptp.code = PTP_RC_GeneralError;
          break;
        }
#ifdef DIDI_DEBUG
    fn = myfile;
#else
        fn = (char *) malloc(temp_data_extra+1);
        if ( fn == NULL )
        {
          free(temp_data.str);
          temp_data_kind = 0;
          ptp.code = PTP_RC_GeneralError;
          break;
        }
Erstellt in 0.005 Sekunden, mit GeSHi 1.0.8.9


Viele Grüße,

TaiJiGong

 ! msl hat geschrieben:
Bitte bei Quellcode entsprechenden Syntax-Highlighter verwenden - Beitrag entsprechend korrigiert.
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 15.11.2010, 16:52

Hallo rudi,

malloc(temp_data_extra+1)


Scheint doch OK zu sein. Nur meine Kamera hat wohl noch ein paar Probleme..... Zumindest war es ein mal gegangen. Die Filenamen wurden Richtig übertragen.


Viele Grüße,

TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: elementare PTP-Interface-Funktion

Beitragvon TZocker » 15.11.2010, 17:08

Win Xp 32 bit

wäre es möglich ein win cmd zu machen das automatisch den service canon camera access beendendet

<conn> mode 1
<conn> lua shoot()

Wieder in den Display-Modus wechseln:

<conn> mode 0

funzt nur wenn man auf kameramodus manuel wechselt und dan den jetauslöse button drückt

jetzt funktioniert es mit luar get_buildinfo().version


es wäre toll wenn ihr eine test rotine in die cmd einbauen könntet
Canon A 650 IS
TZocker
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 51
Registriert: 12.06.2009, 16:20
Kamera(s): A 650

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 15.11.2010, 21:49

Hallo Zusammen,

@TZocker

Da ich beim erstellen der Tabelle gemerkt habe das Deine Kamera im ersten Beitrag nicht auf gelistet war. Meine Frage an Dich: Hast du dazu Veränderungen in CHDK source vorgenommen, wenn JA teile sie uns bitte mit.

@CHDK Programmierer

Code: Alles auswählen
// #define BUF_SIZE 0x20000 // XXX what's a good camera-independent value?
#define BUF_SIZE 0x2000  // is ok for ixus100is


Bin mir nicht sicher, aber ich hatte die letzten Tage wohl irgendwo gelesen das die Packetgröße bei USB 512 Byte ist. Daher braucht der Buffer evtl. nicht all zu groß gewählt werden. Man könnte statt einer FIXEN Größe auch eine VARIABLE Größe nutzen, indem man testet welche max. Größe man mit malloc() bekommt. Ausgehend von einem default Wert, den dann immer (in einer Schleife) halbieren.

Wenn das ganze bei mir mal etwas stabiel läuft kann ich da ein paar Tests machen, in wie weit die Buffer-Größe auf Geschwindigkeit Einfluss hat.

Mein erster Versuch eine Tabelle zu erstellen:

@rudi
ich hätte gerne so eine Tabelle im ersten Beitrag, damit man etwas Übersicht hat. Schade nätürlich das das dann nur Du aktuell halten kannst.

@alle
oder gibt es für sowas vieleicht auch eine andere/bessere Lösung ?


Fragen:
Gibt es Kommentare ? So was wie <!-- test --> geht leider nicht.
Tabellen Breite ist beschränkt. Kann man das ändern ?

Viele Grüße,

TaiJiGong

KameraFirmwareSystemBitresetversionshutdownrebootmemorysetcalluploaddownloadmodelualuar
A430???------------
A540???+++++++--+++
A590101bWindows XP32++++++++++++
A650?Windows XP32?+??+??++++?
A720???++++++++++++
SX120???------------
IXUS95???------------
IXUS100100cLINUX opensuse64okokokokok????okokok
IXUS100100cWindows XP32okokokokok????okokok
IXUS100100cWindows 764okokokokok????okokok
IXUS870???++++++++++++
KameraFirmwareSystemBitresetversionshutdownrebootmemorysetcalluploaddownloadmodelualuar


Code: Alles auswählen
[table=width:50%;border:1px solid #cccccc;][tr=text-align:center;]
[td=border:1px solid #cccccc;] Kamera [/td]
[td=border:1px solid #cccccc;] Firmware [/td]
[td=border:1px solid #cccccc;] System [/td]
[td=border:1px solid #cccccc;] Bit [/td]
[td=border:1px solid #cccccc;] reset [/td]
[td=border:1px solid #cccccc;] version [/td]
[td=border:1px solid #cccccc;] shutdown [/td]
[td=border:1px solid #cccccc;] reboot [/td]
[td=border:1px solid #cccccc;] memory [/td]
[td=border:1px solid #cccccc;] set [/td]
[td=border:1px solid #cccccc;] call [/td]
[td=border:1px solid #cccccc;] upload [/td]
[td=border:1px solid #cccccc;] download [/td]
[td=border:1px solid #cccccc;] mode [/td]
[td=border:1px solid #cccccc;] lua [/td]
[td=border:1px solid #cccccc;] luar [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;]  A430  [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;] A540 [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;] A590 [/td]
[td=border:1px solid #cccccc;] 101b [/td]
[td=border:1px solid #cccccc;] Windows XP [/td]
[td=border:1px solid #cccccc;] 32 [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;] A650 [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] Windows XP [/td]
[td=border:1px solid #cccccc;] 32 [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] ? [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;] A720 [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;]  SX120  [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;] IXUS95 [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[td=border:1px solid #cccccc;] - [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;] IXUS100 [/td]
[td=border:1px solid #cccccc;] 100c    [/td]
[td=border:1px solid #cccccc;] LINUX opensuse[/td]
[td=border:1px solid #cccccc;] 64        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;] IXUS100 [/td]
[td=border:1px solid #cccccc;] 100c    [/td]
[td=border:1px solid #cccccc;] Windows XP [/td]
[td=border:1px solid #cccccc;] 32        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;] IXUS100 [/td]
[td=border:1px solid #cccccc;] 100c    [/td]
[td=border:1px solid #cccccc;] Windows 7 [/td]
[td=border:1px solid #cccccc;] 64        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ?          [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[td=border:1px solid #cccccc;] ok        [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;] IXUS870 [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] ? [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[td=border:1px solid #cccccc;] + [/td]
[/tr]

[tr=text-align:center;]
[td=border:1px solid #cccccc;] Kamera   [/td]
[td=border:1px solid #cccccc;] Firmware [/td]
[td=border:1px solid #cccccc;] System   [/td]
[td=border:1px solid #cccccc;] Bit          [/td]
[td=border:1px solid #cccccc;] reset       [/td]
[td=border:1px solid #cccccc;] version    [/td]
[td=border:1px solid #cccccc;] shutdown [/td]
[td=border:1px solid #cccccc;] reboot      [/td]
[td=border:1px solid #cccccc;] memory   [/td]
[td=border:1px solid #cccccc;] set          [/td]
[td=border:1px solid #cccccc;] call         [/td]
[td=border:1px solid #cccccc;] upload    [/td]
[td=border:1px solid #cccccc;] download [/td]
[td=border:1px solid #cccccc;] mode      [/td]
[td=border:1px solid #cccccc;] lua          [/td]
[td=border:1px solid #cccccc;] luar         [/td]
[/tr]
[tr=text-align:center;]
[td=border:1px solid #cccccc;] Kamera   [/td]
[td=border:1px solid #cccccc;] Firmware [/td]
[td=border:1px solid #cccccc;] System   [/td]
[td=border:1px solid #cccccc;] Bit          [/td]
[td=border:1px solid #cccccc;] reset       [/td]
[td=border:1px solid #cccccc;] version    [/td]
[td=border:1px solid #cccccc;] shutdown [/td]
[td=border:1px solid #cccccc;] reboot      [/td]
[td=border:1px solid #cccccc;] memory   [/td]
[td=border:1px solid #cccccc;] set          [/td]
[td=border:1px solid #cccccc;] call         [/td]
[td=border:1px solid #cccccc;] upload    [/td]
[td=border:1px solid #cccccc;] download [/td]
[td=border:1px solid #cccccc;] mode      [/td]
[td=border:1px solid #cccccc;] lua          [/td]
[td=border:1px solid #cccccc;] luar         [/td]
[/tr][/table]
Zuletzt geändert von TaiJiGong am 16.11.2010, 09:57, insgesamt 3-mal geändert.
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 15.11.2010, 23:19

Hallo Zusammen,

Diese Elementaren PTP-Funktionen sehe ich als sehr Wichtig an, da sich damit wohl sehr viel realisieren läst.

- Fernsteuern der Kamera (auch über Netzwerk (usbip))
- Evtl. direktes Auslesen der Sensordaten (ohne diese als RAW/DNG zu speichern), z.B. Zeitraffer-Aufnahmen mit hoher Qualität, ohne Probleme mit der Seicherzeit/Seicher-Platz auf der SD-Card.
- Auslesen eines Vorschau-Bildes (OSD), Liveview.
- gute Möglichkeiten die Kamera in Betrieb zu untersuchen (memory), was ändert sich wenn...
- evtl. kann man nicht vorhandene Funktionalität in LUA-Scripte (auf der Kamera) auslagern, die man dann per "luar" abfragen kann.
- Wenn man dann auch noch die Ausgabe auf die Kamera-Konsole Umleiten könnte (oder eine Funktionalität hat, die LUA Scripten das Ausgebnen über PTP gibt. (könnte man auch in ein file schreiben, das man nach dem Befehl/Funktion abfragt)) hätte man von einen PC aus alle Möglichkeiten die CHDK Funktionalität voll zu nutzen.

Hat jemand Infos wie die Funktionen set/call zu Nutzen/Testen sind ? Ein Beispiel währe schön.

Für die obige Tabelle währe noch eine Aussagekräftige Notation nötig, Vielleicht so was wie:

? unbekannt
+ geht (manchmal)
++ geht (öffters, aber manchmal auch nicht )
+++ ausführlich ohne Probleme getestet

- geht nicht (manchmal)
-- geht nicht (oft), aber manchmal doch
--- geht nie

@msl
Der Server war einige mal nicht erreichbar (bzw. session abgelaufen), Daher das als Zusatz.
Und wie tut man bei Quellcode den entsprechenden Syntax-Highligher verwenden ? (Handbuch?)

Viele Grüße,

TaiJiGong
Zuletzt geändert von TaiJiGong am 16.11.2010, 10:00, insgesamt 1-mal geändert.
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 16.11.2010, 00:35

Hallo TZocker

wäre es möglich ein win cmd zu machen das automatisch den service canon camera access beendendet


Eventuell verstehe ich Diene Frage nicht Richtig, da ich normalerweise nur mit LINUX/UNIX arbeite. Das sollte aber eigendlich schon möglich sein. Man sollte danach suchen warum der "service canon camera" überhautpt gestartet wird und das dann unterdrücken.

Viele Grüße,
TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: elementare PTP-Interface-Funktion

Beitragvon TZocker » 16.11.2010, 16:31

@
Da ich beim erstellen der Tabelle gemerkt habe das Deine Kamera im ersten Beitrag nicht auf gelistet war. Meine Frage an Dich: Hast du dazu Veränderungen in CHDK source vorgenommen, wenn JA teile sie uns bitte mit.

ich habe die version von rudi. Bei mir hacks es einfach bei den patches aus das einzige was ich kann sind aus C files mit makefile ne exe zu machen + bei einer c datei das gleiche. Was ich aber amüsant finde ist das nen linuxer der von Programmieren viel drauf hat keine ahnung von Windoof hat.

update: 18. nov
Dateianhänge
chdk-ptp CCALib8 fix for win.zip
Getestet auf Win XP
(231 Bytes) 423-mal heruntergeladen
bsp testbefehle.txt
(1.19 KiB) 433-mal heruntergeladen
Zuletzt geändert von TZocker am 18.11.2010, 18:04, insgesamt 2-mal geändert.
Canon A 650 IS
TZocker
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 51
Registriert: 12.06.2009, 16:20
Kamera(s): A 650

Re: elementare PTP-Interface-Funktion

Beitragvon CHDKLover » 16.11.2010, 22:36

Hallo,
danke für die tolle Vorarbeit von euch allen. Dank dieser konnte ich heute schnell die ptp Funktionalität meiner a610 100e testen. Ich habe bisher folgende Tests mit Windows 7 32 Bit durchgeführt: reset, version, shutdown, reboot, memory, upload, download, set, call, mode, lua, luar. All diese Befehle funktionieren auf der a610 100e.
TaiJiGong hat geschrieben:Hat jemand Infos wie die Funktionen set/call zu Nutzen/Testen sind ? Ein Beispiel währe schön.

"call" führt eine beliebige Funktion aus. Ein einfacher Test währe, wenn du dir aus der Datei \platform\<CAM>\sub\<REV>\stubs_entry_2.S den Funktionspointer von "GetOpticalTemperature" raus suchst und ihn hinter call einfügst. Beispiel für die a610 100e (die Adresse ist Kameraspezifisch)
Code: Alles auswählen
<conn> call 0xFFC1C460
00000016 22

Für den Test mit dem Befehl "set" habe ich mir im Arbeitsspeicher einen Bereich mit malloc() (adresse aus der stubs_entry.S) ausgefasst, den ich anschließend beschreibe:
Code: Alles auswählen
<conn> call 0xffebee9c 4
001fb1a0 2077088
<conn> m 2077088 4
001fb1a0  00 00 00 00                                       |....            |
001fb1a4
<conn> set 2077088 0x999
<conn> m 2077088 4
001fb1a0  99 09 00 00                                       |....            |
001fb1a4

Bei der Dateiübertragung hatte ich zunächst das gleiche Problem wie TaiJiGong. Da nicht jede Kamera 0x20000 Byte freien Arbeitsspeicher hat, habe ich den Ressourcenbedarf dynamisch gestaltet. Jetzt wird für die Dateiübertragung nur die Hälfte des aktuell freien Arbeitsspeichers benutzt. Außerdem sollte die PTP Funktionalität allen Kameras mit VxWorks mit meinem angefügten Patch zur Verfügung stehen.

CHDKLover
Dateianhänge
ptp_mod.diff
(6.39 KiB) 421-mal heruntergeladen
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 17.11.2010, 20:39

Hallo Zusammen,

Kamera Firmware System Bit reset version shutdown reboot memory set call upload download mode lua luar
A430 ? ? ? - - - - - - - - - - - -
A540 ? ? ? + + + + + + + - - + + +
A590 101b Windows XP 32 + + + + + + + + + + + +
A610 100e Windows 7 32 + + + + + + + + + + + +
A650 ? Windows XP 32 + + + + + ? ? + + + + +
A650 ? Windows 7 64 ? ? ? ? ? ? ? ? ? ? ? ?
A720 ? ? ? + + + + + + + + + + + +
SX120 ? ? ? - - - - - - - - - - - -
SX200 ? ? ? - - - - - - - - - - - -
IXUS100 100c LINUX opensuse 64 + + + + + ? ? ? ? + + +
IXUS100 100c Windows XP 32 + + + + + ? ? ? ? + + +
IXUS100 100c Windows 7 64 + + + + + ? ? ? ? + + +
IXUS870 ? ? ? + + + + + + + + + + + +
Kamera Firmware System Bit reset version shutdown reboot memory set call upload download mode lua luar


@CHDKlover
Danke für den patch. Hatte kurz probiert, aber ohne Erfolg. Werde die Änderungen versuchen in meine Version einzubauen. Wichtig fände ich für den Test Meldungen auf der Konsole auszugeben. Damit man weiss was passiert und wo ein Fehler auftritt.

Syntax: [ Download ] [ Verstecken ]
Benutze C Syntax Highlighting
#define PTP_DEBUG
    case PTP_CHDK_UploadFile:
      {
        FILE *f;
        int s,r,fn_len;
        char *buf, *fn;
#ifdef PTP_DEBUG
    script_console_add_line( "PTP_CHDK_UploadFile" );
#endif
        s = data->get_data_size(data->handle);
        recv_ptp_data(data,(char *) &fn_len,4);
        s -= 4;        
#ifdef PTP_DEBUG
    script_console_add_line( "File:" );
#endif
        fn = (char *) malloc(fn_len+1);
        if ( fn == NULL )
        {
          ptp.code = PTP_RC_GeneralError;
          break;
        }
        fn[fn_len] = &#39;\0';
        recv_ptp_data(data,fn,fn_len);
        s -= fn_len;
#ifdef PTP_DEBUG
    script_console_add_line( "Upload file:" );
    script_console_add_line( fn );        
#endif
Erstellt in 0.003 Sekunden, mit GeSHi 1.0.8.9



Viele Grüße,

TaiJiGong

 ! msl hat geschrieben:
Bitte Syntax-Highlighter für Quellcode verwenden - Beitrag entsprechend geändert.
Dateianhänge
PTP-Status.txt
(11.26 KiB) 412-mal heruntergeladen
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 17.11.2010, 22:23

Hallo Zusammen,

ein download einer 35 MB Datei geht bei mir mit einem "fixen" (habe ich fest ein kompiliert) FileName 10 x hintereinander. Auch bei einem BUF_SIZE 0x2000 ohne merklichen Geschwindigkeits Einfluss.

Ein upload kleiner files 75 KB mit "fixen" FileName gehen auch 10 x nacheinander, 10 x 2,5 MB geht auch, 35 MB aber nicht.
Files mit einer Größe von 7,3 MB lassen sich per upload noch übertragen, 9,7 MB gehen nicht mehr.
Nächster Versuch nun gehen auch 7,3 MB nicht mehr.

Nächster Versuch 5,3 MB gehen nun 7 mal, dann :

Code: Alles auswählen
<conn> upload a a
<conn> upload a a
<conn> upload a a
<conn> upload a a
<conn> upload a a
<conn> upload a a
<conn> upload a a
unexpected return code 0x2ff
upload failed!


Also klar ist mir das noch nicht. An der Buffer Größe kann es nicht liegen, die ist 0x2000 = 8192 Byte. Was wohl auch ausreichend ist.

Nächster Versuch 5,3 MB gehen nun 9 mal. (Kamera abgestürtzt, Display schwarz)
Nächster Versuch 5,3 MB gehen nun 26 mal. (habe zwischen aufrufen immer einige 5 ? sec. gewartet) (Kamera abgestürtzt, Display schwarz)

Vielleicht sollte man auf der PC-Seite mal eine Verzögerung beim senden der Daten einbauen ?


Viele Grüße,
TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: elementare PTP-Interface-Funktion

Beitragvon CHDKLover » 18.11.2010, 10:07

Hallo TaiHiGong,
der Fehler 0x2ff bedeutet "PTP_ERROR_IO" und erscheint bei mir nur dann, wenn die Verbindung zur Kamera weg ist. Dies tritt zum Beispiel auf, wenn die Kamera zuvor abgestürzt ist.

TaiJiGong hat geschrieben:Danke für den patch. Hatte kurz probiert, aber ohne Erfolg.
Was geht nicht? Kommt bei dir dann immernoch der Fehler 0x2fe ?

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 18.11.2010, 10:34

Hallo CHDKLover,

Kommt bei dir dann immernoch der Fehler 0x2fe ?


Gute Frage, kann ich nicht genau beantworten, da ich darauf nicht geachtet habe. Kamera stürtzt ab. Manchmal/öffters ist ein erneuter Versuch nur nach ausbau der Batterie und "Rückst. auf Werkseinst. ?" möglich. Daher beschränke ich mich bei meinen Tests, auf eine feste Buffer-Größe von 0x2000, damit gibt es weniger Probleme.

der Fehler 0x2ff bedeutet "PTP_ERROR_IO"


Klar, wenn die Kamera "abgestürtzt" ist geht I/O auch nicht mehr. Ich versuche heraus zu finden wie man das reproduzierbar machen kann. Habe aber noch keine richtige Systematik gefunden.

Viele Grüße,

TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 18.11.2010, 22:07

Hallo Zusammen,

!!! Wichtig !!!

Bei upload/download muss der erste Buchstabe (drive) immer groß geschrieben werden:

<conn>upload a A/x
<conn>download A/x x

Also folgendes geht nicht:

<conn>upload a a/x
<conn>download a/x x


(das kann man sicher leicht in der Software beheben, das erste Zeichen nach UPPER-CASE wandeln). Oder wenn man es mal weiss ist es auch OK.

Darüber bin ich sicher das eine oder andere mal gestolppert.


Ich habe jetzt mir noch mal die Aktuellste Version geholt:

Upload großer Files geht nicht ( Probleme beginnen bei ca. 5 MB ) (wie bei meiner TestVersion):

Code: Alles auswählen
<conn> upload bingfile A/bigfile
could not open file 'bingfile'
upload failed!
<conn> upload bigfile a/bigfile
unexpected return code 0x2ff
upload failed!


!!! Wichtig !!! Also beim Testen von Upload/Download mit kleinen Files beginnen.

So und nun zum Schluss bei der aktuellen Version geht die Mode-Umschaltung nicht mehr. (Wird man auch finden können, ging ja mal)

@CHDKLover
Mit der dynamischen Buffer-Größe sonst das gleich verhalten mit der fixen. Aber gut das die nun drin ist, das hat sicher auch viele Probleme bereitet.

Viele Grüße,

TaiJiGong

-- 18.11.2010, 22:42 --

Hallo Zusammen,

Nach dem entfernen des Akus und rücksetzen auf Werkseinstellung, geht auch die Mode-Umschaltung wieder.

Viele Grüße,

TaiJiGong

-- 18.11.2010, 22:48 --

<conn> lua shoot()

ist OK.

<conn> luar shoot()
unexpected return code 0x2ff
execution failed!

Kann man wohl nicht benutzen weil kein ReturnCode zurück geliefert wird.

Viele GRüße,

TaiJiGong

-- 18.11.2010, 23:04 --

didi@linux-dn:~/trunk-466/trunk> grep GetOpticalTemperature platform/ixus100_sd780/sub/100c/stubs_entry_2.S
NHSTUB(GetOpticalTemperature,0xFF845FA4) //Not certain

<conn> call 0xFF845FA4
00000019 25

Auch OK.
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 18.11.2010, 23:28

? unbekannt
+ geht (manchmal)
++ geht (öffters, aber manchmal auch nicht )
+++ ausführlich ohne Probleme getestet

- geht nicht (manchmal)
-- geht nicht (oft), aber manchmal doch
--- geht nie


Kamera Firmware System Bit reset version shutdown reboot memory set call upload download mode lua luar
A430 ? ? ? - - - - - - - - - - - -
A540 ? ? ? + + + + + + + - - + + +
A590 101b Windows XP 32 + + + + + + + + + + + +
A610 100e ? ? + + + + + + + + + + + +
A650 ? Windows XP 32 + + + + + ? ? + + + + +
A650 ? Windows 7 64 ? ? ? ? ? ? ? ? ? ? ? ?
A720 ? ? ? + + + + + + + + + + + +
SX120 ? ? ? - - - - - - - - - - - -
SX200 ? ? ? - - - - - - - - - - - -
IXUS100 100c LINUX opensuse 64 ++ ++ ++ ++ + + + + +++ ++ ++ ++
IXUS100 100c Windows XP 32 + + + + + ? ? ? ? + + +
IXUS100 100c Windows 7 64 + + + + + ? ? ? ? + + +
IXUS870 ? ? ? + + + + + + + + + + + +
Kamera Firmware System Bit reset version shutdown reboot memory set call upload download mode lua luar
Dateianhänge
PTP-Status.txt
(11.26 KiB) 367-mal heruntergeladen
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

VorherigeNächste

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 20 Gäste