[PTP] elementare PTP-Interface-Funktion

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

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 30.12.2010, 23:13

Hallo Zusammen,

Noch eine Sript zum bestimmen des letzten modifizierten files ( das letzte aufgenommene Bild )

damit läst sich mit folgenden LINUX shell-script per PTP ein Bild aufnehmen und downloaden.
Code: Alles auswählen
#/bin/bash
./ptpcam --chdk='mode 1'
sleep 3
./ptpcam --chdk='lua shoot()'
sleep 10
echo -n "download ">ptp_download
./ptpcam --chdk='luar dofile( "A/LASTMODF.LUA" )' >>ptp_download
./ptpcam --chdk <ptp_download


Das ganze muss natürlich noch etwas optimiert (sleep nicht fix) werden, aber das sollte machbar sein.

Viele Grüße,

TaiJiGong
Dateianhänge
lastmodf.lua
(1.18 KiB) 608-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 rudi » 02.01.2011, 19:05

Hallo TaiJiGong,

das Ende der Modeumschalung für "mode 1" ist hiermit abfragbar
Code: Alles auswählen
lua while not get_mode() do sleep(100) end

Das sollte "sleep 3" ersetzen können.

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 03.01.2011, 20:45

Hallo rudi,

Danke für den Tip ! Funktioniert aber leider nicht. Die Kammera schaltet sich ab.

Wenn ich erst noch ein "sleep 1" einfüge geht es.

Code: Alles auswählen
#/bin/bash
./ptpcam --chdk='mode 1'
sleep 1
./ptpcam --chdk='lua while not get_mode() do sleep(100) end'
sleep 1
./ptpcam --chdk='lua shoot()'
sleep 5
./ptpcam --chdk='wait'
echo -n "download ">ptp_download
./ptpcam --chdk='luar dofile( "A/LASTMODF.LUA" )' >>ptp_download
./ptpcam --chdk <ptp_download


Zusätzlich habe ich in ptpcam eine "wait" Funktion eingebaut, damit ich prüfen kann wann die Bildaufnahme abgeschlossen ist. Vieleicht gibt es dafür auch eine bessere Lösung ? Gennerell möchte ich die Möglichkeit haben auf die Beendigung der Ausführung eines (PTP)-Befehls warten können.

Syntax: [ Download ] [ Verstecken ]
Benutze C Syntax Highlighting
else if ( !strcmp("wait",buf) )
    {
          int status;
          do
          {
              sleep( 1 );
              ptp_chdk_get_script_status(&params,&params.deviceinfo,&status);
              printf("waiting...\n");
          }
          while( status > 0 );
    }
Erstellt in 0.006 Sekunden, mit GeSHi 1.0.8.9


Trotzdem beendet sich "manchmal" das obige bash-script mit:

unexpected return code 0x2ff
waiting...
unexpected return code 0x2ff
ERROR: Could not close session!
Could not find any device matching given bus/dev numbers, retrying in 1 s...

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)

elementare PTP-Interface-Funktion (ohne --chdk)

Beitragvon TaiJiGong » 19.01.2011, 09:39

Hallo Zusammen,

Ruft man ptpcam ohne die Option --chdk auf, lassen sich auch einige (nicht alle) PTP-Funktionen nutzen.

z.B. Download von Bildern:

didi@linux-dn:~/trunk/tools/ptpcam> ./ptpcam -L

Listing files...
Handler: Size: Captured: name:
0x00000004: 1886370 2011-01-18 23:47 IMG_8044.JPG
0x00000005: 1290852 2011-01-18 23:47 IMG_8045.JPG
0x00000006: 1349948 2011-01-18 23:47 IMG_8046.JPG
0x00000007: 1401892 2011-01-18 23:47 IMG_8047.JPG
0x00000008: 1000490 2011-01-18 23:47 IMG_8048.JPG

didi@linux-dn:~/trunk/tools/ptpcam> ./ptpcam -g 0x00000004
(bei der Option -g ist der Handler für das Bild, siehe obiges Listing erste Spalte anzugeben.)
Saving file: "IMG_8044.JPG" is done.

didi@linux-dn:~/trunk/tools/ptpcam> ./ptpcam -G
(Download aller Bilder)

Skipping file: "IMG_8044.JPG", file exists!
Saving file: "IMG_8045.JPG" is done.
Saving file: "IMG_8046.JPG" is done.
Saving file: "IMG_8047.JPG" is done.
Saving file: "IMG_8048.JPG" is done.


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 » 19.01.2011, 13:00

Wenn man auf der Kamera Dateien mit der Endung "FI2" erzeugt. z.Bspl.: CRW_2654.FI2 werden die mit "ptpcam -G" auch herunter geladen.
Damit könnte man wohl duch unbenennen von RAW/DNG-files, erreichen das diese auch mit dieser Option herunter ladbar sind.
--- 14:28 ---
Ein umbenennen mit der Endung "CR2" ist auch möglich:
Code: Alles auswählen
Listing files...
Camera: Canon DIGITAL IXUS 100 IS
Handler:           Size:        Captured:       name:
0x0190a5e4:     18653760        1970-01-01 00:00        CRW_2654.CR2
0x01926944:     18653760        1970-01-01 00:00        CRW_9876.CR2

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 » 19.01.2011, 18:38

Um den prompt von ptpcam editierbar zu machen habe ich den source mit readline erweitert.

Ob das bei Windows auch so möglich ist kann ich nicht sagen. Auf jeden Fall ist dann Makefile.win32 (siehe Makefile) entsprechend anzupassen

Viele Grüße,
TaiJiGong
Dateianhänge
trunk558_ptpcam_readline.diff
(1.86 KiB) 520-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 » 03.02.2011, 23:00

Hallo Zusammen,

ich habe mich etwas mit den unterschieden von "ptpcam" und "gphoto2" beschäftigt. Sie bauen wohl mit ptp.c/ptp.h auf der geleichen Grundlage auf.

Unterschiede bestehen in der Funktion ptp_transaction(), da gibt es einen zusätzlichen Parameter:

trunk/tools/ptpcam/ptp.c:
Syntax: [ Download ] [ Verstecken ]
Benutze C Syntax Highlighting
/* Transaction data phase description */
#define PTP_DP_NODATA       0x0000  /* no data phase */
#define PTP_DP_SENDDATA     0x0001  /* sending data */
#define PTP_DP_GETDATA      0x0002  /* receiving data */
#define PTP_DP_DATA_MASK    0x00ff  /* data phase mask */

/* Number of PTP Request phase parameters */
#define PTP_RQ_PARAM0       0x0000  /* zero parameters */
#define PTP_RQ_PARAM1       0x0100  /* one parameter */
#define PTP_RQ_PARAM2       0x0200  /* two parameters */
#define PTP_RQ_PARAM3       0x0300  /* three parameters */
#define PTP_RQ_PARAM4       0x0400  /* four parameters */
#define PTP_RQ_PARAM5       0x0500  /* five parameters */

/**
 * ptp_transaction:
 * params:  PTPParams*
 *      PTPContainer* ptp   - general ptp container
 *      uint16_t flags      - lower 8 bits - data phase description
 *      unsigned int sendlen    - senddata phase data length
 *      char** data     - send or receive data buffer pointer
 *
 * Performs PTP transaction. ptp is a PTPContainer with appropriate fields
 * filled in (i.e. operation code and parameters). It's up to caller to do
 * so.
 * The flags decide whether the transaction has a data phase and what is its
 * direction (send or receive).
 * If transaction is sending data the sendlen should contain its length in
 * bytes, otherwise it's ignored.
 * The data should contain an address of a pointer to data going to be sent
 * or is filled with such a pointer address if data are received depending
 * od dataphase direction (send or received) or is beeing ignored (no
 * dataphase).
 * The memory for a pointer should be preserved by the caller, if data are
 * beeing retreived the appropriate amount of memory is beeing allocated
 * (the caller should handle that!).
 *
 * Return values: Some PTP_RC_* code.
 * Upon success PTPContainer* ptp contains PTP Response Phase container with
 * all fields filled in.
 **/

static uint16_t
ptp_transaction (PTPParams* params, PTPContainer* ptp,
            uint16_t flags, unsigned int sendlen, char** data)
{
    if ((params==NULL) || (ptp==NULL))
        return PTP_ERROR_BADPARAM;
   
    ptp->Transaction_ID=params->transaction_id++;
    ptp->SessionID=params->session_id;
    /* send request */
    CHECK_PTP_RC(params->sendreq_func (params, ptp));
    /* is there a dataphase? */
    switch (flags&PTP_DP_DATA_MASK) {
        case PTP_DP_SENDDATA:
            CHECK_PTP_RC(params->senddata_func(params, ptp,
                (unsigned char*)*data, sendlen));
            break;
        case PTP_DP_GETDATA:
            CHECK_PTP_RC(params->getdata_func(params, ptp,
                (unsigned char**)data));
            break;
        case PTP_DP_NODATA:
            break;
        default:
        return PTP_ERROR_BADPARAM;
    }
    /* get response */
    CHECK_PTP_RC(params->getresp_func(params, ptp));
    return PTP_RC_OK;
}
Erstellt in 0.010 Sekunden, mit GeSHi 1.0.8.9


libgphoto2-2.4.10.1/camlibs/ptp2/ptp.c:

Syntax: [ Download ] [ Verstecken ]
Benutze C Syntax Highlighting
/* Transaction data phase description */
#define PTP_DP_NODATA       0x0000  /* no data phase */
#define PTP_DP_SENDDATA     0x0001  /* sending data */
#define PTP_DP_GETDATA      0x0002  /* receiving data */
#define PTP_DP_DATA_MASK    0x00ff  /* data phase mask */

/**
 * ptp_transaction:
 * params:  PTPParams*
 *      PTPContainer* ptp   - general ptp container
 *      uint16_t flags      - lower 8 bits - data phase description
 *      unsigned int sendlen    - senddata phase data length
 *      char** data     - send or receive data buffer pointer
 *      int* recvlen        - receive data length
 *
 * Performs PTP transaction. ptp is a PTPContainer with appropriate fields
 * filled in (i.e. operation code and parameters). It's up to caller to do
 * so.
 * The flags decide thether the transaction has a data phase and what is its
 * direction (send or receive).
 * If transaction is sending data the sendlen should contain its length in
 * bytes, otherwise it's ignored.
 * The data should contain an address of a pointer to data going to be sent
 * or is filled with such a pointer address if data are received depending
 * od dataphase direction (send or received) or is beeing ignored (no
 * dataphase).
 * The memory for a pointer should be preserved by the caller, if data are
 * beeing retreived the appropriate amount of memory is beeing allocated
 * (the caller should handle that!).
 *
 * Return values: Some PTP_RC_* code.
 * Upon success PTPContainer* ptp contains PTP Response Phase container with
 * all fields filled in.
 **/

static uint16_t
ptp_transaction_new (PTPParams* params, PTPContainer* ptp,
        uint16_t flags, unsigned int sendlen,
        PTPDataHandler *handler
) {
    int         tries;
    uint16_t    cmd;

    if ((params==NULL) || (ptp==NULL))
        return PTP_ERROR_BADPARAM;

    cmd = ptp->Code;
    ptp->Transaction_ID=params->transaction_id++;
    ptp->SessionID=params->session_id;
    /* send request */
    CHECK_PTP_RC(params->sendreq_func (params, ptp));
    /* is there a dataphase? */
    switch (flags&PTP_DP_DATA_MASK) {
    case PTP_DP_SENDDATA:
        {
            uint16_t ret;
            ret = params->senddata_func(params, ptp,
                            sendlen, handler);
            if (ret == PTP_ERROR_CANCEL) {
                ret = params->cancelreq_func(params,
                                 params->transaction_id-1);
                if (ret == PTP_RC_OK)
                    ret = PTP_ERROR_CANCEL;
            }
            if (ret != PTP_RC_OK)
                return ret;
        }
        break;
    case PTP_DP_GETDATA:
        {
            uint16_t ret;
            ret = params->getdata_func(params, ptp, handler);
            if (ret == PTP_ERROR_CANCEL) {
                ret = params->cancelreq_func(params,
                                 params->transaction_id-1);
                if (ret == PTP_RC_OK)
                    ret = PTP_ERROR_CANCEL;
            }
            if (ret != PTP_RC_OK)
                return ret;
        }
        break;
    case PTP_DP_NODATA:
        break;
    default:
        return PTP_ERROR_BADPARAM;
    }
    tries = 3;
    while (tries--) {
        uint16_t ret;
        /* get response */
        ret = params->getresp_func(params, ptp);
        if (ret == PTP_ERROR_RESP_EXPECTED) {
            ptp_debug (params,"PTP: response expected but not got, retrying.");
            tries++;
            continue;
        }
        if (ret != PTP_RC_OK)
            return ret;
       
        if (ptp->Transaction_ID < params->transaction_id-1) {
            tries++;
            ptp_debug (params,
                "PTP: Sequence number mismatch %d vs expected %d, suspecting old reply.",
                ptp->Transaction_ID, params->transaction_id-1
            );
            continue;
        }
        if (ptp->Transaction_ID != params->transaction_id-1) {
            /* try to clean up potential left overs from previous session */
            if ((cmd == PTP_OC_OpenSession) && tries)
                continue;
            ptp_error (params,
                "PTP: Sequence number mismatch %d vs expected %d.",
                ptp->Transaction_ID, params->transaction_id-1
            );
            return PTP_ERROR_BADPARAM;
        }
        break;
    }
    return ptp->Code;
}
Erstellt in 0.013 Sekunden, mit GeSHi 1.0.8.9


Syntax: [ Download ] [ Verstecken ]
Benutze C Syntax Highlighting
/* Old style transaction, based on memory */
static uint16_t
ptp_transaction (PTPParams* params, PTPContainer* ptp,
        uint16_t flags, unsigned int sendlen,
        unsigned char **data, unsigned int *recvlen
) {
    PTPDataHandler  handler;
    uint16_t    ret;

    switch (flags & PTP_DP_DATA_MASK) {
    case PTP_DP_SENDDATA:
        ptp_init_send_memory_handler (&handler, *data, sendlen);
        break;
    case PTP_DP_GETDATA:
        ptp_init_recv_memory_handler (&handler);
        break;
    default:break;
    }
    ret = ptp_transaction_new (params, ptp, flags, sendlen, &handler);
    switch (flags & PTP_DP_DATA_MASK) {
    case PTP_DP_SENDDATA:
        ptp_exit_send_memory_handler (&handler);
        break;
    case PTP_DP_GETDATA: {
        unsigned long len;
        ptp_exit_recv_memory_handler (&handler, data, &len);
        if (recvlen)
            *recvlen = len;
        break;
    }
    default:break;
    }
    return ret;
}
Erstellt in 0.005 Sekunden, mit GeSHi 1.0.8.9


Habe damit die Hoffnung das sich die CHDK-PTP Erweiterungen auch in gphoto2 integrieren lassen. Wenn man dann noch Funktionen wie Capture,... nachbilden könnte, hätte man eine weitere Grundlage für potenzielle Clients.

Viele Grüße,
TaiJiGong
Zuletzt geändert von CHDKLover am 03.02.2011, 23:36, insgesamt 1-mal geändert.
Grund: [code] Tag entfernt
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 towolf » 06.02.2011, 14:04

Eine Integration in gphoto2 wäre allerdings wirklich sweet.

Vielleicht fragst du am Besten mal auf deren Mailingliste an.
https://lists.sourceforge.net/lists/lis ... hoto-devel

EDIT: CHDK wurde schon angesprochen, und der Maintainer kennt es, hat sich aber mangels geeigneter Kamera noch nicht damit befasst:
http://thread.gmane.org/gmane.comp.mult ... focus=4965
towolf
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 4
Registriert: 05.12.2010, 15:28
Kamera(s): IXUS100IS

Re: elementare PTP-Interface-Funktion

Beitragvon TaiJiGong » 06.02.2011, 21:38

Hallo towolf,

towolf hat geschrieben:Vielleicht fragst du am Besten mal auf deren Mailingliste an.


Ich habe bereits einen Entwickler kontaktiert. Weiterhin werde ich versuchen was ich da herausfinden kann. (leider habe ich wenig Zeit)

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 » 07.02.2011, 09:18

[gphoto-devel] Successful cygwin compilation

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)

luar für einfache Tabellen

Beitragvon rudi » 04.03.2011, 13:10

Hallo PTPler,

ich habe einen Vorschlag um mit "luar" einfache Tabellen zu übertragen.

Die Tabelle wird zu einer Zeichenkatte formatiert. In der ersten Dimension ist jede Schlüsselform erlaubt. Dadurch werden allerdings Einträge die "nil" enthalten nicht mit erfasst. In der zweiten Dimenstion werden nur numerische Arrays verarbeitet. Die Foramtierung der Zeichenkette sieht dann so aus:
Code: Alles auswählen
Schlüssel 1. Dimension > "TAB" > Wert oder Werte der 2. Dimension mit "TAB" getrennt > "CRLF"

Werte für 1. Dimension: BOOL, INT, STRING
Werte für 2. Dimension: NIL, BOOL, INT, STRING


Beispiele in Originalformat:
Syntax: [ Download ] [ Verstecken ]
Benutze DOS Syntax Highlighting
<conn> luar get_buildinfo()
platform        a590
build_date      Mar  4 2011
build_number    1.1.0-591
build_time      12:31:57
version CHDK-DE
platsub 101b
build_revision  0
platformid      12662
os      dryos

<conn> luar {1,2,3,4}
1       1
2       2
3       3
4       4

<conn> luar {X=44,G=2}
G       2
X       44

<conn> luar {"Montag","Dienstag","Mittwoch","Donnerstag"}
1       Montag
2       Dienstag
3       Mittwoch
4       Donnerstag

<conn> luar {{3,8,55},G=2}
1       3       8       55
G       2

<conn> luar {{3,8,55}, D={"S","M","D"},G=2,"wert",678}
1       3       8       55
2       wert
3       678
G       2
D       S       M       D

<conn> luar {U={3,8,55}, D={"S","M","D"},G=2}
U       3       8       55
D       S       M       D
G       2

<conn> luar {}

<conn> luar {{},{}}

<conn> luar {A={},{}}

<conn> luar {A={},B={}}

<conn> luar {A={1},B={33}}
A       1
B       33

<conn> luar {A={1,2},B={33}}
A       1       2
B       33

<conn> luar {A={1,2},B={33,{},44}}
A       1       2
B       33              44

<conn> luar {A={1,2,"true",false},B={33,{},44}}
A       1       2       true    false
B       33              44

<conn> luar {A={1,2,true,"false"},B={33,{},44}}
A       1       2       true    false
B       33              44

<conn> luar get_dofinfo()
hyp_valid       false
eff_focal_length        35000
coc     5
aperture        2679
near    -1
min_stack_dist  37
dof     -1
focal_length    5800
hyp_dist        2517
far     -1
focus   65535
focus_valid     false

<conn> luar {3,4,nil,5,6,true,7}
1       3
2       4
4       5
5       6
6       true
7       7

<conn> luar {{3,4,nil,5,6,true,7}}
1       3       4       nil     5       6       true    7

<conn> luar require("capmode")
mode_to_name    AUTO    P       TV      AV      M       PORTRAIT        NIGHT_SC
ENE     LANDSCAPE       VIDEO_STD       VIDEO_SPEED     VIDEO_COMPACT   VIDEO_MY
_COLORS VIDEO_COLOR_ACCENT      VIDEO_COLOR_SWAP        STITCH  MY_COLORS
SCN_UNDERWATER  SCN_NIGHT_SNAPSHOT      LONG_SHUTTER    SCN_LANDSCAPE   COLOR_SW
AP      SCN_SNOW        SCN_BEACH       SCN_FIREWORK    SCN_COLOR_ACCENT
SCN_COLOR_SWAP  VIDEO_HIRES     SCN_AQUARIUM    COLOR_ACCENT    SCN_NIGHT_SCENE
SCN_ISO_3200    SCN_SPORT       SCN_KIDS_PETS   INDOOR  KIDS_PETS       NIGHT_SN
APSHOT  DIGITAL_MACRO   SCN_FOLIAGE     VIDEO_TIME_LAPSE        SCN_INDOOR
SCN_PORTRAIT    SUPER_MACRO     VIDEO_PORTRAIT  VIDEO_NIGHT     VIDEO_INDOOR
VIDEO_FOLIAGE   VIDEO_SNOW      VIDEO_BEACH     VIDEO_AQUARIUM  VIDEO_SUPER_MACR
O       VIDEO_STITCH    VIDEO_MANUAL    SPORTS  QUICK   SCN_SUNSET      SCN_CREA
TIVE_EFFECT     EASY    SCN_DIGITAL_MACRO       SCN_STITCH      SCN_LONG_SHUTTER
        LOWLIGHT        SCN_NOSTALGIC   SCN_SMART_SHUTTER       SCN_LOWLIGHT
SCN_SUPER_VIVID SCN_POSTER_EFFECT       SCN_FISHEYE     SCN_MINIATURE   SCN_HDR
Erstellt in 0.007 Sekunden, mit GeSHi 1.0.8.9


Gruß rudi
Dateianhänge
trunk591_luar_table_patch.diff
luar-table Patch; Basis: trunk 591
(3.04 KiB) 499-mal heruntergeladen
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Re: elementare PTP-Interface-Funktion

Beitragvon msl » 04.03.2011, 13:35

Hallo rudi,

gefällt mir, würde man bei Facebook drücken.

Das würde einiges erleichtern und ich ahne auch schon, welche Vorteile es für die GUI bringen würde.

reyalp hat sich dieser Thematik auch schon angenommen, geht aber einen anderen Weg: http://chdk.setepontos.com/index.php?to ... 8#msg59968

Jetzt kommt aber das große ABER. In diesem Fall kommen wir nicht drumherum, den Patch parallel in CHDK und CHDK-DE auszuführen. Ansonsten können wir die Entwicklungsprojekte ptpCamGui + Integration in die CHDK-Shell vergessen.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: elementare PTP-Interface-Funktion

Beitragvon msl » 05.03.2011, 13:49

Ich habe die PTP-Funktionserweiterung mal für beide Versionen (CHDK-DE und CHDK) mal eingecheckt.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: elementare PTP-Interface-Funktion

Beitragvon rudi » 09.03.2011, 19:48

Hallo zusammen,

nach dem Tabellen-Patch tut sich etwas bei der Verbesserung der PTP-Kommunikation. Im int. Forum hat reyalp seine Version zur zeitunabhängigeren Kommunikation vorgestellt.
Grundsätzlich entfällt der Befehl 'luar'. Dieser kann durch 'lua return ...' und 'getm' (get message) nachgebildet werden. Ergebnisse werden hier als Mitteilungen bezeichnet. Der Umfang reicht von einfachen Werten, über Syntaxfehler und LUA-Laufzeitfehler, bis hin zu Ergebnissen von mehreren LUA-Befehlen. Tabellen werden mit Hilfe der LUA-Funktion 'usb_msg_table_to_string()' in Zeichenketten überführt.

Einige Beispiele:
Code: Alles auswählen
<conn> lua return get_mode()
<conn> getm
false
false
513 (201)

<conn> lua return (get_mode())
<conn> getm
false

<conn> lua return usb_msg_table_to_string(os.stat('A/ptpmsg.lua'))
<conn> getm
dev     2
attrib  32
ctime   1299672574
atime   1299628800
blksize 512
blocks  6
mtime   1299585998
is_file true
mode    33279
is_dir  false
size    2683

<conn> lua return usb_msg_table_to_string(get_buildinfo())
<conn> lua return usb_msg_table_to_string(get_buildinfo())
<conn> r
Could not find any device matching given bus/dev numbers, retrying in 1 s...
<conn> lua return usb_msg_table_to_string(get_buildinfo())
<conn> getm
message from unexpected script id 3
platform        a590
build_date      Mar  8 2011
build_number    1.1.0-597
build_time      19:32:43
version CHDK-DE
platsub 101b
build_revision  0
platformid      12662
os      dryos

message from unexpected script id 4
platform        a590
build_date      Mar  8 2011
build_number    1.1.0-597
build_time      19:32:43
version CHDK-DE
platsub 101b
build_revision  0
platformid      12662
os      dryos

platform        a590
build_date      Mar  8 2011
build_number    1.1.0-597
build_time      19:32:43
version CHDK-DE
platsub 101b
build_revision  0
platformid      12662
os      dryos


Meine ersten Tests sind vielversprechend. Die Kamera konnte ich noch nicht zum Absturz bringen. Alles wirkt sehr zuverlässig.
Eins möchte ich aber nicht verschweigen. Es ist möglich, dass der hier beschriebenen Fehler wieder auftritt.

Wer sich das ansehen möchte findet im Anhang einen Patch für CHDK-DE einschließlich /tools/ptpcam und der neue ptpcam.exe. Den int. CHDK Quellcode hat reyalp hier bereit gestellt.

Gruß rudi
Dateianhänge
trunk597_reyalp-ptp_patch.zip
Vorschau PTP Versin 1.0
(65.1 KiB) 484-mal heruntergeladen
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Re: elementare PTP-Interface-Funktion

Beitragvon TZocker » 09.03.2011, 20:08

Funktioniert das ptp gui auch automatisch mit der neuen test Version?

Weil wenn sich nur der Code geändert hat und nicht die Befehle wurde das funktionieren oder?
Canon A 650 IS
TZocker
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 51
Registriert: 12.06.2009, 16:20
Kamera(s): A 650

VorherigeNächste

Zurück zu Code-Ecke

Wer ist online?

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

cron