IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Problème envoi commande camera IP


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Par défaut Problème envoi commande camera IP
    Bonjour a tous,
    Je suis actuellement entrain de développer une Ihm sous windows qui permet a l'utilisateur d'envoyer des commandes de mouvements et de capture d'image.
    Mais j'ai un petit problème, le fait est que mon code compile très bien sous Builder 6 mais la commande ne fonctionne pas sur la camera, je ne sais pas si cela viens de ma requete GET ou ma connexion ? Quelqu'un as une idée de mon erreur ?

    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    #include <stdio.h>
    #pragma hdrstop
     
     
     
    #include "U_Connection.h"
     
    #include <stdlib.h>
    #include <string.h>
     
     
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
        var=1;
        int n;
     
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::BtConnectionClick(TObject *Sender)
    {
      if(var==0)
      {
        Client->Active=false;
        BtConnection->Caption="Connexion";
     
        var=1;
      }
      else if(var==1){
        Client->Address=(EdtAdresse->Text); // insertion de l'adresse IP saisie dans le composant socket
        Client->Port=StrToInt(EdtPort->Text); // insertion du port saisie dans le composant socket
     
        Client->Active=true;
        BtConnection->Caption="Deconnexion";
     
        var=0;
      }
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::ClientRead(TObject *Sender,
          TCustomWinSocket *Socket)
    {
       AnsiString recept=Socket->ReceiveText();
     
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::BtenvoiCdeClick(TObject *Sender)
    {
     
        sCommande="GET /cgi-bin/camctrl.cgi?move=right HTTP/1.1";
        sCommande+="Host: 192.168.2.5";
        sCommande+="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr;rv:1.9.0.17) Gecko/2009122116 Firefox/3.0.17";
        sCommande+="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        sCommande+="Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3";
        sCommande+="Accept-Encoding: gzip,deflate";
        sCommande+="Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
        sCommande+="Keep-Alive: 300";
        sCommande+="Connection: keep-alive";
     
        sCommande+="\r"; // \r veut dire que la commande est finie
     
        strcpy(cCommande,sCommande.c_str()); // cCommande (tableau) prend la valleur de sCommande qui a été transformé en chaine AZERTY par la fonction .c_str()
     
        send((unsigned int)Client, cCommande, strlen(cCommande), 0); //envoi de la commande
     
     
    }
    Merci d'avance pour vos réponses

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Je me demande s'il ne manque pas les CRLF à la fin de chaque ligne de ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void __fastcall TForm1::BtenvoiCdeClick(TObject *Sender)
    {
     
        sCommande="GET /cgi-bin/camctrl.cgi?move=right HTTP/1.1\0xd\0xa";
        sCommande+="Host: 192.168.2.5\0xd\0xa";
        sCommande+="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr;rv:1.9.0.17) Gecko/2009122116 Firefox/3.0.17\0xd\0xa";
        sCommande+="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\0xd\0xa";
        sCommande+="Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3\0xd\0xa";
        sCommande+="Accept-Encoding: gzip,deflate\0xd\0xa";
        sCommande+="Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\0xd\0xa";
        sCommande+="Keep-Alive: 300\0xd\0xa";
        sCommande+="Connection: keep-alive\0xd\0xa";
     
        sCommande+="\0xd\0xa\0xd\0xa"; // \r veut dire que la commande est finie
     
        strcpy(cCommande,sCommande.c_str()); // cCommande (tableau) prend la valleur de sCommande qui a été transformé en chaine AZERTY par la fonction .c_str()
     
        send((unsigned int)Client, cCommande, strlen(cCommande), 0); //envoi de la commande
     
     
    }
    C'est issu d'un lointain souvenir du protocol HTTP.

  3. #3
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Salut,

    Si je peut me permettre un conseil, tu peux aussi utiliser un outil comme Wireshark (ex-Ethereal), pour regarder si "quelque chose" est émis ou non par ta machine, et peut-être éliminer le problème de la connexion, ou de l'accès aux sockets...

  4. #4
    Membre très actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Par défaut
    Vérifie si tous tes firewalls sont désactivés, par expérience, on passe souvent des heures à chercher le problème dans le code alors que c'est simplement un problème de blocage.

    Si tu as par exemple avast, même en le désactivant il bloque quand même parfois j'avais été obligé de le désinstaller complètement, c'est assez agaçant.

    Bref, vérifie ton parfeux windows + ton firewalls software + que ton routeur ou ta box ne bloque pas le port de ta caméra, et après tu pourras soupçonner le code peut-être.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Par défaut
    re !
    tout d'abord merci beaucoup de vous etre penchés sur mon problème.
    j'ai trouvé une solution qui me permet d'envoyer mes requetes a ma camera ip voici le code qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    void __fastcall TForm1::BtenvoiCdeDroiteClick(TObject *Sender)
    {
         if(var==0)
      {
        Client->Active=false;
        BtConnection->Caption="Connexion";
     
        var=1;
      }
      else if(var==1){
        Client->Address=(EdtAdresse->Text); // envoi adresse au composant
        Client->Port=StrToInt(EdtPort->Text); // idem pour le port
     
        Client->Active=true;
        BtConnection->Caption="Deconnexion";
     
        var=0;
      }
            sCommande="GET http://192.168.2.5/cgi-bin/camctrl.cgi?move=left HTTP/1.1 \0xd\0xa"; //commande de mouvement stocké dans un string
            sCommande+="\0xd\0xa";//saut de ligne
            strcpy(cCommande,sCommande.c_str()); // cCommande (tableau) prend la valleur de sCommande qui a été transformé en chaine AZERTY par la fonction .c_str() pour utilisation ultérieure
            NMHTTP2->Get(sCommande);//envoi de la commande via la fonction Get du composant NMHTTP de borland
     
        WSACleanup(); // tuer la socket
    }

Discussions similaires

  1. Problème de commande envoi formulaire
    Par kck61 dans le forum Langage
    Réponses: 3
    Dernier message: 25/08/2011, 16h15
  2. [LabVIEW 8.6] Problème envoi commande par RS232
    Par K-RK-S dans le forum LabVIEW
    Réponses: 0
    Dernier message: 30/03/2009, 09h13
  3. [JSSH]Probléme envoi de commande jeebop.sh stop
    Par Micke7 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 28/11/2008, 18h21
  4. [Mail] Problème envoi formulaire par mail
    Par Nicos77 dans le forum Langage
    Réponses: 5
    Dernier message: 10/11/2005, 17h11
  5. problème envoie d'un message postcommand()
    Par semenzato dans le forum MFC
    Réponses: 4
    Dernier message: 13/01/2004, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo