0)?$TEST:0;
//value Type
$nInteger = 2;
$nOctStr = 4;
$nShowsize = '40%';
function omcGetObjDb($sysTypeNo){
$dbName = 'OBJ_'.$sysTypeNo;
return($dbName);
}
function omcGetObjTbl($sysTypeNo,$tableType){
$dbName = 'OBJ_'.$sysTypeNo;
$tableName = $dbName.'.paramConf';
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';
$paramTable = 'param_99';
$objDb = omcGetObjDb($sysTypeNo);
$paramConfTable = omcGetObjTbl($sysTypeNo,paramConf);
$maxLevelNum = 10;
if($DEBUG) echo "
$paramConfTable
";
if($DEBUG) echo "
aliasName=$aliasName
";
//----------------------
//选择语言版本
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
for($i=1;$i<=$unitNum;$i++)
{
$tmpDef = ${'unitDef_'.$i};
$tmpValue = ${'unit_'.$i};
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 '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
$byteValue .= DecHex($decValue);
if(strlen($byteValue) < 2){
$byteValue = '0'.$byteValue;
}
}
$strLen = $byteLen*2;
$byteValue = omcStrFill($byteValue,$strLen,$fillWay,$fillChar);
}
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;
{
$objWhereStr =getLevelWhere($objIdStr);
$updSql = "UPDATE $paramTable SET initValue = '$setValue'
WHERE $objWhereStr AND instanceNo = '$instanceNo'
";
mysqli_query($pubConn,$updSql);
echo mysqli_error($pubConn);
}
echo "";
exit();
}//end of if($set == 1)
//=======================Show GUI ========================
?>