Vai al contenuto

Acquisire il nome di un file da una directory

Home Forum Programmazione IEC 61131 (LogicLab) Acquisire il nome di un file da una directory

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #84105
    Anonimo
    Inattivo

    Utilizzo i Vs prodotti SlimLine ed in una applicazione di gestione parcheggio, un dispositivo di acquisizione del numero di targa del veicolo che entra/esce dal parcheggio alla lettura della targa crea un file in FTP sulla SDCard di un MPS054.

    Sulla SDCard ho creato 2 diverse cartelle D:/CarIn per i veicoli in ingresso e D:/CarOut per i veicoli in uscita la mia necessità è di controllare quando nelle due cartelle viene scritto il file di targa il cui nome è la targa acquisita (Esempio AA000AA). Trasferire il nome in una variabile stringa e cancellare il file dalla cartella.

    E’ possibile avere un esempio di programma che esegue queste operazioni?

    #84109
    Sergio Bertana
    Amministratore del forum

    Immaginando che il file di targa sia l’unico presente nella cartella è posibile utilizzare il programma PlateRead come in esempio:

    PROGRAM FileList
    VAR
        PathName : @STRING; (* Directory in cui cercare *)
        Plate : STRING[ 16 ]; (* Targa automezzo *)
        PNDList : STRING[ 32 ]; (* Directory list path *)
        PNFDelete : STRING[ 32 ]; (* Nome file da cancellare *)
        PTrigger : R_TRIG; (* Pulse trigger *)
        DList : SysGetFileInfos; (* Get file infos *)
    END_VAR
    
    // *****************************************************************************
    // PROGRAM "PlateRead"
    // *****************************************************************************
    // Eseguo lettura file di targa veicolo.
    // -----------------------------------------------------------------------------
    
        // -------------------------------------------------------------------------
        // INIZIALIZZAZIONE
        // -------------------------------------------------------------------------
        // Program initializations.
    
        IF (SysFirstLoop) THEN
            PathName:=ADR('C:/CarIn'); //Directory in cui cercare
            DList.PathName:=ADR(PNDList); //Percorso di ricerca
            eTO_JUNK(SysVsnprintf(ADR(PNDList), SIZEOF(PNDList), ADR('%s/*.*'), STRING_TYPE, PathName));
        END_IF;
    
        // -------------------------------------------------------------------------
        // ESEGUO RICERCA FILE
        // -------------------------------------------------------------------------
        // Ogni secondo eseguo ricerca 1° file presente in directory. 
    
        PTrigger(CLK:=SysClock1000);
        IF (PTrigger.Q) THEN
            DList(Init:=TRUE);
            IF (DList.Found) THEN
                eTO_JUNK(Sysmemset(ADR(Plate), 16#00, SIZEOF(Plate)));
                eTO_JUNK(Sysmemmove(ADR(Plate), DList.Name, Sysstrlen(DList.Name)));
    
                // Cancello il file trovato.
    
                eTO_JUNK(SysVsnprintf(ADR(PNFDelete), SIZEOF(PNFDelete), ADR('%s/'), STRING_TYPE, PathName));
                eTO_JUNK(SysCVsnprintf(ADR(PNFDelete), SIZEOF(PNFDelete), ADR('%s'), STRING_TYPE, DList.Name));
                eTO_JUNK(SysFileRemove(ADR(PNFDelete))); 
            END_IF;
        END_IF;
    
    // [End of file]
    #84132
    Roberto
    Partecipante

    Grazie  per l’esempio.

    Ma ho un problema a monte, nel senso che la telecamera non si riesca a connettere con FTP al PLC in nessuna modalità, qualche configurazione del PLC ma non ci sono errori per capire il perchè.

    Ora volevo provare ad inserire un NAS intermedio in modo che la telecamera fa il suo lavoro ed io con il Cliente Ftp mi collego al NAS e cerco li il file.

    Purtroppo però mi dite che in FTP non si può fare il listing della cartella, ma salvare il file con lo stesso nome. Questo non è possibile perchè il nome del file è riferito alla targa.

    Nel client FTP comunque avrei una solo file tipo AB123ER.jpeg, non posso chiedere al client il file *.jpeg?

    Diversamente non si possono usare gli SlimLine, l’applicazione non è ancora sviluppata ma solo proposta.

    #84142
    Sergio Bertana
    Amministratore del forum

    Purtroppo il FB FTPClient non esegue il listato directory del server FTP, nelle operazioni gestite Store, Rerieve e Delete occorre definire il nome completo del file non è possibile utilizzare *.jpg anche se nella cartella puntata esiste un solo file.

    La soluzione più semplice se possibile è eseguire una applicazione sul server NAS che acquisisce il nome del file (Quindi la targa del veicolo) e poi la invia allo SlimLine con una connessione TCP.

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Devi essere connesso per rispondere a questo topic.