253 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			253 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
include( "head.php" );
 | 
						|
?>
 | 
						|
<div id="alert"></div>
 | 
						|
<div class="row" id="effect">
 | 
						|
	<div class="col-md-7">
 | 
						|
		<div class="thumbnail">
 | 
						|
			<div class="caption">
 | 
						|
			</div>
 | 
						|
			<img id="snap" src=""> </div>
 | 
						|
	</div>
 | 
						|
	<div class="col-md-5">
 | 
						|
		<div class="panel panel-default">
 | 
						|
			<div class="title">
 | 
						|
				<h3 class="panel-title">
 | 
						|
					<cn>摄像机控制</cn>
 | 
						|
					<en>Camera control</en>
 | 
						|
				</h3>
 | 
						|
			</div>
 | 
						|
			<div class="panel-body">
 | 
						|
				<div id="ptz_frame">
 | 
						|
				<button type="button" id="ptz_L" class="btn btn-warning" style="left:0; top:34%;">
 | 
						|
				<i class="fa fa-arrow-circle-left"></i>
 | 
						|
				</button>
 | 
						|
				<button type="button" id="ptz_R" class="btn btn-warning" style="right:0; top:34%;">
 | 
						|
				<i class="fa fa-arrow-circle-right"></i>
 | 
						|
				</button>
 | 
						|
				<button type="button" id="ptz_T" class="btn btn-warning" style="left:34%; top:0;">
 | 
						|
				<i class="fa fa-arrow-circle-up"></i>
 | 
						|
				</button>
 | 
						|
				<button type="button" id="ptz_B" class="btn btn-warning" style="left:34%; bottom:0;">
 | 
						|
				<i class="fa fa-arrow-circle-down"></i>
 | 
						|
				</button>
 | 
						|
				<button type="button" id="ptz_RST" class="btn btn-warning" style="left:33.5%; top:33.5%;">
 | 
						|
				<i class="fa fa-refresh"></i>
 | 
						|
				</button>
 | 
						|
				</div>
 | 
						|
				<div id="zoom_frame">
 | 
						|
					Zoom:<input id="zoom" class="slider" type="text" data-slider-min="100" data-slider-max="400" data-slider-step="1"/>
 | 
						|
				</div>
 | 
						|
				<div id="cam_cfg" class="row text-center">
 | 
						|
					<div class="col-md-4">
 | 
						|
						<div class="t">自动跟踪</div>
 | 
						|
						<div>
 | 
						|
							<input type="checkbox" id="tracking" class="switch form-control">
 | 
						|
						</div>
 | 
						|
					</div>
 | 
						|
					<div class="col-md-4">
 | 
						|
						<div class="t">白板跟踪</div>
 | 
						|
						<div>
 | 
						|
							<input type="checkbox" id="whiteboard" class="switch form-control">
 | 
						|
						</div>
 | 
						|
					</div>
 | 
						|
					<div class="col-md-4">
 | 
						|
						<div class="t">俯拍模式</div>
 | 
						|
						<div>
 | 
						|
							<input type="checkbox" id="overhead" class="switch form-control">
 | 
						|
						</div>
 | 
						|
					</div>
 | 
						|
					<div class="col-md-4">
 | 
						|
						<div class="t">桌面模式</div>
 | 
						|
						<div>
 | 
						|
							<input type="checkbox" id="deskview" class="switch form-control">
 | 
						|
						</div>
 | 
						|
					</div>
 | 
						|
					<div class="col-md-4">
 | 
						|
						<div class="t">HDR</div>
 | 
						|
						<div>
 | 
						|
							<input type="checkbox" id="hdr" class="switch form-control">
 | 
						|
						</div>
 | 
						|
					</div>
 | 
						|
					<div class="col-md-4">
 | 
						|
						<div class="t">镜像</div>
 | 
						|
						<div>
 | 
						|
							<input type="checkbox" id="mirror" class="switch form-control">
 | 
						|
						</div>
 | 
						|
					</div>
 | 
						|
				</div>
 | 
						|
			</div>
 | 
						|
		</div>
 | 
						|
		<div class="panel panel-default">
 | 
						|
			<div class="title">
 | 
						|
				<h3 class="panel-title">
 | 
						|
					<cn>预置位</cn>
 | 
						|
					<en>Preset position</en>
 | 
						|
				</h3>
 | 
						|
			</div>
 | 
						|
			<div class="panel-body">
 | 
						|
				<div id="preset" class="row" style="width: 60%; margin:0 auto;">
 | 
						|
					<button type="button" class="btn btn-default col-xs-4">1</button>
 | 
						|
					<button type="button" class="btn btn-default col-xs-4">2</button>
 | 
						|
					<button type="button" class="btn btn-default col-xs-4">3</button>
 | 
						|
					<button type="button" class="btn btn-default col-xs-4">4</button>
 | 
						|
					<button type="button" class="btn btn-default col-xs-4">5</button>
 | 
						|
					<button type="button" class="btn btn-default col-xs-4">6</button>
 | 
						|
					<button type="button" class="btn btn-default col-xs-4">7</button>
 | 
						|
					<button type="button" class="btn btn-default col-xs-4">8</button>
 | 
						|
					<button type="button" class="btn btn-default col-xs-4">9</button>
 | 
						|
				</div>
 | 
						|
				<div class="row">
 | 
						|
					
 | 
						|
				<button id="preset_set" type="button" class="btn btn-warning col-xs-4 col-xs-offset-4" style="margin-top:10px">SET</button>
 | 
						|
				</div>
 | 
						|
			</div>
 | 
						|
		</div>
 | 
						|
		
 | 
						|
	</div>
 | 
						|
</div>
 | 
						|
 | 
						|
<script src="vendor/slider/bootstrap-slider.min.js" type="text/javascript"></script>
 | 
						|
<script src="vendor/switch/bootstrap-switch.min.js"></script>
 | 
						|
<script src="js/zcfg.js"></script>
 | 
						|
<script>
 | 
						|
	navIndex( 6 );
 | 
						|
	$( ".slider" ).slider();
 | 
						|
	$.fn.bootstrapSwitch.defaults.size = 'small';
 | 
						|
	$.fn.bootstrapSwitch.defaults.onColor = 'warning';
 | 
						|
	$( ".switch" ).bootstrapSwitch();
 | 
						|
	var config = null;
 | 
						|
	var lays;
 | 
						|
	var chnId = 0;
 | 
						|
	var preset_set=false;
 | 
						|
	$("#preset_set").click( function ( e ) {
 | 
						|
		preset_set=true;
 | 
						|
	} );
 | 
						|
 | 
						|
	$("#preset button").each( function ( index,obj ) {
 | 
						|
		$(obj).click(function(e){
 | 
						|
			if(preset_set)
 | 
						|
				rpc( "usb.preset_set", [ index, curP,curT,curZ ]);
 | 
						|
			else
 | 
						|
				rpc( "usb.preset_call", [ index ]);
 | 
						|
 | 
						|
			preset_set=false;
 | 
						|
		});
 | 
						|
	} );
 | 
						|
 | 
						|
	function init() {
 | 
						|
		for ( var i = 0; i < config.length; i++ ) {
 | 
						|
			if ( config[ i ].type == "usb" )
 | 
						|
			{
 | 
						|
				chnId = config[ i ].id;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		setInterval( show, 200 );
 | 
						|
		
 | 
						|
	}
 | 
						|
 | 
						|
	$.getJSON( "config/config.json", function ( result ) {
 | 
						|
		config = result;
 | 
						|
		init();
 | 
						|
	} );
 | 
						|
 | 
						|
	function snap() {
 | 
						|
		rpc( "enc.snap",[],function ( data ) {
 | 
						|
			
 | 
						|
		});
 | 
						|
	}
 | 
						|
 | 
						|
	function show() {
 | 
						|
		setTimeout( snap, 100 );
 | 
						|
		$( "#snap" ).attr( "src", "snap/snap" + chnId + ".jpg?rnd=" + Math.random() );
 | 
						|
		
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
	var curP=0,curT=0,curZ=100;
 | 
						|
	var stepP=0,stepT=0;
 | 
						|
	var curCfg={};
 | 
						|
	function getState(){
 | 
						|
		rpc( "usb.ptz_get", [], function ( data ) {
 | 
						|
			curP=data.p;
 | 
						|
			curT=data.t;
 | 
						|
			curZ=data.z;
 | 
						|
			setTimeout(getState,500);
 | 
						|
			$("#zoom").val(curZ);
 | 
						|
		});
 | 
						|
		rpc( "usb.insta360_get", [], function ( data ) {
 | 
						|
			//console.log(data);
 | 
						|
			curCfg=data;
 | 
						|
			$("#tracking").bootstrapSwitch('state', curCfg.tracking, true);
 | 
						|
			$("#whiteboard").bootstrapSwitch('state', curCfg.whiteboard, true);
 | 
						|
			$("#overhead").bootstrapSwitch('state', curCfg.overhead, true);
 | 
						|
			$("#deskview").bootstrapSwitch('state', curCfg.deskview, true);
 | 
						|
			$("#hdr").bootstrapSwitch('state', curCfg.hdr, true);
 | 
						|
			$("#mirror").bootstrapSwitch('state', curCfg.mirror, true);
 | 
						|
		});
 | 
						|
	}
 | 
						|
	getState();
 | 
						|
 | 
						|
	var timerId=0;
 | 
						|
	$("#ptz_L").mousedown( function ( e ) {
 | 
						|
		ptzStart();
 | 
						|
		stepP=-1;
 | 
						|
	} );
 | 
						|
	$("#ptz_R").mousedown( function ( e ) {
 | 
						|
		ptzStart();
 | 
						|
		stepP=1;
 | 
						|
	} );
 | 
						|
	$("#ptz_T").mousedown( function ( e ) {
 | 
						|
		ptzStart();
 | 
						|
		stepT=1;
 | 
						|
	} );
 | 
						|
	$("#ptz_B").mousedown( function ( e ) {
 | 
						|
		ptzStart();
 | 
						|
		stepT=-1;
 | 
						|
	} );
 | 
						|
	$("#ptz_RST").click( function ( e ) {
 | 
						|
		ptzStop();
 | 
						|
		curP=0;
 | 
						|
		curT=0;
 | 
						|
		rpc( "usb.ptz_set", [ curP,curT,curZ ]);
 | 
						|
	} );
 | 
						|
	$("#ptz_frame button").each(function(index,obj){
 | 
						|
		$(obj).mouseup(ptzStop);
 | 
						|
		$(obj).mouseout(ptzStop);
 | 
						|
	});
 | 
						|
	function ptzStart(){
 | 
						|
		if(timerId==0)
 | 
						|
			timerId=setInterval(ptzTimer,100);
 | 
						|
	}
 | 
						|
	function ptzStop(){
 | 
						|
		if(timerId!=0)
 | 
						|
			clearInterval(timerId);
 | 
						|
		timerId=0;
 | 
						|
		stepP=0;
 | 
						|
		stepT=0;
 | 
						|
	}
 | 
						|
	function ptzTimer(){
 | 
						|
		curP+=stepP*3600;
 | 
						|
		curT+=stepT*3600;
 | 
						|
		rpc( "usb.ptz_set", [ curP,curT,curZ ]);
 | 
						|
	}
 | 
						|
 | 
						|
	$("#zoom").on("change ", function (evt) {
 | 
						|
		curZ=Number($("#zoom").val());
 | 
						|
		rpc( "usb.ptz_set", [ curP,curT,curZ ]);
 | 
						|
	});
 | 
						|
 | 
						|
	$("#cam_cfg .switch ").on("switchChange.bootstrapSwitch ", function (evt) {
 | 
						|
		curCfg.tracking=$("#tracking").is(":checked");
 | 
						|
		curCfg.whiteboard=$("#whiteboard").is(":checked");
 | 
						|
		curCfg.overhead=$("#overhead").is(":checked");
 | 
						|
		curCfg.deskview=$("#deskview").is(":checked");
 | 
						|
		curCfg.hdr=$("#hdr").is(":checked");
 | 
						|
		curCfg.mirror=$("#mirror").is(":checked");
 | 
						|
		rpc( "usb.insta360_set", [curCfg]);
 | 
						|
	});
 | 
						|
</script>
 | 
						|
<?php
 | 
						|
include( "foot.php" );
 | 
						|
?>
 |