Projets:Perso:2011:OpenShima
Le projet fonctionne avec python et les libraires suivantes :
pywebsocket : http://code.google.com/p/pywebsocket/
pyserial : http://pyserial.sourceforge.net/
Jquery min : http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js
Voila le code source de la partie python :
def web_socket_transfer_data(request): value = "" while True: try : usbport = "/dev/ttyACM0" ser = serial.Serial(usbport, 9600, timeout=1) temp = "" line = "" try : while (temp != ";"): temp = ser.read() line += temp print line line = str(line[-4:-1]) print line ser.close() if line[0] == "0": line = "1%s"%line msgutil.send_message(request, line) value = line except Exception as e : print e print "value %s"%value msgutil.send_message(request,value) if line == _GOODBYE_MESSAGE: return except : msgutil.send_message(request,value)
Le code de la page html :
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
<html> <head> <script src="jquery.min.js"></script> <script> $(document).ready(function(){ var ws; if ("WebSocket" in window) { debug("Horray you have web sockets. Trying to connect..."); ws = new WebSocket("ws://localhost:9998/echo"); ws.onopen = function() { // Web Socket is connected. You can send data by send() method. debug("connected..."); ws.send("hello from the browser"); ws.send("more from browser"); }; run = function() { var val=$("#i1").val(); // read the entry $("#i1").val(""); // and clear it ws.send(val); // tell erlang return true; // must do this }; ws.onmessage = function (evt) { //alert(evt.data); var data = evt.data; document.getElementById("Potar").innerHTML = "<p>"+data+"</p>"; }; ws.onclose = function() { debug(" socket closed"); }; } else { alert("You have no web sockets"); }; function debug(str){ $("#debug").append("<p>" + str); }; }); </script> </head> <body> <h1>Interaction experiment</h1> <h2>Debug</h2> <div id="debug"></div> <fieldset> <legend>Potar</legend> <div id="Potar">I am a clock</div> </fieldset> </body> </html>
Le code uploadé sur le arduino :
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
/* AnalogReadSerial Reads an analog input on pin 0, prints the result to the serial monitor This example code is in the public domain. */ void setup() { Serial.begin(9600); } void loop() { int sensorValue = analogRead(A0); Serial.println("<A0>"); Serial.print(sensorValue, DEC); Serial.println("</A0>"); }
Le code de lancement :
import os #test des differents ports serial #capsule jeu sucette : js: os.system("python mod_pywebsocket/standalone.py -p 9998 -w ../example/ &") os.system("/opt/google/chrome/google-chrome index.html &")
Diverses notes sur le projet : Il a fallut encapsuler les données du Open Fukushima vu que la connection est pourrie.