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++ Discussion :

Envoi caractère 0x00 pour Protocole MODBUS/TCP


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Envoi caractère 0x00 pour Protocole MODBUS/TCP
    Bonjour à tous,

    Je dois utiliser le protocole MODBUS/TCP pour faire l'acquisition de températures à partir d'un module connecter sur réseau.

    J'utilise un Client réseau Builder qui fonctionne très bien en général, mais lorsque je souhaite envoyer le cacartère 0x00 très utilisé dans le protocole MODBUS/TCP, aucun caratère n'est envoyé :

    Sendbuf( '0x00' , 1 )

    Même si le nombre de caractère envoyé retourné est égal à 1 dans le cas ci-dessus.

    Quelqu'un a t'il une solution ?
    Quelqu'un a t'il déjà renciontré le problème ?

    Merci d'avance...

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Heu... Normalement, tu es censé demander une lecture de ta table Modbus, et récupérer la valeur en retour. C'est en général fait par une librairie Modbus à part entière, que tu es censée utiliser "telle quelle".

    Par rapport à la variante Modbus/TCP, il te faut passer par des fonctions d'envoi/réception BINAIRES sur sockets TCP/IP. En effet, les fonctions manipulant les chaînes de caractères sont inadaptées, car elle s'arrêtent au premier octet nul rencontré.

    Dans ton cas, tu as deux solutions :
    • Ta fonction d'envoi n'envoie pas réellement, et te "ment" en te disant le contraire.
    • C'est ton système de réception qui ne considère pas la trame comme valide (très probable si c'est un HyperTerminal, par exemple...).

    Pour déterminer lequel des deux est fautif, tente d'envoyer une trame de, mettons, 50 octets nuls sur le réseau, et sniffe-le avec Wireshark :
    • Si ta trame est bien émise, c'est ton système de réception qui délire.
    • Si ta trame ne contient qu'un seul octet nul, c'est qu'elle est en mode "texte".
    • Si tu ne vois pas ta trame, c'est ton système d'émission qui ne marche pas correctement, il faudrait voir s'il n'y a pas quelque part une fonction d'émission binaire et/ou une fonction de configuration pour le faire passer en mode binaire.


    A voir pour la suite en fonction de tes tests...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    En effet, ma fonction d'envoi n'envoie pas réellement les caratères et me "ment" en te disant le contraire.

    Je le sais, car on a pu tester les communications avec une application écrite en VISUAL C++.

    J'utilise la méthode SendBuf( ), je pense en effet qu'il faut utiliser une méthode binaire, mais qu'elle( s ) sont elles ???

    Merci d'avance pour l'aide...

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Alors là, je n'en sais absolument rien... Il faudrait voir dans l'aide de ton client Builder, ou passer par les Winsocks "normales" (il existe des librairies simplifiant la gestion des sockets si besoin).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Protocole MODBUS TCP/IP
    Par probo dans le forum Web & réseau
    Réponses: 12
    Dernier message: 25/01/2019, 09h11
  2. Aide pour développer Serveur OPC Modbus TCP/IP ?
    Par bfespi69 dans le forum C++
    Réponses: 1
    Dernier message: 06/01/2011, 08h57
  3. [AJAX] Caractères accentué pour envoi de mail
    Par julieng31 dans le forum AJAX
    Réponses: 3
    Dernier message: 04/02/2010, 00h32
  4. [MySQL] Caractères accentués pour l'envoi d'e-mails
    Par tvertain dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/11/2009, 23h22
  5. Aide pour la prise en main du Protocole MODBUS/JBUS
    Par homeostasie dans le forum MFC
    Réponses: 24
    Dernier message: 20/05/2006, 15h56

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