Acquisire il nome di un file da una directory
Home › Forum › Programmazione IEC 61131 (LogicLab) › Acquisire il nome di un file da una directory
- Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 4 giorni, 11 ore fa da
Sergio Bertana.
-
AutorePost
-
Settembre 23, 2025 alle 4:54 pm #84105
Anonimo
InattivoUtilizzo 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?
Settembre 23, 2025 alle 5:12 pm #84109Sergio Bertana
Amministratore del forumImmaginando 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]
Settembre 29, 2025 alle 10:09 am #84132Roberto
PartecipanteGrazie 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.
Settembre 29, 2025 alle 10:48 am #84142Sergio Bertana
Amministratore del forumPurtroppo 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.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.