Pb reception donnee port serie

Signaler
Messages postés
40
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
8 juillet 2008
-
Messages postés
40
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
8 juillet 2008
-
je travaille actuelement sur un projet sur lequelle je dois recuperer des données d'une carte CEPR (qui sert d'interface entre le PC et un lecteur d'etiquette). Le prog sexecute sans erreur mais ne me donne pas de resultat en retour est-ce que quelqu'un aurait une solution a mon pb ca serait plutot sympatique.
Voici le code de mon application:

Private Sub Command1_Click()            'Bouton ouverutre port (lecture)
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
Label6.Visible = True
Label5.Visible = False
Label1.Visible = True
Label2.Visible = False
End If
End Sub


Private Sub Command2_Click()            'Bouton lecture
Do
  DoEvents 'indispensable sinon ça marche pas!!!
  recep$ = recep$ & MSComm1.Input
Loop Until InStr(recep$, Chr(13))
Text1.Text = recep$
End Sub


Private Sub Command3_Click()            'Bouton fermeture port (lecture)
MSComm1.PortOpen = False
If MSComm1.PortOpen = False Then
Label2.Visible = True
Label1.Visible = False
Label6.Visible = False
Label5.Visible = True
End If
End Sub


Private Sub Command4_Click()            'Bouton quitter
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
Unload Me
Else
Unload Me
End If
End Sub


Private Sub Command5_Click()            'Bouton fermeture du port (écriture)
MSComm1.PortOpen = False
If MSComm1.PortOpen = False Then
Label5.Visible = True
Label6.Visible = False
Label2.Visible = True
Label1.Visible = False
End If
End Sub


Private Sub Command6_Click()            'Bouton écriture
envoi = Text2.Text & Text3.Text & Text4.Text & Text5.Text & Text6.Text & Text7.Text & Text8.Text
MSComm1.Output = envoi & Chr(13)
Label8.Visible = True
End Sub


Private Sub Command7_Click()            'Bouton ouverture du port (écriture)
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
Label6.Visible = True
Label5.Visible = False
Label1.Visible = True
Label2.Visible = False


End If
End Sub


Private Sub Form_Load()                 'Chargement de la Form
Dim recep$
Dim envoi As String
MSComm1.CommPort = 1                    'Definition des paramètres de configuration du port série
MSComm1.Settings = "9600,n,8,1"
'MSComm1.SThreshold = 1
'MSComm1.RThreshold = 1
MSComm1.InputLen = 10
End Sub


Private Sub SSTab2_Click(PreviousTab As Integer)
Label8.Visible = False
End Sub




 

3 réponses

Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour

Je ne vois pas quel protocole est utilisé (ou je ne connais pas).

En ce qui concerne ton code, évite les noms par défauts, un controle nommé "CmdQuitter" est plus explicit que "command4"
Label1, Label2, ... Pas terrible, alors que des noms du genre LblID, LblEtat, ... c'est plus clair.

Pourquoi 2 procédure d'ouverture du port ?
Si on appui sur "Command1" puis sur "Command7" le résultat n'est pas garanti ...

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
52
Date d'inscription
mercredi 12 mars 2003
Statut
Membre
Dernière intervention
2 octobre 2009

met ton port com en interuption avec MSComm1.RThreshold = 1 'reactive l'interruption
et attend sagement avec le MSComm1_OnComm

Private Sub MSComm1_OnComm()

'DoEvents
Select Case MSComm1.CommEvent

'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
        Beep
    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 'Chouette! on a reçu des données :)

        Do While MSComm1.InBufferCount 'tant qu'on voit qq chose dans le port
            text1.text = text1.text & MSComm1.Input 'concatene dans le buffer
        Loop
    
   
    Case comEvSend ' il y a des caractères à envoyer
   
    Case comEvEOF 'on a reçu le caractère EOF

End Select

@+

FR
Messages postés
40
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
8 juillet 2008

je ne recois tjr rien