Real-time graphing: Difference between revisions
From JSXGraph Wiki
A WASSERMANN (talk | contribs) mNo edit summary |
A WASSERMANN (talk | contribs) No edit summary |
||
Line 18: | Line 18: | ||
brd = JXG.JSXGraph.initBoard('jxgbox', {axis:true, boundingbox:[0,20,30,-2]}); | brd = JXG.JSXGraph.initBoard('jxgbox', {axis:true, boundingbox:[0,20,30,-2]}); | ||
turt = brd. | // Draw the additional lines | ||
turt = brd.create('turtle',[],{strokecolor:'#999999'}); | |||
turt.hideTurtle().right(90); | turt.hideTurtle().right(90); | ||
for (i=5;i<=15;i+=5) { | for (i=5;i<=15;i+=5) { | ||
Line 38: | Line 39: | ||
ydata.push(a); | ydata.push(a); | ||
if (!g) { // If the curve does not exist yet, create it. | if (!g) { // If the curve does not exist yet, create it. | ||
g = brd. | g = brd.create('curve', [xdata,ydata],{strokeWidth:3, strokeColor:'yellow'}); | ||
} | } | ||
brd.update(); | brd.update(); | ||
Line 64: | Line 65: | ||
brd = JXG.JSXGraph.initBoard('jxgbox', {axis:true, boundingbox:[0,20,30,-2]}); | brd = JXG.JSXGraph.initBoard('jxgbox', {axis:true, boundingbox:[0,20,30,-2]}); | ||
turt = brd. | // Draw the additional lines | ||
turt = brd.create('turtle',[],{strokecolor:'#999999'}); | |||
turt.hideTurtle().right(90); | turt.hideTurtle().right(90); | ||
for (i=5;i<=15;i+=5) { | for (i=5;i<=15;i+=5) { | ||
Line 85: | Line 87: | ||
ydata.push(a); | ydata.push(a); | ||
if (!g) { // If the curve does not exist yet, create it. | if (!g) { // If the curve does not exist yet, create it. | ||
g = brd. | g = brd.create('curve', [xdata,ydata],{strokeWidth:3, strokeColor:'yellow'}); | ||
} | } | ||
brd.update(); | brd.update(); |
Revision as of 08:09, 15 May 2010
This little script shows how to graph the data from a sensor in a web browser. Using AJAX, the web browser retrieves once per second data from the web server by calling the script fakesensor.php.
Here, fakesensor.php just returns a random number, but one can image that real sensor data can be accessed similarly.
The underlying JavaScript code
<script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/distrib/prototype.js"></script>
<style>
#jxgbox {
background-color:black;
}
</style>
var brd, g,
xdata = [], ydata = [],
turt,i;
brd = JXG.JSXGraph.initBoard('jxgbox', {axis:true, boundingbox:[0,20,30,-2]});
// Draw the additional lines
turt = brd.create('turtle',[],{strokecolor:'#999999'});
turt.hideTurtle().right(90);
for (i=5;i<=15;i+=5) {
turt.penUp().moveTo([0,i]).penDown().forward(30);
}
fetchData = function() {
new Ajax.Request('/ajax/fakesensor.php', {
onComplete: function(transport) {
var t, a;
if (200 == transport.status) {
t = transport.responseText;
a = parseFloat(t);
if (xdata.length<30) {
xdata.push(xdata.length); // add data to the x-coordinates, if the right border has not been reached, yet
} else {
ydata.splice(0,1); // remove the oldest entry of the y-coordinates, to make the graph move.
}
ydata.push(a);
if (!g) { // If the curve does not exist yet, create it.
g = brd.create('curve', [xdata,ydata],{strokeWidth:3, strokeColor:'yellow'});
}
brd.update();
};
}});
};
setInterval(fetchData,1000); // Start the periodical update
The PHP code of fakesensor.php
<?php
echo mt_rand(0,20);
?>