var fileinfo = ""; var FlashData = {}; FuncGetAllData = function(){ return FlashData; } FuncGetFileInfo = function(){ return fileinfo; } FuncOpenS19File = function(path){ import fsys.dlg; if(path == null){ path = fsys.dlg.open('S19文件|*.sx;*.s19;*.srec|所有文件|*.*||',,,winform); } if(io.exist( path )){ //winform.editPath.text = path; var readbuf = string.load(path); readbuf = string.split(readbuf,'\r\n'); //console.dumpJson(readbuf); var block = null; FlashData = {}; for(i=1;#readbuf;1){ if(#readbuf[i] == 0){ continue; } var str = readbuf[i]; var data = ""; var addr = 0; var len = 0; select(string.slice(str,1,2)) { case "S0"{ //S0为文件信息 var fileinfobuf = string.slice(str,9,-3);//取出文件信息 fileinfo = "file info:"+string.unhex(fileinfobuf,"")//解码 fileinfo = string.replace(fileinfo,"\z"," ");//替换空字符 FuncDisplay(fileinfo)//显示 continue; } case "S1"{ len = tonumber(string.slice(str,3,4),16) addr = tonumber(string.slice(str,5,8),16) data = string.slice(str,9,-3) } case "S2"{ len = tonumber(string.slice(str,3,4),16) addr = tonumber(string.slice(str,5,10),16) data = string.slice(str,11,-3) } case "S3"{ len = tonumber(string.slice(str,3,4),16) addr = tonumber(string.slice(str,5,12),16) data = string.slice(str,13,-3) } else { continue; } } if(block == null){ //空表,第一次进入 block = {}; block["address"] = addr; block["data"] = {}; } else { //非空表 if(addr == (block["address"]+#block["data"])){ //连续,无动作 } else { //不同块,新建块 FlashData[#FlashData+1]={"address" = block["address"];"data" = block["data"];} block["address"] = addr; block["data"] = {}; } } data = string.unhex(data,"") for(i=1;#data;1){ var bytedata = string.unpack(data,i) table.push(block["data"],bytedata) } } if(block != null){ table.push(FlashData,block) } } //blocknum = 1; return path; }