Passa al contenuto principale

Implementazione Delphi

L'implementazione Delphi è l'implementazione di riferimento del Open Streaming Format: percorso completo di lettura e scrittura per OSF4 e OSF5, un insieme di demo e la riga di comando osftool. Genera inoltre l'insieme di file di riferimento rispetto al quale vengono verificate le altre implementazioni. Sviluppata con RAD Studio 23.0 (Delphi 12).

Libreria​

Le unit della libreria si trovano in implementations/delphi/src/. I componenti pubblici più importanti:

UnitContenuto
OSF.TypesTipi di dati e tipi di canale (TOSFDataType, TOSFVersion, TOSFGpsLocation) e funzioni di supporto
OSF.FilerTOSFFile — reader/writer in streaming per OSF4 e OSF5; decompressione OSFZ trasparente; parsing XML OSF4 tramite OmniXML (nessuna dipendenza da MSXML)
OSF.Data.ManagerTOSFDataManager — lettura di alto livello, popola canali tipizzati; accesso per nome
OSF.Data.ChannelsCanali tipizzati in memoria, inclusi segmenti equidistanti (ogni bcStartData apre un segmento)
OSF.LogDispatcher di logging/avanzamento a livello di processo (Logger: TOSFLog) con pattern listener (DECISIONS §22)
OSF.Export.CSV / OSF.Export.CSV.UnifiedEsportazione CSV — per canale (XY) o con asse temporale comune
OSF.Export.HDF5Esportazione HDF5 (Windows; un dataset compound compresso per canale)
OSF.MergerTOSFMerger — riunisce più file OSF di un intervallo di tempo in un unico file di output
OSF.Meta.CacheCache .json sidecar per ogni file OSF (intervalli di tempo, numero di campioni) per metadati rapidi

Un programma senza form OSFCompileCheck.dpr nella directory radice dell'implementazione copre ogni unit della libreria tramite uses e, dopo i refactoring, fornisce un chiaro segnale di compilazione.

Architettura di logging​

Ogni unit della libreria scrive eventi di log e di avanzamento sul Logger: TOSFLog globale. Le applicazioni registrano un TLoggerListener (con proprio MinLevel e callback di evento); il singleton si occupa della distribuzione. Dettagli in DECISIONS §22.

Demo​

In implementations/delphi/demos/:

DemoScopo
osfviewer/Caricare un file OSF, elencare i canali, visualizzare un canale come TeeChart (solo nell'IDE)
osfgenerator/Scrive il set di riferimento di 17 file; la variante console OSFGeneratorCLI lo genera in modo non interattivo
osfcsvexport/Demo di pipeline TOSFFile → TOSFDataManager → esportazione CSV
osfmerger/Interfaccia VCL per TOSFMerger (Win64)

Riga di comando: osftool​

osftool è lo strumento a riga di comando basato su verbi dell'implementazione Delphi (Win64) con nove verbi — merge, export, info, channels, stat, cache, config, convert, verify.

La descrizione completa si trova nel capitolo dedicato osftool.

Build​

La libreria e la maggior parte delle demo vengono compilate con dcc32 (Win32) o dcc64 (Win64) dalla rispettiva directory di progetto — osfmerger e osftool come Win64. Esempio (compile check):

cd implementations\delphi
dcc32 -B -Q OSFCompileCheck.dpr

L'esportazione HDF5 richiede in fase di esecuzione hdf5.dll; il binding (src/hdf5/) è un'interfaccia Delphi autonoma e indipendente da OSF verso la libreria C HDF5.

Codice sorgente e ulteriori informazioni​

Questo documento è distribuito con licenza CC BY 4.0. Attribuzione: optiMEAS GmbH e optiMEAS Switzerland GmbH.