data loader for MINISOFT '.el1' files
awirsing
#pragma rtGlobals=1 // Use modern global access method.
#pragma version=1.2
////////////////////////
// Remarks:
// Data loader for .el1 files, which were saved with the program 'MINISOFT V7.8' (http://www.greisinger.de/).
// The binary file structure of the .el1 files has been worked out empirically (because the
// company didn't want to reveal any details of their binary format), so the structure
// may change in fututre versions of the program. Additionally be aware of bugs.
// The data loader reads out the data, the time scaling, and some parameters which are put in the wave note.
////////////////////////
Menu "Load Waves"
"Load MiniSoft File...", LoadMiniSoftFile()
end
function LoadMiniSoftFile()
variable refnum
open/z=2/m="Looking for a MiniSoft file"/r/t=".el1" refnum
if(V_flag==-1)
return 0
endif
fstatus refnum
string S_filenameLocal=ReplaceString(".el1",S_filename,"")
variable V_numDataPnts,V_timeDelta,V_timeStart,V_startComment,V_commentLen
variable V_startWindowTitle,V_windowTitleLen,V_tmp,V_measureMin,V_measureMax
variable V_version,V_alarmMin,V_alarmMax,V_alarmDelay
string S_comment,S_windowTitle,S_identification
fsetpos refnum,99; fbinread/b=3/f=3 refnum,V_startComment
V_startComment-=1 // in Igor, first byte is byte #0!!!
fsetpos refnum,1007; fbinread/b=3/f=5 refnum,V_version
fsetpos refnum,1111; fbinread/b=3/f=5 refnum,V_measureMin
fsetpos refnum,1119; fbinread/b=3/f=5 refnum,V_measureMax
fsetpos refnum,1503; fbinread/b=3/f=5 refnum,V_alarmMin
fsetpos refnum,1511; fbinread/b=3/f=5 refnum,V_alarmMax
fsetpos refnum,1519; fbinread/b=3/f=3 refnum,V_alarmDelay
fsetpos refnum,2003; fbinread/b=3/f=3 refnum,V_numDataPnts
fsetpos refnum,2011; fbinread/b=3/f=3 refnum,V_timeDelta
fsetpos refnum,3999; fbinread/b=3/f=5 refnum,V_timeStart
V_timeStart=V_timeStart*24*60*60-126313200 // Conversion into s, offset subtraction
make/o/n=(V_numDataPnts) $S_filenameLocal
wave w=$S_filenameLocal
fbinread/b=3/f=5 refnum,w // data start @ 4007
setscale/p x V_timeStart,V_timeDelta,"dat" w
S_identification=padstring("",39,0x20)
fsetpos refnum,2103; fbinread refnum,S_identification
S_identification=replacestring(num2char(32),S_identification,"")
fsetpos refnum,V_startComment
do
fbinread/f=1 refnum,V_tmp
while(V_tmp!=4)
fstatus refnum; V_commentLen=V_filePos-V_startComment-1
do
fbinread/f=1 refnum,V_tmp
while(V_tmp!=0)
fstatus refnum; V_startWindowTitle=V_filePos
do
fbinread/f=1 refnum,V_tmp
while(V_tmp!=4)
fstatus refnum; V_windowTitleLen=V_filePos-V_startWindowTitle-1
S_comment=padstring("",V_commentLen,0x20)
fsetpos refnum,V_startComment; fbinread refnum,S_comment
S_windowTitle=padstring("",V_windowTitleLen,0x20)
fsetpos refnum,V_startWindowTitle; fbinread refnum,S_windowTitle
S_comment=replacestring(";",S_comment,"")
S_windowTitle=replacestring(";",S_windowTitle,"")
S_comment=replacestring(num2char(10),S_comment,"")
note/nocr w,"identification:"+S_identification+";"
note/nocr w,"window title:"+S_windowTitle+";"
note/nocr w,"comment:"+S_comment+";"
note/nocr w,"version:"+num2str(V_version)+";"
note/nocr w,"measure minimum:"+num2str(V_measureMin)+";"
note/nocr w,"measure maximum:"+num2str(V_measureMax)+";"
note/nocr w,"alarm minimum:"+num2str(V_alarmMin)+";"
note/nocr w,"alarm maximum:"+num2str(V_alarmMax)+";"
note/nocr w,"alarm delay/min:"+num2str(V_alarmDelay)+";"
if(V_version!=74&&V_version!=73)
DoAlert 0,"MiniLog version of file "+S_filenameLocal+".el1 is not 7.3 or 7.4 (with which this file loader has been tested).\rPlease check the data carefully for reliability!"
endif
close refnum
end
#pragma version=1.2
////////////////////////
// Remarks:
// Data loader for .el1 files, which were saved with the program 'MINISOFT V7.8' (http://www.greisinger.de/).
// The binary file structure of the .el1 files has been worked out empirically (because the
// company didn't want to reveal any details of their binary format), so the structure
// may change in fututre versions of the program. Additionally be aware of bugs.
// The data loader reads out the data, the time scaling, and some parameters which are put in the wave note.
////////////////////////
Menu "Load Waves"
"Load MiniSoft File...", LoadMiniSoftFile()
end
function LoadMiniSoftFile()
variable refnum
open/z=2/m="Looking for a MiniSoft file"/r/t=".el1" refnum
if(V_flag==-1)
return 0
endif
fstatus refnum
string S_filenameLocal=ReplaceString(".el1",S_filename,"")
variable V_numDataPnts,V_timeDelta,V_timeStart,V_startComment,V_commentLen
variable V_startWindowTitle,V_windowTitleLen,V_tmp,V_measureMin,V_measureMax
variable V_version,V_alarmMin,V_alarmMax,V_alarmDelay
string S_comment,S_windowTitle,S_identification
fsetpos refnum,99; fbinread/b=3/f=3 refnum,V_startComment
V_startComment-=1 // in Igor, first byte is byte #0!!!
fsetpos refnum,1007; fbinread/b=3/f=5 refnum,V_version
fsetpos refnum,1111; fbinread/b=3/f=5 refnum,V_measureMin
fsetpos refnum,1119; fbinread/b=3/f=5 refnum,V_measureMax
fsetpos refnum,1503; fbinread/b=3/f=5 refnum,V_alarmMin
fsetpos refnum,1511; fbinread/b=3/f=5 refnum,V_alarmMax
fsetpos refnum,1519; fbinread/b=3/f=3 refnum,V_alarmDelay
fsetpos refnum,2003; fbinread/b=3/f=3 refnum,V_numDataPnts
fsetpos refnum,2011; fbinread/b=3/f=3 refnum,V_timeDelta
fsetpos refnum,3999; fbinread/b=3/f=5 refnum,V_timeStart
V_timeStart=V_timeStart*24*60*60-126313200 // Conversion into s, offset subtraction
make/o/n=(V_numDataPnts) $S_filenameLocal
wave w=$S_filenameLocal
fbinread/b=3/f=5 refnum,w // data start @ 4007
setscale/p x V_timeStart,V_timeDelta,"dat" w
S_identification=padstring("",39,0x20)
fsetpos refnum,2103; fbinread refnum,S_identification
S_identification=replacestring(num2char(32),S_identification,"")
fsetpos refnum,V_startComment
do
fbinread/f=1 refnum,V_tmp
while(V_tmp!=4)
fstatus refnum; V_commentLen=V_filePos-V_startComment-1
do
fbinread/f=1 refnum,V_tmp
while(V_tmp!=0)
fstatus refnum; V_startWindowTitle=V_filePos
do
fbinread/f=1 refnum,V_tmp
while(V_tmp!=4)
fstatus refnum; V_windowTitleLen=V_filePos-V_startWindowTitle-1
S_comment=padstring("",V_commentLen,0x20)
fsetpos refnum,V_startComment; fbinread refnum,S_comment
S_windowTitle=padstring("",V_windowTitleLen,0x20)
fsetpos refnum,V_startWindowTitle; fbinread refnum,S_windowTitle
S_comment=replacestring(";",S_comment,"")
S_windowTitle=replacestring(";",S_windowTitle,"")
S_comment=replacestring(num2char(10),S_comment,"")
note/nocr w,"identification:"+S_identification+";"
note/nocr w,"window title:"+S_windowTitle+";"
note/nocr w,"comment:"+S_comment+";"
note/nocr w,"version:"+num2str(V_version)+";"
note/nocr w,"measure minimum:"+num2str(V_measureMin)+";"
note/nocr w,"measure maximum:"+num2str(V_measureMax)+";"
note/nocr w,"alarm minimum:"+num2str(V_alarmMin)+";"
note/nocr w,"alarm maximum:"+num2str(V_alarmMax)+";"
note/nocr w,"alarm delay/min:"+num2str(V_alarmDelay)+";"
if(V_version!=74&&V_version!=73)
DoAlert 0,"MiniLog version of file "+S_filenameLocal+".el1 is not 7.3 or 7.4 (with which this file loader has been tested).\rPlease check the data carefully for reliability!"
endif
close refnum
end
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More
--
J. J. Weimer
Chemistry / Chemical & Materials Engineering, UAH
July 8, 2008 at 12:21 pm - Permalink