<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="ina2.css">
    <title>Get data INA219</title>
    <script type="text/javascript" src="dygraph.js"></script>
  </head>
  <body>
    <div style="width:1000px; height:500px;">
    <div id="div_v"	style="width:100%; height:400px;"></div>
	<p style="text-align: center;">	
		<input type="button" id="butOnOff" value="Stop">
		<input type="radio" name='rm1'  id="FixEnd"/>
		<label for="FixEnd">Fixed</label>
		<input type="radio" checked name='rm1' id="FixNone"/> 
		<label for="FixNone">Float</label><br>
		Window: <span id='wdsize'>?</span> sec<br>
		Sample Rate: <span id='smprate'>?</span> smps
	</p>
	<div id='labdiv' style="text-align: center;"></div>
	</div>

<script type="text/javascript">
var $ = function(id) {
	return document.getElementById(id);
}
var stg = 0;
var smprate = 1819;
var smps = smprate;
var samples = 10*smprate;
var rend = 1;
var oldblkid = 0;
var rdnextflg = false;
var cur_idx = 0;
var sttim = 0;
$("butOnOff").onclick =  function() {
	if(rend) { 
		rend = 0;
		$("butOnOff").value = "Run";
	} else {
		rend = 1;
		$("butOnOff").value = "Stop";
	}
}
var datau = [];
var gu;
//window.onresize= function(){//	alert('������� div #Test ��������.');}	
function wsping() {
	clearTimeout(wstt);
	ws.send('ina219'); 
	wstt = setTimeout(wsping, 500);
}
ws = new WebSocket('ws://rtl871x0/web.cgi');
ws.binaryType = 'arraybuffer';
ws.onopen = function(){ ws.send('user=rtl871x:supervisor'); ws.send('sys_debug=0'); wstt = setTimeout(wsping, 50);};
ws.onmessage = function (event) {
	if(event.data instanceof ArrayBuffer) {
		clearTimeout(wstt);
		var wordarray = new Int16Array(event.data);
		if(wordarray.length > 2) {
			var blksz = wordarray[0]; 
			if(wordarray.length == blksz*2 + 2) {
				if(!sttim) {
					sttim = new Date().getTime();
					setInterval(function(){wsSmpRate()}, 500);
				} else {
					var blkid = wordarray[1] & 0xFFFF;
					if(rdnextflg) {
						cur_idx += (blkid - oldblkid) & 0xFFFF;
					} else rdnextflg = true;
					oldblkid = blkid + blksz;
					for (var i=2; i<wordarray.length; i+=2) {
						if(rend) {
 							if(cur_idx >= samples ) datau.shift();
 							if(wordarray[i] & 2) datau.push([cur_idx/smprate, wordarray[i]*0.0005, wordarray[i+1]*0.1]);
 							else datau.push([cur_idx/smprate]);
						}					
						cur_idx++;
					}
					if(!stg) {
						gu = new Dygraph(
						$("div_v"), 
					    datau,
						{
							title: 'U & I (INA219)',
//							rightGap: 250,
							showRangeSelector: true,
//							drawPoints: true,
//							rollPeriod: 10,
//							errorBars: true,
//							fillGraph: true,
							showRoller: true,
//							maxNumberWidth: 10,
//							digitsAfterDecimal: 3,
							xlabel: 'T(sec)',
							ylabel: 'U(V)',
							y2label: 'I(mA)',
							colors: ['rgb(51,204,204)','rgb(255,100,100)'],
//							highlightSeriesOpts: { strokeWidth: 2 },
							series : { 'I': { axis: 'y2' } },
							axes: { 
								x: {valueFormatter: function(x){return this.getLabels()[0] + ': '+ x.toPrecision(3);}},
								y: {valueRange: [0,]}, 
								y2: {valueRange: [0,]}},
							labels: ['T', 'U', 'I'],
							labelsDiv: $('labdiv'),
							legend: 'always',  // "follow"
//							legendFormatter: legendFormatter
						});
						setInterval(function(){renderChart()}, 50);
						stg = 1;
					}
			}	}
			wstt = setTimeout(wsping, 40);
}	}	}
function wsSmpRate() {
	smps = cur_idx * 1000/ (new Date().getTime() - sttim);
	$('smprate').innerHTML = smps.toFixed(1);
}
var renderChart = function() {
//    $('div_v').style.height = (window.innerHeight-180) + 'px';
	var dl;
	if (gu.dateWindow_) { 
		dl = gu.dateWindow_[1] - gu.dateWindow_[0];
	    if ($("FixEnd").checked) {
			var ls = datau.length - 1;
			gu.dateWindow_[1] = datau[ls][0];
			gu.dateWindow_[0] = datau[ls][0] - dl;
    	} else if (gu.dateWindow_[0] < datau[0][0]) { 
			gu.dateWindow_[0] = datau[0][0];
			gu.dateWindow_[1] = datau[0][0] + dl;
	   	}
	} else dl = datau.length/smprate;
	$("wdsize").innerHTML = dl.toFixed(3);
	if(rend) gu.updateOptions({'file': datau});
}
</script>
  </body>
</html>