
Tektronix Binary File Loader

ikonen
function loadTEKbinary(filenamestr) string filenamestr variable fileref if (strlen(filenamestr)) Open /R /T=".isf" fileref as filenamestr else Open /R /T=".isf" fileref endif if (!(strlen(S_filename))) print "Cancelled" return 0 endif // string shortname = S_filename[StrSearchBack(S_filename, ":") + 1, strlen(S_filename) - 5] string shortname = S_filename[strsearch(S_filename, ":",Inf,1) + 1, strlen(S_filename) - 5] string preamble,curvestring FreadLine /N=8 fileref, preamble if (!stringmatch(preamble, ":WFMPRE:" )) print "Missing preamble" endif FreadLine /T=":" fileref, preamble // print preamble // The Tek form preamble can be used as a keyword string list with list separator ";" and keyseparator " " variable delx,ptoff,xzero,ymult,yoff,yzero,sizeitemsnum,numbytes,byteorder,bytetype variable numitems delx = NumberByKey("XINCR", preamble," ",";") ptoff = NumberByKey("PT_OFF", preamble," ",";") xzero = NumberByKey("XZERO", preamble," ",";") ymult = NumberByKey("YMULT", preamble," ",";") yoff = NumberByKey("YOFF", preamble," ",";") yzero = NumberByKey("YZERO", preamble," ",";") FreadLine /N=7 fileref, curvestring if (!stringmatch(curvestring, "CURVE #" )) print "Missing Binary Start String, 'CURVE #'" return 0 endif FreadLine /N = 1 fileref, curvestring sizeitemsnum = str2num(curvestring) FreadLine /N = (sizeitemsnum) fileref, curvestring numbytes = str2num(curvestring) strswitch(StringByKey("BYT_OR", preamble," ",";")) case "MSB": // execute if case matches expression byteorder = 2 break // exit from switch case "LSB": // execute if case matches expression byteorder = 3 break endswitch switch(NumberByKey("BYT_NR", preamble," ",";")) case 1: // execute if case matches expression bytetype = 1 numitems = numbytes // make /o /b /n = (numbytes) intwave break // exit from switch case 2: // execute if case matches expression bytetype = 2 numitems = numbytes / 2 // make /o /i /n = (numbytes / 2) intwave break endswitch make /o /d /n = (numitems) $shortname wave thewave = $shortname if (stringmatch(StringByKey("BN_FMT", preamble," ",";"),"RI")) Fbinread /B=(byteorder) /F=(bytetype) fileref, thewave else Fbinread /B=(byteorder) /F=(bytetype) /U fileref, thewave endif thewave = (thewave - yoff) * ymult + yzero SetScale d, -10, 10, StringByKey("YUNIT",preamble," ",";") thewave SetScale /P x, (xzero - ptoff *delx), delx, StringByKey("XUNIT",preamble," ",";") thewave // SetScale /P x, ptoff, delx, "" thewave Note /K thewave, StringByKey("WFID",preamble," ",";") close fileref return 1 end

Forum

Support

Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More