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

Langage PHP Discussion :

socket_read et caractère NULL


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Par défaut socket_read et caractère NULL
    Bonjour,

    Je suis en train de concevoir un application web, afin de communiquer avec un automate, sous forme TCP/IP. J'ai déjà fait une application en C++ qui communique avec un automate, donc je crois quand même bien connaitre le principe des sockets, mais je n'ai pratiquement jamais fait de programmation web.

    La petite application est fort simple, j'envoie une commande de type Modbus, pour activer/désactiver des relais. Pour l'envoie de la commande, tout fonctionne très bien. Par la suite, j'essaie d'aller lire l'état de mes relais. Et la rien ne se passe, je ne suis pas capable de lire ce que l'automate me retourne. La valeur de retour est 0x00, 0x00, 0x00, 0x00, 0x06 etc ..... Je soupçonnes que ce soit à cause des caractères NULL (0x00) que je reçoit au début de la commande.

    Voici tout de même à quoi ressemble mon code pour la communication avec les sockets pour ma lecture.

    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
     
    Public function ReceiveCommand($Relais)
    {
    	$Result='';
    	/* Cree une socket TCP/IP. */
     
    	$Result= "Essai de connexion à 128.1.1.100 sur le port 5020 ...";
     
    	$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die ('Création de socket refusée');	
    	socket_connect($socket, "128.1.1.100", 5020) or die ('Connexion impossible');
     
    	$idtransaction =chr(0x00);
    	$idtransaction2 = chr(0x00);
    	$idprotocole = chr(0x00);
    	$idprotocole2 = chr(0x00);
    	$esclave = chr(0x00);
    	$longueur = chr(0x06);
    	$longueur2 = chr(0x01);
    	$fonction = chr(0x01);
    	$adressemot = chr(0x00);
    	$comptemot = chr($Relais);
    	$compteoctet = chr(0x00);
    	$valeur = chr(0x01);
     
    	$req = $idtransaction.$idtransaction2.$idprotocole.$idprotocole2.$esclave.$longueur.$longueur2.$fonction.$adressemot.$comptemot.$compteoctet.$valeur; 
     
    	$write_len=strlen($req);
    	socket_write($socket,$req,$write_len);	
     
    	$str= socket_read($socket, 1024);
     
    	return $str;
    }
    Merci de votre aide

  2. #2
    FoxLeRenard
    Invité(e)
    Par défaut
    Bonjour,
    tu auras peut'étre du mal a trouver réponse ici, moi je connais trés peut la robotisation .

    Simplement je me souviens que l'analyse du trafic avec un genre Ethereal,
    prouvait qu'il se trimballait dans les dialogues PC/Machine des checksum
    Le C devrait s'en débrouiller mais le PHP ???

    Désolé de ne pas t'aider d'avantage

    Autre point, tu es bien OK que ton PHP dialogue entre PC/Machine, pas question de croiser une notion de visiteur externe comme sur un web , je me trompes ?

  3. #3
    FoxLeRenard
    Invité(e)
    Par défaut
    Je te mets a part un truc qui m'étonnes
    dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    socket_write($socket,$req,$write_len);
    tu ne test pas avec "===" le false du retour, tu saurais au moins si
    le socket_write "passe"


    Et bien sur je me disais que si tu faisait ça sur ton micro ????
    tu n'oublies pas que tes drivers et librairies du protocol Modbus
    sont pas les mêmes en C et en PHP

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 351
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 351
    Billets dans le blog
    17
    Par défaut
    Il ne devrait pas y avoir de pb pour les caractères 0x00.
    Comment traites-tu le retour de l'appel à ReceiveCommand( ) ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Par défaut
    Bonjour,

    Ce que je fais, pour le moment, tout ce que je vérifie c'est la string qui m'est retourné, à l'aide du browser de PHP. Car je connais la string qui doit m'être retournée de l'automate.

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 351
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 351
    Billets dans le blog
    17
    Par défaut
    tout ce que je vérifie c'est la string qui m'est retourné
    Comment t'y prends-tu ?

    à l'aide du browser de PHP
    Qu'est-ce que c'est ? Le navigateur web ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de caractère NULL
    Par Tschul dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/03/2007, 14h18
  2. Réponses: 3
    Dernier message: 19/02/2007, 15h07
  3. Suppresion d'un caractère NULL en début de chaine
    Par GingGing dans le forum Delphi
    Réponses: 5
    Dernier message: 10/08/2006, 09h06
  4. Identification d'une chaine de caractère null
    Par jacques70 dans le forum Langage
    Réponses: 9
    Dernier message: 11/05/2006, 17h14
  5. Réponses: 3
    Dernier message: 14/03/2006, 14h43

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