[Catégorie modifiée .Net -> VB6] Problème d'affichage de données d'un port com

Signaler
Messages postés
5
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
28 avril 2011
-
Messages postés
5
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
28 avril 2011
-
Bonjour,

J'ai une carte avec des interrupteurs communicant avec un port com.
Je veux savoir ce qu'envoie cette carte quand j'appuie sur un des interrupteurs, pour cela je relie la carte à l'ordinateur via un port com et j'ai écrit le code suivant sur vb6 qui est censé lire les données d'un port com:
Private Sub Form_Load()
With MSComm1
.CommPort = 1
.Handshaking = 2
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,N,8,1"
.SThreshold = 1
.PortOpen = True
End With
Text1.Text = ""
End Sub

Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False 'on ferme le port quand l'appli quitte
End Sub

Private Sub MSComm1_OnComm()
Dim InBuff As String

Select Case MSComm1.CommEvent
' On effectue la gestion des erreurs (cf. le modèle ci-dessus)

'liste des erreurs possibles
Case comEventBreak 'On a reçu un signal d’interruption (Break)
Case comEventCDTO ' Timeout de la porteuse
Case comEventCTSTO ' Timeout du signal CTS (Clear To Send)
Case comEventDSRTO ' Timeout du signal de réception
Case comEventFrame ' Erreur de trame
Case comEventOverrun ' Des données ont été perdues
Case comEventRxOver ' Tampon de réception saturé
Case comEventRxParity ' Erreur de parité
Case comEventTxFull ' Tampon d’envoi saturé
Case comEventDCB ' Erreur de réception DCB (jamais vu)

'liste des événements possibles qui sont, eux, normaux
Case comEvCD 'Changement dans la broche CD (porteuse)
Case comEvCTS 'Changement dans broche CTS
Case comEvDSR 'Changement dans broche DSR (réception)
Case comEvRing 'Changement dans broche RING (sonnerie)

Case comEvReceive
tampon = MSComm1.Input
Call Traitement(tampon) 'traitement données

End Select
End Sub

Sub Traitement(tampon As String)
'cette procédure sert à traiter l’information reçue dans le tampon
Text1.SelStart = Len(Text1.Text)
Text1.SelText = tampon 'ici, on affiche le résultat dans un champ de texte
End Sub

A la compilation, j'ai l'erreur: Type d'argument ByRef incompatible, avec tampon dans Call Traitement(tampon) surligné.

Auriez-vous une idée de quoi il s'agit?

Petite précision: j'ai besoin de lire ces données pour pouvoir envoyer les mêmes après avec le clavier de l'ordinateur. J'ai donc besoin de savoir sous quelle forme je les reçois, en gros je veux remplacer les interrupteurs par le clavier.

Merci

8 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

Ça ne ressemble pas à du programme VB.Net, ça, mais plutôt du VB6, non ?
Merci de prêter attention à la catégorie de tes questions.

Câbler des interrupteurs sur un port COM ?
Quelle drôle d'idée. Comment câbles-tu ça ?
Au pire, tu grilles le Chipset du port COM en faisant un court-circuit.
Un port COM génère et reçoit une trame/suite de 0 et de 1 espacés de quelques micro-secondes.
Seule possibilités : câbler tes interrupteurs sur les entrées DSR (Data Set Ready), CTS (Clear To Send) ou (pas sûr) RI (Ring Indicator)
Ces signaux purement logiques peuvent être lus (voir DSRHolding et CTSHolding), mais ils ne déclencheront pas de réception de données. Inutile donc de vouloir capter des infos dans le .Input.

Complément d'infos :
<lien 1>
<lien 2>

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)
[img]http://allproj
Messages postés
5
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
28 avril 2011

Merci pour ta réponse!

En fait j'aurais dû préciser de quel interrupteurs je parlais.
Les voila: http://www.elektor.fr/products/e-blocks/modules/switch-board.12134.lynkx

Mon projet consiste à utiliser ceci: http://www.sourceboost.com/Products/EBlocks/Overview.html en remplaçant les swtichs et l'ecran LCS par le clavier de l'ordinateur et l'écrans de l'ordinateur.
Du coup, j'ai acheté un adaptateur usb série, et je suis entrain d'essayer de voir ce que la maquette envoie à l'écran LCD et ce que les interrupteurs envoient à la maquette.

J'espère que j'ai été clair. Donc tu penses que je m'y prend mal? Comment je devrais faire?
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Ok, c'est plus clair.
Par contre, sans la doc concernant cette platine de switch, difficile de connaitre le protocole de communication utilisé.
Est-il même compatible RS232 ou faut-il un convertisseur RS485 ?

Pour ton histoire d'écran, j'ai pas tout compris.

Mais il faut impérativement les docs pour poursuivre.
Messages postés
5
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
28 avril 2011

voilà celui des switchs: http://www.sourceboost.com/Products/EBlocks/Docs/EB007-30-1.pdf
et celui de la maquette: http://www.sourceboost.com/Products/EBlocks/Docs/EB006-30-5.pdf
et celui de l'écran LCD (et non LCS comme j'avais mis):
http://www.sourceboost.com/Products/EBlocks/Docs/EB005-30-3.pdf

En fait, à cette maquette je relie, ceci: http://www.matrixmultimedia.com/datasheets/EB052-30-1.pdf un lecteur encodeur RFID.

J'ai fait un programme sur Flowcode qui permet d'afficher le contenu d'une carte RFID passée sur le lecteur sur l'écran LCD et qu'on peut coder grâce auw switchs.

Ce que je veux faire donc, c'est faire une appli vb qui me permettra de remplacer les switchs par le clavier de l'ordinateur et l'écran LCD par une Textbox quoi.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Tu aurais pu écrire tes liens comme des liens (icône chaine), j'ai la flemme de faire des copier coller ce soir
Messages postés
5
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
28 avril 2011

switchs
écran
maquette

voilà :)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Oui, bah non (!) : Ne branche surtout pas ces blocks sur ton port série, tu risques de faire sauter l'interface/carte mère.
Ce n'est qu'une platine utilisant un connecteur SubD-9 pour transmettre 8 contacts, mais ça n'a rien à voir avec une liaison série. Ce sont des contacts avec potentiel, rien de plus.
Messages postés
5
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
28 avril 2011

Du coup tu penses que c'est n'est pas du tout possible de faire ce que je veux? parce que quand je branche mon câble com sur la sortie LCD et que j'essaye de voir ce qui se passe avec l'hyperterminal, j'ai un charabia qui se répète à l'infini!