Partage
  • Partager sur Facebook
  • Partager sur Twitter

socket javascript et arduino

    4 juin 2013 à 10:36:42

    Bjr à tous,

    j'essaye depuis quelques temps de passer des ordres à mon arduino via l'ethernetshield à partir d'une tablette android. Sur mon PC j'utilise avec succès un script python (socket.send("hello world")) mais j'ai des problèmes sous android. J'ai donc pensé au javascript. J'ai fais un page HTML avec une fonction javascript du genre :

    <html>
    <head>
    
    <script language="javascript">
      function Com() 
    		{
    			  
        var ws=new WebSocket("ws://185.398.8.98:1456");  
        ws.send("hello world");  
        ws.close();
    	
    		}
    </script>
    </head>
    <body>
    
    <a href="index01.html" onClick="Com();")>Allumer/Eteindre alimentation</a>
    
    </body>
    </html>


    dans ce script il y a un lien qui renvoie à lui-même (index01.html). Si on le clique il exécute la fonction Com().

    problème 1: si je laisse le script tel quel : il va bien rentrer dans la fonction mais ne l'exécute pas (!) par contre si je rajoute un alert("connection OK  ") après la création il se connecte et envoie quelque chose à l'Arduino la fonction Com() devient donc

    function Com() 
    		{
    			  
        var ws=new WebSocket("ws://185.398.8.98:1456");
        alert("connecté");
        ws.send("hello world");  
        ws.close();
    	
    		}

    et la réponse sur le port série de l'Arduino :

    GET / HTTP/1.1
    Host: 185.398.8.98:1456
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    DNT: 1
    Sec-WebSocket-Version: 13
    Origin: null
    Sec-WebSocket-Key: L3WHGjDuNlQAD35LhTWZZw==
    Connection: keep-alive, Upgrade
    Pragma: no-cache
    Cache-Control: no-cache
    Upgrade: websocket
    
    

    pourquoi ?

    problème 2 : où est mon "hello world" : il semble que la commande ws.send() ne soit pas prise en compte....

    quelqu'un pourrait m'aider, m'avancer ? (tout commentaire bienvenu)

    PS je poste également ce message dans le forum sur Arduino

    merci d'avance

    cactus68100

    • Partager sur Facebook
    • Partager sur Twitter
      4 juin 2013 à 10:58:50

      Je suis loin d'etre expert en javascript et découvre avec toi les websockets mais j'aurais une premiere remarque qui peut surement expliquer pourquoi rajouter un "alert" améliore les choses :

      Lorsque tu créé ton socket, si tu ne met pas de pause tu vas chercher directement à envoyer des données sans pour autant être sur que ce dernier est ouvert et prêt. Du coup ca marche pas. Si tu rajoutes un alert, le temps que la fenetre popup et que tu la ferme le socket s'est bien ouvert et du coup fonctionne. Tu devrais utiliser les évènements du websocket pour faire les choses proprement et dans l'ordre (comme "onopen" par exemple)

      • Partager sur Facebook
      • Partager sur Twitter

      Retrouvez moi sur mon blog et ma chaine Youtube !

        4 juin 2013 à 12:30:46

        Bjr Eskimon et merci pour ta réponse.

        En fait, j'avais déjà essayé "ws.onopen{ws.send("hello world")}" mais ça ne marche pas mieux.

        • Partager sur Facebook
        • Partager sur Twitter

        socket javascript et arduino

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown