Difficultés avec le port série (RS232) [Résolu]

- - Dernière réponse :  Utilisateur anonyme - 9 nov. 2011 à 00:56
Bonjour,

j'ai un souci avec un prog vb que j'essai de faire rouler.

J'essai de communiquer avec une balance analytique (Scientech ZSP 350).

Elle fonctionne avec les caractéristiques suivantes (http://www.scalenet.com/pdf/zeta.pdf):


Je suis capable d'obtenir une réponse de la balance facilement à l'aide de l'Hyperterminal.
Je suis également capable d'avoir une réponse à l'aide d'un MSComm et de VB6, cependant:
[list]
[*]Il y a des caractères spéciaux dont je ne suis pas capable de me débarrasser.
[*]J'ai utiliser une des sources ici qui démontrer comment se connecter à un port série. Sa fonctionne, mais les caractères spéciaux s'affichent toujours.
/list

Voici quelques captures d'écran pour vous démontrer:

Config de l'Hyperterminal:




Démonstration de la commande "SEND+VBCr"



Avec le prorg VB retrouvé ici (merci à




Bi0hazard
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
3
Merci
Salut

Comme il s'agit d'une fin de trame, il y a de fortes chance qu'il s'agisse d'un double Chr$(0) qui caractérise souvent les fins de trame.
A toi de nous dire quels sont leurs codes ASCII.
Une fois que tu as récupérer ce genre d'info, énumère tous les codes ASCII du contenu de ta TextBox (?) avec un code simple comme ça :
Dim sTemp As String
Dim r As Long
sTemp = maTextBox.Text
For r = 1 To Len(sTemp)
    Debug.Print "Caractère >"; Mid$(sTemp, r, 1); "<",
    Debug.Print "Code Ascii : "; Asc(Mid$(sTemp, r, 1))
Next r
Tu récupèreras ainsi, dans la fenêtre de débug (Ctrl-G), la liste des caractères et leur code ASCII : Tu n'auras plus qu'à repérer ton "G" et voir ce qui suit.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 135 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
3
Merci
Parfait
Ces caractères sont de banales commandes de retour à la ligne, vbCrLf (13 + 10)

Alors, soit tu les supprimes sans autre procès, soit tu t'en sers pour déterminer que la ligne de donnée est complète, ce qui serait plus judicieux.
Suppression :
maChaine = Replace(maChaine, vbCrLf, vbNullString)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 135 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
0
Merci
Oops, manque la dernière image qui démontre les caractères spéciaux:




Bi0hazard
Commenter la réponse de Utilisateur anonyme
Messages postés
14486
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
17 juin 2019
131
0
Merci
Bonjour,

Quel code as-tu utilisé ?
Quel est le code ASCII des caractères concernés ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]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
0
Merci
Merci pour les pistes de solution. Je reviens avec une réaction!


Bi0hazard
Commenter la réponse de Utilisateur anonyme
0
Merci
J'ai réussi à trouver quels étaient mes caractères. En fait, j'aurais pu les deviner mais bon.

Pour répondre à la question de NHenry, j'ai utilisé la source:
http://www.vbfrance.com/codes/SNIFFEUR-RS232_51554.aspx

Donc, lorsque j'obtiens les données à l'aide de mon programme maison, les caractères sont:

*poids* + Chr(32) + Chr(32) + Chr(71)(G) + Chr(13) + Chr(10)

Je dois donc me débarasser des Chr(13) et Chr(10) en fin de ligne si je comprend bien?

De quel façon pourrais-je m'y prendre?

Merci du support,


Bi0hazard
Commenter la réponse de Utilisateur anonyme
0
Merci
Bon je ne vois pas comment éditer mon post précédent...

J'utilise présentement un textbox pour l'input du MSComm1. Par la suite, le texte est recopier dans une listbox.

J'aimerais pouvoir dire à ma textbox:
-Acquérir les données jusqu'à ce que tu rencontre le Chr(13)+Chr(10), car présentement, dès qu'il rencontre un Chr(13) ou Chr(10), il saute de ligne.


Bi0hazard
Commenter la réponse de Utilisateur anonyme
0
Merci
Voici le output. Pour votre information, j'ai demandé à la balance de me donner l'heure + date de la prise de donnée.


Voici les caractère ASCii (tel quel de la fenêtre Débugage):

Code Ascii : 10
Caractère >0< Code Ascii : 48
Caractère >8< Code Ascii : 56
Caractère >:< Code Ascii : 58
Caractère >5< Code Ascii : 53
Caractère >5< Code Ascii : 53
Caractère >:< Code Ascii : 58
Caractère >1< Code Ascii : 49
Caractère >6< Code Ascii : 54
Caractère > < Code Ascii : 32
Caractère > < Code Ascii : 32
Caractère >1< Code Ascii : 49
Caractère >1< Code Ascii : 49
Caractère >/< Code Ascii : 47
Caractère >0< Code Ascii : 48
Caractère >8< Code Ascii : 56
Caractère >/< Code Ascii : 47
Caractère >1< Code Ascii : 49
Caractère >1< Code Ascii : 49
Caractère >
< Code Ascii : 13
Caractère >
< Code Ascii : 10
Caractère > < Code Ascii : 32
Caractère > < Code Ascii : 32
Caractère > < Code Ascii : 32
Caractère >1< Code Ascii : 49
Caractère >.< Code Ascii : 46
Caractère >4< Code Ascii : 52
Caractère >2< Code Ascii : 50
Caractère >7< Code Ascii : 55
51
Caractère >5< Code Ascii : 53




Bi0hazard
Commenter la réponse de Utilisateur anonyme
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
0
Merci
Voir
InStr(1, maChaine, vbCrLf, vbTextCompare)
qui te fournira l'emplacement où se trouve le prmier caractère de ce vbCrLf, ou 0 s'il n'en trouve pas, facile donc de savoir si il y a ou pas cette chaine dans tes données
Commenter la réponse de cs_Jack
0
Merci
Un gros merci! J'ai réussi à remplacer les caractères.


Bi0hazard
Commenter la réponse de Utilisateur anonyme