0)?$TEST:0; $objConn = mysqli_connect($OMC_server[0]['host'],$OMC_server[0]['user'],$OMC_server[0]['password'], "OBJ_".$sysTypeNo); //value Type $nInteger = 2; $nAscStr = 3; $nOctStr = 4; function omcGetObjDb($sysTypeNo){ $dbName = 'OBJ_'.$sysTypeNo; return($dbName); } function omcGetObjTbl($sysTypeNo,$tableType,$dataTypeNo){ $dbName = 'OBJ_'.$sysTypeNo; $tableName = $dbName.'.subsParamConf_'.$dataTypeNo; return($tableName); } /* function omcStrFill($string,$defLen,$fillWay='high',$fillChar='0'){ if(strlen($string) <= $defLen){ $fillLen=$defLen - strlen($string); for($i=0;$i<$fillLen;$i++){ if($fillWay == 'low'){ $string = $string.$fillChar; }else{ $string = $fillChar.$string; } } return($string); }else{ echo "
Error in omcStrFill:the defLen < lengh of string!!"; echo "
defLen=$defLen and string=$string!!"; exit(); } } */ $sysConfTable = 'OMC_PUB.sysConf'; $sysTypeNo = (isset($sysTypeNo)?$sysTypeNo:0); $pubDb ='OMC_PUB'; $objDb = omcGetObjDb($sysTypeNo); $paramConfTable = omcGetObjTbl($sysTypeNo,paramConf,$dataTypeNo); $maxLevelNum = 10; if($DEBUG) echo "
A=$paramConfTable
"; //---------------------- //选择语言版本 if($language == 'eng'){ $objNameField=name_2; $objSetField=setTemplate_2 ; //语种2 }else{ $objNameField=name_1; $objSetField=setTemplate_1 ; //语种1(默认语种) } //----------------------- //=======================Get value From submit=================== if($set == 'Set'){ //sort by offset $unitNum=$_POST['unitNum']; $inputName = $_POST['inputName']; for($i=1;$i<=$_POST['unitNum'];$i++){ // $tmpDef = ${'unitDef_'.$i}; // $tmpValue = ${'unit_'.$i}; $tmpDef = 'unitDef_'.$i; $tmpValue = 'unit_'.$i; $tmpDef = $_POST[$tmpDef]; $tmpValue = $_POST[$tmpValue]; if($DEBUG) echo "
tmpDef = $tmpDef"; $defArr[$i] = $tmpDef; $tmpDefArr=explode('-',$tmpDef); $sortArr[$i] = $tmpDefArr[0]; $valueArr[$i] = $tmpValue; } $lastValue = ''; $k = 0; asort($sortArr); for(reset($sortArr); $key = key($sortArr); next($sortArr)){ if($DEBUG) echo "
sortArr[$key] = {$sortArr[$key]}"; if($DEBUG) echo "
unitValue = {$valueArr[$key]}"; $unitValue = $valueArr[$key]; if($DEBUG) echo "
defArr[$key] = {$defArr[$key]}"; $unitDefArr = explode('-',$defArr[$key]); //例:0.0-0.7-input -toDec-high-0 if(sizeof($unitDefArr) <= 1){ if($DEBUG) echo "
nothing,just a name"; continue; } $bgnOffset = $unitDefArr[0]; $endOffset = $unitDefArr[1]; $operType = $unitDefArr[2]; $valueType = $unitDefArr[3]; $fillWay = $unitDefArr[4]; $fillChar = $unitDefArr[5]; $bgnOffsetArr = explode('.',$bgnOffset); $bgnByte = $bgnOffsetArr[0]; $bgnBit = $bgnOffsetArr[1]; $endOffsetArr = explode('.',$endOffset); $endByte = $endOffsetArr[0]; $endBit = $endOffsetArr[1]; $byteLen = $endByte - $bgnByte + 1; $byteValue = ''; if($DEBUG) echo "
valueType = $valueType"; switch($valueType){ case 'toDec': if($bgnBit > 0 ||$endBit < 7){ $bitLen = $byteLen*8 - $bgnBit - (7 - $endBit) ; //1 BYTE = 8 bit $bitValue = DecBin($unitValue); if($DEBUG) echo "
bitValue = $bitValue "; $bitValue = omcStrFill($bitValue,$bitLen,$fillWay,$fillChar); if($DEBUG) echo "
omcStrFill($bitValue,$bitLen,$fillWay,$fillChar)"; $bitValueArr[$k] = $bitValue; if($DEBUG) echo "
bitValueArr[$k] = {$bitValueArr[$k]}"; if($endBit == 7){//发现这个单元结束,并没有跨byte,这时需要组成一个byte值 $bitValue = ''; for($bitNo=0; $bitNo<=$k; $bitNo++){ if($DEBUG) echo "
bitValueArr[$bitNo] = {$bitValueArr[$bitNo]}"; $bitValue = $bitValueArr[$bitNo].$bitValue; } $k=0; if($DEBUG) echo "
bitValue = $bitValue"; $byteLen = strlen($bitValue) / 8; if($DEBUG) echo "
byteLen = $byteLen"; $byteValue = BinDec($bitValue); $byteValue = DecHex($byteValue); $strLen = $byteLen*2; if($DEBUG) echo "
omcStrFill($byteValue,$strLen,$fillWay,$fillChar)"; $byteValue = omcStrFill($byteValue,$strLen,$fillWay,$fillChar); }else{//否则,继续组合下一个bit组 $byteValue = ''; $k++; } }else{ $byteValue = DecHex($unitValue); $strLen = $byteLen*2; $byteValue = omcStrFill($byteValue,$strLen,$fillWay,$fillChar); if($DEBUG) echo "
omcStrFill($byteValue,$strLen,$fillWay,$fillChar)"; } if($DEBUG) echo "
byteValue = $byteValue"; break; case 'keepDec': //echo "
Error:keepDec"; $byteValue = $unitValue - 0; break; case 'toHex': echo "
Error:toHex"; break; case 'keepHex': if($bgnBit > 0 || $endBit < 7){//这里的处理不够全面,没有对=7的进行收尾 $byteValue = $unitValue; $strLen = $byteLen; $byteValue = omcStrFill($byteValue,$strLen,$fillWay,$fillChar); $bitValue = DecBin(HexDec($byteValue)); $byteValue=''; $bitLen = $byteLen*8 - $bgnBit - (7 - $endBit) ; //1 BYTE = 8 bit $bitValue = omcStrFill($bitValue,$bitLen,'high','0'); if($DEBUG) echo "
bitValue = $bitValue"; $bitValueArr[$k] = $bitValue; $k++; }else{ $k=0; $byteValue = $unitValue; $strLen = $byteLen*2; $byteValue = omcStrFill($byteValue,$strLen,$fillWay,$fillChar); if($DEBUG) echo "
omcStrFill($byteValue,$strLen,$fillWay,$fillChar)"; } break; case 'toAsc': if($bgnBit > 0 ||$endBit < 7){ echo "
Error:toAsc"; exit(1); }else{ $tmpLen=strlen($unitValue); for($i=0;$i<$tmpLen;$i++){ $unitChar = substr($unitValue,$i,1); $decValue = ord($unitChar); //ascii -> dec $byteValue .= DecHex($decValue); if(strlen($byteValue) < 2){ $byteValue = '0'.$byteValue; } } $strLen = $byteLen*2; $byteValue = omcStrFill($byteValue,$strLen,$fillWay,$fillChar); } break; case 'keepAsc': $byteValue = $unitValue; break; default: echo "Error:Unknown valueType"; break; } if($DEBUG) echo "
byteValue = $byteValue "; //--><-//$lastValue = $byteValue.$lastValue; $lastValue = $lastValue.$byteValue; } if($DEBUG) echo "
lastValue = $lastValue "; $setValue = $lastValue; if($TEST != 1){ //set back to input field echo ""; }else{ if($valueType != 'keepAsc' && $valueType != 'toAsc'){ $setValue = strtoupper($setValue); } } }//end of if($set == 1) //=======================Show GUI ======================== ?>
" > setValue = $setValue ,inputName = $inputName"; if($keyId > 0){ $objSql = "SELECT $objNameField,$objSetField,valueType,length,minValue,`maxValue` FROM $paramConfTable WHERE keyId = '$keyId'"; $objResult = mysqli_query($objConn ,$objSql); $objRows = @mysqli_fetch_array($objResult); $totalLen = $objRows[length]*2; $objName = $objRows[$objNameField]; $setTemplate = $objRows[$objSetField]; $valueType = $objRows[valueType]; $minValue = $objRows[minValue]; $maxValue = $objRows[maxValue]; }else{ echo "ERROR!!:keyId == NULL"; exit(); } /************************************** *objName *[unit]name[u]xx.xx-yy.yy[u]input[v]toDec-fillHigh-fillChar *[unit]name[u]xx.xx-yy.yy[u]select[v]value1[opt]desc1[v]value2[opt]desc2 *[remark] ***************************************/ //explode by '[remark]' $remarkArr = explode('[remark]',$setTemplate); $remark = $remarkArr[1]; //explode by '[unit]' $unitArr = explode('[unit]',$remarkArr[0]); //show instance's name echo "{$unitArr[0]}
"; if($DEBUG) echo "
$unitArr[1]"; //show every one unit //--><-//$setValue = strrev($setValue); if($DEBUG){ echo ""; }else{ echo "
"; } for($i=1;$i"; }//end of for(..) echo "
"; //unit input name $unitName = "unit_".$i; //explode by '[u]' $tlvArr = explode('[u]',$unitArr[$i]); if(sizeof($tlvArr) <= 1 ){ echo "{$unitArr[$i]}"; continue; } //show Unit Name echo "$tlvArr[0] "; echo ""; if($DEBUG) echo "$tlvArr[1]"; //explode by '-' $offsetArr = explode('-',$tlvArr[1]); $bgnOffsetArr = explode('.',$offsetArr[0]); $bgnByte = $bgnOffsetArr[0]; $bgnBit = $bgnOffsetArr[1]; $endOffsetArr = explode('.',$offsetArr[1]); $endByte = $endOffsetArr[0]; $endBit = $endOffsetArr[1]; $byteLen = $endByte - $bgnByte + 1; $byteValue = substr($setValue,$bgnByte*2,$byteLen*2); //--><-//$byteValue = strrev($byteValue); if($DEBUG) echo "
byteValue = $byteValue"; $bitValue = ''; if($bgnBit > 0 ||$endBit < 7){ if($DEBUG) echo "
$bgnBit > 0 ||$endBit < 7"; $bitValue = HexDec($byteValue); $bitValue = DecBin($bitValue); if($DEBUG) echo "
bitValue = $bitValue"; $bitLen = $byteLen*8;//1 byte = 8 bit $bitValue = omcStrFill($bitValue,$bitLen,'high','0'); if($DEBUG) echo "
omcStrFill($bitValue,$bitLen,'high','0')"; $bitValue = strrev($bitValue); $catBitLen = $endByte*8+$endBit - ($bgnByte*8+$bgnBit) + 1; //1 byte = 8 bit if($DEBUG) echo "
bitValue = substr($bitValue,$bgnBit,$catBitLen)"; $bitValue = substr($bitValue,$bgnBit,$catBitLen); $bitValue = strrev($bitValue); if($DEBUG) echo "
bitValue = $bitValue"; } //explode by '[v]' $valueArr = explode('[v]',$tlvArr[2]); $typeAddTitleArr = explode('[t]',$valueArr[0]); $operType = chop($typeAddTitleArr[0]); $titleStr = chop($typeAddTitleArr[1]); $valueArr[1] = chop($valueArr[1]); if($DEBUG) echo "
operType = $operType"; switch($operType){ case 'input':// //explode by '-' $defArr = explode('-',$valueArr[1]); if($DEBUG) echo "
defArr = $defArr[0],$defArr[1],$defArr[2]"; switch($defArr[0]){ case 'toDec': if(strlen($bitValue) > 0){ $inputValue = BinDec($bitValue); }else{ $inputValue = HexDec($byteValue); } break; case 'keepDec': $inputValue = $byteValue; break; case 'toHex': echo "
Error:toHex"; break; case 'keepHex': $inputValue = $byteValue; break; case 'toAsc': if($bgnBit > 0 ||$endBit < 7){ echo "
toAsc Error:bgnBit > 0 ||endBit < 7"; exit(1); }else{ $tmpLen=strlen($byteValue); for($charCount=0;$charCount<$tmpLen;$charCount++){ $unitByte = substr($byteValue,$charCount,2); $unitChar = chr(HexDec($unitByte)); // hex -> ascii if($DEBUG) echo "
unitChar=$unitChar"; $charValue .= $unitChar; $charCount++; } $inputValue = $charValue; } break; case 'keepAsc': $inputValue = $byteValue; break; default: echo "
Error:valueType=$defArr[0]"; break; } if($DEBUG) echo "
inputValue = $inputValue"; switch($defArr[1]){ case 'high': switch($defArr[2]){ case '0': if($defArr[0] == 'toHex' || $defArr[0] == 'keepHex'){ //$inputValue = str_replace('0','',$inputValue); }else{ $inputValue = $inputValue - 0; } break; case 'E': echo "Error:high fill E"; break; default: break; } break; case 'low': switch($defArr[2]){ case '0': //$inputValue = str_replace('00','',$inputValue); break; case 'E': //$inputValue = str_replace('E','',$inputValue); break; default: break; } break; default: break; } if($valueType == $nOctStr){ if($DEBUG) echo "
$valueType =$nOctStr= OctStr"; if($defArr[0] == 'toHex' || $defArr[0] == 'keepHex'){ $inputLen = $byteLen *2; }else{ $inputLen = $byteLen *3; } echo ""; }elseif($valueType == $nAscStr){ if($DEBUG) echo "
$valueType == AscStr"; //if($defArr[0] == 'keepAsc'){ $inputLen = $byteLen; //} echo ""; }else{ if($DEBUG) echo "
$valueType == Integer"; echo ""; echo ""; echo ""; echo ""; } break; case 'select': if($bitValue != ''){ $selectValue = BinDec($bitValue); }else{ $selectValue = HexDec($byteValue); } if($DEBUG) echo "
bitValue = $bitValue"; if($DEBUG) echo "
selectValue = $selectValue"; echo ""; break; default: echo "
Error:operType =|$operType|"; break; }//end of switch(..) //like:unitDef_1 = 1.0-2.0-select-keepHex-high-0 -->$tlvArr[1]-$operType- if($operType == 'select'){ //select if($valueType == $nOctStr){ $tempDef = $tlvArr[1].'-'.$operType.'-'.'toDec-high-0'; }else{ $tempDef = $tlvArr[1].'-'.$operType.'-'.'keepDec-high-0'; } }else{ $tempDef = $tlvArr[1].'-'.$operType.'-'.$valueArr[1]; } $tempDef = str_replace(" ", "", $tempDef); $tempDef = chop($tempDef); echo "\n "; echo "
"; $remark=nl2br($remark); echo "
Remarks:
$remark
"; $unitNum = $i-1; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
"; //=======================Test input field======================== if($TEST){ echo "
"; echo "
"; //--><--// $setValue = strrev($setValue); echo "Test Area
"; echo "Test Value:   "; echo ""; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
"; } ?>