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.
Merci de votre aide
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; }
Partager