var diag22state = 0; //发送 FuncReadDID = function(did){ if(CANHw.isConnected() == false){ return; } var data = {0x03,0x22,did>>8,did&0xff,0,0,0,0}; var ret = CANHw.SendMsg(DiagReqID,data); diag22state = 1; //console.log("did = " + tostring(did,16)); //console.log("ret = " + ret); //FuncDisplay("did = " + tostring(did,16)); } //接收 FuncDiag22Pro = function(data){ //console.log("诊断22服务") if(#data < 3){ return; } var did = (data[1]<<8) + data[2]; select(did) { case 0xF186 { FuncDisplay("当前会话: " + data[3]); } case 0xF193 { var len = string.len(string.pack(table.slice(data,3)),3); if(data[3] != 0){ var str = string.pack(table.slice(data,3,len+3)); FuncDisplay("硬件版本号:" ++ str); } else { FuncDisplay("硬件版本号未读到"); } } case 0xF195 { var len = string.len(string.pack(table.slice(data,3)),3); if(data[3] != 0){ var str = string.pack(table.slice(data,3,len+3)); FuncDisplay("软件版本号:" ++ str); } else { FuncDisplay("软件版本号未读到"); } } case 0xF198 { FuncDisplay("repair_shopcode"); FuncDisplay(string.pack(table.slice(data,3))); } case 0xF199 { FuncDisplay("installation_date"); FuncDisplay(string.format("%02x%02X%02x%02x",data[3],data[4],data[5],data[6])); } case 0xF187 { FuncDisplay("车辆备用零部件编号"); FuncDisplay(string.pack(table.slice(data,3))); } case 0xF18A { FuncDisplay("系统供应商公司名称代码"); FuncDisplay(string.pack(table.slice(data,3))); } case 0xF197 { FuncDisplay("ECU系统名称"); FuncDisplay(string.pack(table.slice(data,3))); } case 0xF190 { FuncDisplay("VIN码"); FuncDisplay(string.pack(table.slice(data,3))); } else { FuncDisplay(TableToStr(data)) } } }