Pages: [1]   Go Down
Author Topic: VB Expresse comunique via Arduino Ethernet shield  (Read 685 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Bonjour

Dans mon projet, la carte arduino monté avec le shield Ethernet communique avec un programme en VB.net et un site web en php4.
Des ordres sont envoyé via le site web ou bien via le programme en Vb sous forme de requete http
J'utilise vb expresse 2010

Le tout fonctionne.  smiley

Mais le code n'est pas bien. je suis novice!

-pour vb.net
j' utlise l'objet Vb : System.Net.Sockets.TcpClient()
via un stream j'envoie la requete
voici le code VB qui fonctionne:

Code:
Private Sub liaisonEthernetArduino(ByVal commande As String)

        Dim ClientSocket As TcpClient
      
        ClientSocket = New System.Net.Sockets.TcpClient()
        Try
            ClientSocket.Connect("AdresseArduino", port)
          
            ' MessageBox.Show("<système> : connexion établie.", "My Application",MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk)

        Catch ex As Exception          
            MessageBox.Show("<système> : serveur introuvable.", "My Application", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk)
        End Try


        'Emmission de données vers le "serveur"
        Dim Stream As NetworkStream = ClientSocket.GetStream()
        Dim DataOut As Byte() = System.Text.Encoding.Unicode.GetBytes(commande)
        Stream.Write(DataOut, 0, DataOut.Length) 'envoi des données
        Stream.Flush()
  
        'Fermeture de connexion
        ClientSocket.Close()

    End Sub

-pour le site web : un simple get de l'adresse de la box/du port utilisé/ puis l'ordre
Code:
<a href= "http://<?php echo $IpAdresse ?>/?sms=ma1"><IMG SRC="images/on.jpg"  TITLE="ON" align="left"></a>

enfin le code Arduino qui récupère les infos:  (c'est la qu'il faut que j'améliore le code)
Code:
void ethernet()
  {
      // Attente de la connexion d'un client
    EthernetClient client = server.available();    
    if (client && client.connected())
    {
  
      // si le client nous envoi quelque chose
      if (client.available() > 0)
      {
       // Serial.print(client.available());
        carnum = client.available();
        carlu = client.read();
        Serial.println(carnum);
        Serial.print("carlu :");
        Serial.println(carlu);
        if (readString.length() < 500) {
            //store characters to string
            readString+=carlu;
          }
          //Si la requete HTTP est terminée
          if (carlu == '\n') {
            //S'il s'agit d'une demande de SMS
            if(readString.indexOf("sms") >=0) {
                Serial.println("");
                Serial.println("Envoi d un Message SMS :");
                // On récupère le message SMS à envoyer
                messageString = "";
                int debutRequete = readString.indexOf('sms=');
                int finRequete = readString.indexOf('HTTP');
                messageString = readString.substring(debutRequete+1,finRequete-4);
                //on l'affiche sur la console
                Serial.println(messageString);
                
                //on renvoi une réponse web sur le navigateur
                client.println("HTTP/1.1 200 OK");
                client.println("Content-Type: text/html");
                client.println();
                client.println("<h1> <font color='blue'>test</font> </h1>");                              
                client.println("<br>");
                client.println("<font color='red'><h2>ordre recu !</font></h2>");
                client.println("<br><br>");
                client.println("<a href=\"http://siteweb\"><font color='green'>RETOUR</font></a>");
                readString="";
                //on arrete le client
                client.stop();
              }
// essaie pour gerer la requete vb.net comme Html
              /*else if(readString.indexOf("s m s") >=0) {
                Serial.println("");
                Serial.println("Envoi d un Message:");
                // On récupère le message  à envoyer
                messageString = "";
                int debutRequete = readString.indexOf('s m s =');
                int finRequete = readString.indexOf('H T T P');
                messageString = readString.substring(debutRequete+1,finRequete-7);
                //carnum = messageString.lenth();
                //int i;
                //for (i=0; i<=carnum; i++)
                {
                  
                }*/
              
            }

// partie qui gèreles info venant de vb.net
           if(carnum == 6 & (carlu == 's' || carlu == 'v' || carlu == 'l'))
                {
                  //Serial.println(carnum);
                  //Serial.println(carlu);
                   info0 = carlu;
                   Serial.print("info0:");
                   Serial.println(info0);
                  
                }
                else if(carnum == 4 & carlu == 'a' || carlu == 'b' || carlu == 'c' ||carlu == 'd'
                || carlu == 'e' ||carlu == 'f' )
                {
                   info1 = carlu;
                   Serial.print("info1:");
                   Serial.println(info1);
                }
                else if(carnum==2 & (carlu== '1' || carlu== '0'))
                {
                   info2 = carlu;
                   Serial.print("info0:");
                   Serial.println(info2);
                }
      }
    }
  }



Je voudrais utiliser le même code pour le site web et pour VB: soit via la variable "messageString". (partie du code en commentaire).

Mon problème c'est que vb.net -> System.Net.Sockets.TcpClient() envoie caractère par caractère et avec un null entre chaque caractère.

Connaissez vous un autre objet en vb.net qui enverrait l’équivalent de la requête html ?
Ou y at'il une amélioration sur le code arduino?

Merci
« Last Edit: January 19, 2013, 07:35:04 am by matesson44 » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5405
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

HttpClient smiley-wink
http://msdn.microsoft.com/en-us/library/system.net.http.httpclient.aspx
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: [1]   Go Up
Jump to: