levelArr[$j]={$levelArr[$j]}"; if($j == 0){ $levelWhere ="level_$levelNo='${"level_$levelNo"}'"; }else{ $levelWhere .=" AND level_$levelNo='${"level_$levelNo"}'"; } } return($levelWhere); } 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{ $errorInfo = "Error in omcStrFill:the defLen < lengh of string!!\\ndefLen=$defLen and string=$string!!"; echo ""; exit(); echo "
Error in omcStrFill : the defLen < lengh of string!!"; echo "
defLen=$defLen and string=$string!!"; exit(); } } function getInnerValue($sysId,$oidStr,$order,$instanceNo=0,$otherWhereStr='',$showStr,$inputValueType) { global $language,$Debug,$inputID; $sysIdArr = explode('_',$sysId); $sysTypeNo = $sysIdArr[0]; $sysNo = $sysIdArr[1]; $subSysNo = $sysIdArr[2]; $objDb = 'OBJ_'.$sysTypeNo; $paramTable = 'param_'.$sysNo; $sysConfTable = 'OMC_PUB.sysConf'; $pubDb ='OMC_PUB'; $paramConfTable = $objDb.".paramConf"; $maxLevelNum = 10; $nInteger = 2; $nOctStr = 4; if(strlen($showStr)>0){ echo ""; return ""; } if($Debug) echo "
$paramConfTable
"; //---------------------- //选择语言版本 if($language == 'eng'){ $objNameField=name_2; $objSetField=setTemplate_2 ; //语种2 }else{ $objNameField=name_1; $objSetField=setTemplate_1 ; //语种1(默认语种) } if($Debug) echo "
getValue = $getValue"; $objWhereStr = getLevelWhere($oidStr); $objSql = "SELECT $objNameField,$objSetField,valueType,length,minValue,maxValue FROM $paramConfTable WHERE $objWhereStr"; $objResult = mysqli_query($pubConn ,$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]; $paramSql = " SELECT initValue FROM $paramTable WHERE $objWhereStr $otherWhereStr AND instanceNo = '$instanceNo' "; $v_Result = mysqli_query($pubConn,$paramSql); $v_Row = mysqli_fetch_array($v_Result); $getValue = $v_Row[0]; //explode by '[remark]' $remarkArr = explode('[remark]',$setTemplate); $remark = $remarkArr[1]; //explode by '[unit]' $unitArr = explode('[unit]',$remarkArr[0]); //explode by '[u]' $tlvArr = explode('[u]',$unitArr[$order]); //Unit Name if($Debug) echo "$tlvArr[0] : $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($getValue,$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]); //$operType = chop($valueArr[0]); $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]); 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 'toAscii': $charValue = ""; if($bgnBit > 0 ||$endBit < 7){ echo "
Error:toAscii"; 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++; } $charValue = trim($charValue); $inputValue = $charValue; } 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': if ("toAscii" != $defArr[0]) { switch($defArr[2]){ case '0': $inputValue = str_replace('00','',$inputValue); break; case 'E': $inputValue = str_replace('E','',$inputValue); break; case 'F': //modify zane 20051004 $inputValue = str_replace('F','',$inputValue); break; default: break; } } break; default: break; } if($Debug) echo "
$valueType == $nOctStr"; if($def_flag){ $inputValue = $defaultVaule; } //echo "valueType:$valueType
"; //if($valueType == $nOctStr) //echo "getInner----inputValueType:$inputValueType
"; //$inputValueType=$inputValueType+0; if($valueType==2) { $chechFnc = "checkInput(this,16)"; if($defArr[0] == 'toAscii') { $inputLen = $byteLen; $chechFnc = ""; } elseif($defArr[0] == 'toHex' || $defArr[0] == 'keepHex') { $inputLen = $byteLen *2; } else { $inputLen = $byteLen *3; } $inputSize = $inputLen + 2; } else { $chechFnc = "checkInput(this,10)"; } //=============input type===================== $inputValueType=$inputValueType+0; //echo "getInner----inputValueType:$inputValueType
"; //===only can input the dec num==== if($inputValueType==1) { $chechFnc = "checkInput(this,10)"; } //===only can input the hex num==== else if($inputValueType==2) { $chechFnc = "checkInput(this,16)"; } //====can input all character else if($inputValueType==3) { $chechFnc = ""; } //=====can put only dec num but include blank else if($inputValueType==4) { $chechFnc = "checkInput_patch(this)"; } echo ""; return $inputValue; break; } case 'select': { if($valueType == $nOctStr){ if($bitValue != ''){ $selectValue = BinDec($bitValue); }else{ $selectValue = HexDec($byteValue); } }else{ $selectValue=$byteValue; } if($def_flag){ $selectValue = $defaultVaule; } if($Debug) echo "
bitValue = $bitValue"; if($Debug) echo "
selectValue = $selectValue"; if($Debug) echo "
$valueType =?= $nOctStr(nOctStr)"; echo ""; if($readonly){ echo "$selectshwo"; } return $selectshwo; break; } default: echo "
Error:operType =|$operType|"; break; }//end of switch(..) }//end getInnerValue function getParamValue(&$titleStr,&$IniEquRead,$sysId,$oidStr,$order,$instanceNo=0,$otherWhereStr='',$inputValueType) { global $language; //$Debug=1; $sysIdArr = explode('_',$sysId); $sysTypeNo = $sysIdArr[0]; $sysNo = $sysIdArr[1]; $subSysNo = $sysIdArr[2]; $objDb = 'OBJ_'.$sysTypeNo; $paramTable = 'param_'.$sysNo; $sysConfTable = 'OMC_PUB.sysConf'; $pubDb ='OMC_PUB'; $paramConfTable = $objDb.".paramConf"; $maxLevelNum = 10; $nInteger = 2; $nOctStr = 4; if($language == 'eng'){ $objNameField=name_2; $objSetField=setTemplate_2 ; //语种2 }else{ $objNameField=name_1; $objSetField=setTemplate_1 ; //语种1(默认语种) } $objWhereStr = getLevelWhere($oidStr); $objSql = "SELECT $objNameField,$objSetField,valueType,length,minValue,maxValue FROM $paramConfTable WHERE $objWhereStr"; $objResult = mysqli_query($pubConn ,$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]; //explode by '[remark]' $remarkArr = explode('[remark]',$setTemplate); $remark = $remarkArr[1]; //explode by '[unit]' $unitArr = explode('[unit]',$remarkArr[0]); //explode by '[u]' $tlvArr = explode('[u]',$unitArr[$order]); //Unit Name if($Debug) echo "$tlvArr[0] : $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; $paramSql = " SELECT initValue,readValue FROM $paramTable WHERE $objWhereStr $otherWhereStr AND instanceNo = '$instanceNo' "; $v_Result = mysqli_query($pubConn,$paramSql); $v_Row = mysqli_fetch_array($v_Result); $initGetValue = $v_Row[0]; $readGetValue = $v_Row[1]; $initByteValue = substr($initGetValue,$bgnByte*2,$byteLen*2); $readByteValue = substr($readGetValue,$bgnByte*2,$byteLen*2); if($Debug) echo "
init:$initByteValue
read:$readByteValue"; $readBitValue = ''; if($bgnBit > 0 ||$endBit < 7) { $bitLen = $byteLen*8;//1 byte = 8 bit $readBitValue = DecBin(HexDec($readByteValue)); $readBitValue = omcStrFill($readBitValue,$bitLen,'high','0'); $readBitValue = strrev($readBitValue); $catBitLen = $endByte*8+$endBit - ($bgnByte*8+$bgnBit) + 1; //1 byte = 8 bit if($Debug) echo "
readBitValue = substr($readBitValue,$bgnBit,$catBitLen)"; $readBitValue = substr($readBitValue,$bgnBit,$catBitLen); $readBitValue = strrev($readBitValue); if($Debug) echo "
readBitValue = $readBitValue"; } $initBitValue = ''; if($bgnBit > 0 ||$endBit < 7) { $bitLen = $byteLen*8;//1 byte = 8 bit $initBitValue = DecBin(HexDec($initByteValue)); $initBitValue = omcStrFill($initBitValue,$bitLen,'high','0'); $initBitValue = strrev($initBitValue); $catBitLen = $endByte*8+$endBit - ($bgnByte*8+$bgnBit) + 1; //1 byte = 8 bit if($Debug) echo "
initBitValue = substr($initBitValue,$bgnBit,$catBitLen)"; $initBitValue = substr($initBitValue,$bgnBit,$catBitLen); $initBitValue = strrev($initBitValue); if($Debug) echo "
initBitValue = $initBitValue"; } $IniEquRead = false; if(strlen($initBitValue)>0) { if($initBitValue==$readBitValue) $IniEquRead = true; } else { if($initByteValue == $readByteValue) $IniEquRead = true; } //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($initBitValue) > 0){ $initParsedValue = BinDec($initBitValue); }else{ $initParsedValue = HexDec($initByteValue); } break; case 'keepDec': $initParsedValue = $initByteValue; break; case 'toHex': echo "
Error:toHex"; break; case 'keepHex': $initParsedValue = $initByteValue; break; case 'toAscii': $charValue = ""; if($bgnBit > 0 ||$endBit < 7) { echo "
Error:toAscii"; exit(1); } else { $tmpLen=strlen($initByteValue); for($charCount=0;$charCount<$tmpLen;$charCount++) { $unitByte = substr($initByteValue,$charCount,2); $unitChar = chr(HexDec($unitByte)); // hex -> ascii if($Debug) echo "
unitChar=$unitChar"; $charValue .= $unitChar; $charCount++; } $charValue = trim($charValue); $initParsedValue = $charValue; } break; default: echo "
Error:valueType=$defArr[0]"; break; } if($Debug) echo "
initParsedValue = $initParsedValue"; switch($defArr[1]) { case 'high': switch($defArr[2]) { case '0': if($defArr[0] == 'toHex' || $defArr[0] == 'keepHex'){ //$initParsedValue = str_replace('0','',$initParsedValue); }else{ $initParsedValue = $initParsedValue - 0; } break; case 'E': echo "Error:high fill E"; break; default: break; } break; case 'low': if ("toAscii" != $defArr[0]) { switch($defArr[2]){ case '0': $initParsedValue = str_replace('00','',$initParsedValue); break; case 'E': $initParsedValue = str_replace('E','',$initParsedValue); break; case 'F': //modify zane 20051004 $initParsedValue = str_replace('F','',$initParsedValue); break; default: break; } } break; default: break; } $returnValue = $initParsedValue; break; } case 'select': { if($valueType == $nOctStr){ if($initBitValue != ''){ $selectValue = BinDec($initBitValue); }else{ $selectValue = HexDec($initByteValue); } }else{ $selectValue=$initByteValue; } $isSelected = 0; for($j=1;$j$defArr[1]"; } } if($isSelected ==0 && $j == sizeof($valueArr)){ $selectShow = "Undefined Value"; } $returnValue = $selectShow; break; } default: echo "
Error:operType =|$operType|"; break; }//end of switch(..) if(strlen($returnValue)==0) $returnValue='--'; return $returnValue; }//end getParamValue function setParamValue($unitValue,$sysId,$oidStr,$order,$instanceNo=0,$otherWhereStr='',$inputValueType) { global $language; $Debug=0; $sysIdArr = explode('_',$sysId); $sysTypeNo = $sysIdArr[0]; $sysNo = $sysIdArr[1]; $subSysNo = $sysIdArr[2]; $objDb = 'OBJ_'.$sysTypeNo; $paramTable = 'param_'.$sysNo; $sysConfTable = 'OMC_PUB.sysConf'; $pubDb ='OMC_PUB'; $paramConfTable = $objDb.".paramConf"; $maxLevelNum = 10; $nInteger = 2; $nOctStr = 4; if($Debug) echo "===================
unitValue:$unitValue
"; //---------------------- //选择语言版本 if($language == 'eng'){ $objNameField=name_2; $objSetField=setTemplate_2 ; //语种2 }else{ $objNameField=name_1; $objSetField=setTemplate_1 ; //语种1(默认语种) } $objWhereStr = getLevelWhere($oidStr); $objSql = "SELECT $objNameField,$objSetField,valueType,length,minValue,maxValue FROM $paramConfTable WHERE $objWhereStr"; $objResult = mysqli_query($pubConn ,$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]; $paramSql = " SELECT initValue FROM $paramTable WHERE $objWhereStr $otherWhereStr AND instanceNo = '$instanceNo' "; $v_Result = mysqli_query($pubConn,$paramSql); $v_Row = mysqli_fetch_array($v_Result); $getValue = $v_Row[0]; if($Debug) echo "
getValue = $getValue"; //explode by '[remark]' $remarkArr = explode('[remark]',$setTemplate); $remark = $remarkArr[1]; //explode by '[unit]' $unitArr = explode('[unit]',$remarkArr[0]); //explode by '[u]' $tlvArr = explode('[u]',$unitArr[$order]); //Unit Name if($Debug) echo "
$tlvArr[0] : $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; //explode by '[v]' $valueArr = explode('[v]',$tlvArr[2]); //$operType = chop($valueArr[0]); $typeAddTitleArr = explode('[t]',$valueArr[0]); $operType = chop($typeAddTitleArr[0]); $titleStr = chop($typeAddTitleArr[1]); $valueArr[1] = chop($valueArr[1]); if($Debug) echo "
operType = $operType"; if($operType == 'select') { //select if($valueType == $nOctStr) $changeTypeStr = 'toDec-high-0'; else $changeTypeStr = 'keepDec-high-0'; } else { $changeTypeStr = $valueArr[1]; } $changeTypeArr = explode('-',$changeTypeStr); $changeType = $changeTypeArr[0]; $fillWay = $changeTypeArr[1]; $fillChar = $changeTypeArr[2]; $setUnitValue = ''; if($Debug)echo "
changeType:$changeType"; switch($changeType) { case 'toDec': if($bgnBit > 0 ||$endBit < 7) { $bitLen = $endBit - $bgnBit +1; $bitValue = DecBin($unitValue); if($Debug) echo "
bitValue = $bitValue "; $bitValue = omcStrFill($bitValue,$bitLen,$fillWay,$fillChar); if($Debug) echo "
omcStrFill($bitValue,$bitLen,$fillWay,$fillChar)"; $setUnitValue = $bitValue; } else { $setUnitValue = DecHex($unitValue); $strLen = $byteLen*2; $setUnitValue = omcStrFill($setUnitValue,$strLen,$fillWay,$fillChar); if($Debug) echo "
omcStrFill($setUnitValue,$strLen,$fillWay,$fillChar)"; } if($Debug) echo "
setUnitValue = $setUnitValue"; break; case 'keepHex': if($bgnBit > 0 ||$endBit < 7) { $bitLen = $endBit - $bgnBit +1; $bitValue = ($unitValue); if($Debug) echo "
bitValue = $bitValue "; $bitValue = omcStrFill($bitValue,$bitLen,$fillWay,$fillChar); if($Debug) echo "
omcStrFill($bitValue,$bitLen,$fillWay,$fillChar)"; $setUnitValue = $bitValue; } else { $setUnitValue = ($unitValue); $strLen = $byteLen*2; $setUnitValue = omcStrFill($setUnitValue,$strLen,$fillWay,$fillChar); if($Debug) echo "
omcStrFill($setUnitValue,$strLen,$fillWay,$fillChar)"; } if($Debug) echo "
setUnitValue = $setUnitValue"; break; case 'keepDec': //echo "
Error:keepDec"; $setUnitValue = $unitValue - 0; break; case 'toHex': echo "
Error:toHex"; break; case 'toAscii': if($bgnBit > 0 ||$endBit < 7){ echo "
Error:toAscii"; exit(1); }else{ $tmpLen=strlen($unitValue); for($i=0;$i<$tmpLen;$i++){ $unitChar = substr($unitValue,$i,1); $decValue = ord($unitChar); //ascii -> dec $setUnitValue .= DecHex($decValue); if(strlen($setUnitValue) < 2){ $setUnitValue = '0'.$setUnitValue; } } $strLen = $byteLen*2; $setUnitValue = omcStrFill($setUnitValue,$strLen,$fillWay,$fillChar); } break; default: echo "Error:Unknown valueType"; break; } if($Debug) echo "
setUnitValue = $setUnitValue "; //--><-//$lastValue = $setUnitValue.$lastValue; $setValue = setBitValue($getValue,$tlvArr[1],$setUnitValue); $setValue = strtoupper($setValue); $updSql = "UPDATE $paramTable SET initValue = '$setValue' WHERE $objWhereStr $otherWhereStr AND instanceNo = '$instanceNo'"; mysqli_query($pubConn,$updSql); echo mysqli_error($pubConn); }//end setParamValue //0: flag echo $flag; echo "###"; if($flag=='getVar')//用户点击的是参数 { //1: idName echo $newId; echo "###"; //2: innerStr $oldValue=getInnerValue($sysId,$oidStr,$order,$instanceNo,$otherWhereStr,$showStr,$inputValueType); if(strlen($doingOtherUlr)>0) { $doingOtherUlr .= "&oldValue=$oldValue"; $doingOtherUlr=urlencode($doingOtherUlr); } echo "   SAVE "; } if($flag=='saveVar')//用户点击的是右边的‘Save’ { //1: idName echo $id; echo "###"; //2: innerStr setParamValue($setValue,$sysId,$oidStr,$order,$instanceNo,$otherWhereStr,$inputValueType); $newValue = getParamValue($titleStr,$IniEquRead,$sysId,$oidStr,$order,$instanceNo,$otherWhereStr,$inputValueType); if(strlen($showStr)) echo $showStr; else echo $newValue; echo "###"; //3: isEqual if($IniEquRead||strlen($showStr)) //initValue == readValue echo "1"; else echo "0"; echo "###"; //4: doingOtherUlr if(strlen($doingOtherUlr)>0) { $doingOtherUlr .= "&newValue=$newValue"; } echo $doingOtherUlr; } ?>