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 :

Balance digitale : Envoi et Réception


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 83
    Par défaut Balance digitale : Envoi et Réception
    Bonjour.

    Suite à mes recherches , j'ai essayé tous les cas possibles mais malheureusement je n'ai pas aboutit à une solution.

    J'ai une Mettler Toledo (VIVA 3211) . Connecté à mon port COM1

    D'après la documentation il faut envoyer une trame puis recevoir la trame.

    je ne vais pas écrire tous les codes :

    Ouverture du port
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     hCom = CreateFile(Port,
        GENERIC_READ | GENERIC_WRITE,
        0,
        NULL,
        OPEN_EXISTING,
        0,
        NULL 
        );
    D'après la documentation je dois envoyer les codes suivants : (voir le fichier en pièce jointe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sprintf(Message,"%X",0x02);
    NbOctet = StrLen(Message);
    WriteFile(hCom,Message,NbOctet,&nBytesWrite,NULL);
    Sleep(500);


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      sprintf(Message1,"%X%X%X%X%X%X%X%X",0x40,0x31,0x30,0x30,0x30,0x31,0x0d,0x0a);
    NbOctet = StrLen(Message1);
    WriteFile(hCom,Message1,NbOctet,&nBytesWrite,NULL);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    sprintf(Message2,"%X",0x02);
    NbOctet = StrLen(Message2);
    WriteFile(hCom,Message2,NbOctet,&nBytesWrite,NULL);
    Sleep(500);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sprintf(Message3,"%X%X%X%X",0x31,0x30,0x0d,0xa);
    NbOctet = StrLen(Message3);
    WriteFile(hCom,Message3,NbOctet,&nBytesWrite,NULL);

    Sleep(300);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sprintf(Message4,"%X",0x06);
    NbOctet = StrLen(Message4);
    WriteFile(hCom,Message4,NbOctet,&nBytesWrite,NULL);

    Tout d'abord je voulais savoir si ma trame d'envoie est bien correcte ? j'ai "essayé" d'envoyer en hexadécimal. C'est bien comme ça que je dois faire ?


    je vous remercie d'avance
    Images attachées Images attachées  

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello

    Si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sprintf(Message1,"%X%X%X%X%X%X%X%X",0x40,0x31,0x30,0x30,0x30,0x31,0x0d,0x0a);
    NbOctet = StrLen(Message1);
    WriteFile(hCom,Message1,NbOctet,&nBytesWrite,NULL);
    tu envoies la chaîne "4031303030310d0a".

    Par contre, avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sprintf(Message1,"%c%c%c%c%c%c%c%c",0x40,0x31,0x30,0x30,0x30,0x31,0x0d,0x0a);
    NbOctet = StrLen(Message1);
    WriteFile(hCom,Message1,NbOctet,&nBytesWrite,NULL);
    tu envoies "@10001"+ CR+LF, et ça devrait mieux marcher.

    Tu peux même faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AnsiString toto = "@10001\r\n";
    WriteFile(hCom,toto.c_str(),toto.Length(),&nBytesWrite,NULL);
    voire même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AnsiString code = "1001";
    AnsiString toto;
    toto.sprintf("@%s\r\n", code.c_str());
    WriteFile(hCom,toto.c_str(),toto.Length(),&nBytesWrite,NULL);
    Bon courage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 83
    Par défaut
    Merci totoche

    Une chose faite..

    et pour recevoir une trame est-ce bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ReadFile(hCom,&buf,1,&nblu,NULL);
    ?

    Si oui, pourquoi mon c++ reste bloqué sur readfile ?

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    Ça me semble la bonne fonction :


    http://msdn.microsoft.com/en-us/libr...67(VS.85).aspx

    Je regarde ça un peu plus.

    (Désolé de mon manque de connaissance, mais étant donné que je vais avoir à faire un projet similaire, ça m'intéresse)

    ciao

    antoine

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    Je me greffe un peu ici à votre problème afin de m'éduquer un peu...

    Lorsque vous dites Com1, il s'agit physiquement de quel type de connection? Connection du genre des anciennes imprimantes? Il n'y a pas de relation entre Com et la prise physique, c'est-à-dire que c'est gèrer par l'ordi, il associe COM1 à ce qu'il voudra bien (à condition que l'on soit au courant que tel connection sur l'ordinateur correspond au COM1, tel autre au COM2, etc.)?

    J'avoue que j'ai l'air stupid. Avant de commencer à lire :

    http://cpp.developpez.com/faq/bcb/?page=systemeports

    Je croyais que le COM1 (ainsi que le 2 et le 3) étaient de type "connection vienne imprimante", mais je me suis posé la question : mais quelle est la différence entre le port Série et le port parallèle (je sais que série communique en série et parallèle...) d'un point de vue physique de la prise.

    merci,

    antoine

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut
    Les prises de type COM sont des prises de type DB9. Les modems interne utilise des ports COM.
    C'est une liaison RS232 (une ligne de réception et une ligne d'envoie et qu'elle ligne d'état) avec un voltage +12V ou -12V (donc une différence de 24V entre un 1 et un 0). Ce qui permet d'avoir des câbles de liaison assez long. Les données sont envoyé en série.

    Port imprimante, c'est le port parallèle (DB25) fournissant 1 fils par bit en 0/5V.
    La puissance disponible est moindre et la longuer du câble est limité (5m il me semble). Il faudrait vérifier ces infos sur le DB25, j'utilise toujours le RS232. Le RS232 est très utilisé sur les périphériques réseau à des voltage moindre (0/5v ou 0/3v).

    Le numéro du port COM est généralement configurable dans le gestionnaire de périphérique de windows. La plupart des drivers permettent de changer le N° du port COM.

    Pour le gérer, vous avez un composant tout fait qui s'appel COMPORT.

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

Discussions similaires

  1. [Audio] Envoi et réception de flux audio avec Java Sound
    Par djanat22 dans le forum Multimédia
    Réponses: 3
    Dernier message: 24/01/2014, 10h38
  2. Envoi et réception de mails avec le framework 2.0
    Par abdallah2007 dans le forum ASP.NET
    Réponses: 13
    Dernier message: 26/06/2008, 17h35
  3. Envoi et réception de données : Communication Temps Réel
    Par mehdi_862000 dans le forum VC++ .NET
    Réponses: 8
    Dernier message: 26/05/2008, 14h14
  4. tutoriel de l'envoi et réception des emails
    Par ouadie99 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 01/12/2006, 23h48
  5. Réponses: 8
    Dernier message: 20/03/2006, 14h01

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