Problème communication RS232... [Résolu]

botbot1607 - 23 nov. 2012 à 13:54 - Dernière réponse :  botbot1607
- 27 nov. 2012 à 08:56
Bonjour à tous,

Voilà j'ai un équipement connecté en RS232 à mon PC...
Si je lui envoir "G5" puis Cr pour le Carriage return, il doit me renvoyer des infos sur son calibrage...

-> Je fais le test sous HyperTerminal en envoyant "G5" puis entrée, aucun problème, l'équipement me réponds.
-> Je fais le test sur mon programme vb avec le code suivant :

 COMPortLUXMETRE.Write("G5" & vbCr)


Ci dessous une capture d'écran d'un espion de port COM avec commentaires :




Résultat : pas de réponse.. Pourtant, les instruction envoyées sont exactement les mêmes !

Quelqu'un aurait il une idée pour mon problème ?...

Merci !
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Utilisateur anonyme - 26 nov. 2012 à 23:05
3
Merci
C'est curieux, dans le code que tu montres, je ne vois pas où sont lues les données. Un truc du genre COMPortLUXMETRE.Read... ?

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
botbot1607 - 23 nov. 2012 à 14:04
0
Merci
Autant pour moi, l'image n'es pas passée...
Commenter la réponse de botbot1607
NHenry 14203 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 17 juin 2018 Dernière intervention - 23 nov. 2012 à 19:07
0
Merci
Bonjour,

Est-ce que tu refermes le port après ?

Car, je ne vois pas ce qui cloche, mais ton exemple de code est trop court, il faut voir autour.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Commenter la réponse de NHenry
Utilisateur anonyme - 23 nov. 2012 à 20:42
0
Merci
Bonsoir,

En général, on envoi un NewLine en fin d'instruction.

Donc avec import automatique de Microsoft.VisualBasic :
COMPortLUXMETRE.Write("G5" & vbCrLf)


Ou sans l'import automatique de Microsoft.VisualBasic :
COMPortLUXMETRE.Write("G5" & Environment.NewLine)
Commenter la réponse de Utilisateur anonyme
botbot1607 - 24 nov. 2012 à 10:08
0
Merci
Bonjour,

NHenry, enfet j'ai un luxmètre connecté donc en RS232, je lui envoie "G5" et le carrier return, il doit me répondre avec sa date de calibration.

Quand j'envoie G5 + vbCr via mon programme, je n'ai aucune réponse !
Mais, quand j'essaye avec Hyperterminal, j'ai bien la réponse...

Pourtant, dans les 2 cas j'envoie bien en hexa : 47 35 0D (comme on peut le voir sur la capture au dessus, le 1er cas avec l'hyperterminal, le 2nd avec mon appli.)

Je vais poster mon code un peu plus complet.

Banana32, oui j'ai testé également avec vbCrLf, mais du coup il envoie en 0A en plus en hexa, j'ai donc : 47 35 OD 0A... (0D pour le retour chariot, et 0A pour le line feed). Et, pas de réponses...
Commenter la réponse de botbot1607
Utilisateur anonyme - 24 nov. 2012 à 10:35
0
Merci
Montre le code qui lit les données issues de ton dispositif et la façon dont tu les traites.
Commenter la réponse de Utilisateur anonyme
botbot1607 - 26 nov. 2012 à 15:24
0
Merci
Bonjour,

Voici mon code qui traite les données reçues du port COM en question :

 Dim nb_octet As Integer = COMPortLUXMETRE.BytesToRead ' on récupère le nombre d'octet présent dans le tampon
         Dim trame(nb_octet) As Byte ' Tableau acceuillant les données au format byte
        Dim donnee, donnee2 As String


         donnee = System.Text.Encoding.ASCII.GetString(trame) ' on récupère les données au format ASCII
         donnee2 = donnee.Substring(0, donnee.Length - 2)
      
         MsgBox(donnee2)
          Exit Sub


Ce qui m'étonne, c'est que quand j'ouvre le port COM via Hyperterminal et que j'allume et j’éteins l'appareil, je vois qu'il répond "&". Quand j'ouvre le port COM avec vb, il ne répond rien...

Pourtant, les 2 ports ont bien les mêmes paramètres !

Ce qui correspond bien à la doc constructeur de l'appareil.

D'ailleurs, voici la donc constructeur :

Les instruments HD2102.1 et HD2102.2 sont dotés d’interface sérielle RS-232C, isolée galvani-quement; le HD2102.2 aussi d’interface USB 2.0. En dotation avec le HD2102.1 est fournit un câ-ble de branchement sériel avec connecteurs femelle 9 pôles sub D d’un côté et 8 pôles MiniDIN de l’autre; avec le HD2102.2 un câble avec connecteurs USB2.0 d’un côté et 8 pôles MiniDIN de l’autre (code HD2101/USB).
La connexion au moyen de l’USB requiert l’installation préalable d’un driver inséré dans le logiciel de l’instrument. Avant de brancher le câble USB au PC, installer le driver (voir les détails page.23).
Les paramètres de transmission standard de l’instrument sont:
• Baud rate 38400 baud
• Parité Aucune
• N. bit 8
• Stop bit 1
• Protocole Xon / Xoff.
Il est possible de changer la vitesse de transmission des données sérielles RS232C au moyen du pa-ramètre "Baudrate" à l’intérieur du menu (voir page.11). Les valeurs possibles sont: 38400, 19200, 9600, 4800, 2400, 1200. Les autres paramètres de transmission sont fixes.
La connexion USB 2.0 ne requiert le réglage d’aucun paramètre.
Les instruments sont dotés d’un set complet de commandes et demandes de données à envoyer au moyen du PC.
Toutes les commandes transmises à l’instrument doivent avoir la structure suivante:
XYcr où: XY constitue le code de commande et cr le Carriage Return (ASCII 0D)

Commande
Réponse
Description
P0
&
Ping (bloque le clavier de l’instrument pendant 70 secondes)
P1
&
Débloque clavier instrument
S0
123.4
Mesure acquise (24 caractères)
G0
Model HD2102 -2
Modèle de l’instrument
G1
M=Luxmeter
Description modèle
G2
SN=12345678
Numéro de série de l’instrument
G3
Firm.Ver.=01-00
Version firmware
G4
Firm.Date=2004/06/15
Date firmware
G5
cal 0000/00/00 00:00:00
Date et heure de calibrage
G6
Probe=Sicram RAD
Type de sonde reliée à l'entrée
G7
Probe SN=11119999
Numéro de série de la sonde
G8
Probe cal.=2004/01/12
Date de calibrage de la sonde
GB
User ID=0000000000000000
Code utilisateur (se règle avec T2xxxxxxxxxxxxxxxx)
GC
Impression attestation instrument
LN
&1999
Nombre de pages libres mémoire flash
LD
PRINTOUT OF LOG
Impression des données présentes en flash
LE
&
Effacement données mémoire flash
K1
PRINTOUT IMMEDIATE MODE
Impression immédiate des données
K0
Arrêt impression des données

Les caractères de commande sont exclusivement en majuscules, l’instrument répond avec "&" si la commande est correcte et avec un “?” à chaque combinaison de caractères erronnée. Les segments de réponse de l’instrument sont terminés avec l'envoi de la commande CR (carriage return). L’instrument n’envoie pas la commande LF de line feed.
Avant d’envoyer les commandes à l’instrument à travers la sérielle, il est conseillé de bloquer le clavier pour éviter des conflits de fonctionnement: utiliser la commande P0. Une fois terminé, res-taurer l’utilisation du clavier avec la commande P1.

Commenter la réponse de botbot1607
NHenry 14203 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 17 juin 2018 Dernière intervention - 26 nov. 2012 à 21:24
0
Merci
Bonjour,

Dans quel évènement est traitée la réception ?
Comment tu instancies l'objet du port COM ?
Comment configures-tu l'objet du port COM ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Commenter la réponse de NHenry
botbot1607 - 27 nov. 2012 à 08:56
0
Merci
Pfiouuu...

Bien vu banana32, j'ai du copier mon code, en oubliant cette ligne, et je ne l'avais même pas remarquée... !

En ajoutant la lecture suivante :

COMPortLUXMETRE.Read(trame, 0, nb_octet) 'on lit le port


Ça fonctionne impec...

Merci beaucoup pour votre aide !
Commenter la réponse de botbot1607

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.