jerome57440
Messages postés40Date d'inscriptionlundi 3 mars 2008StatutMembreDernière intervention 8 juillet 2008
-
4 mars 2008 à 14:29
jerome57440
Messages postés40Date d'inscriptionlundi 3 mars 2008StatutMembreDernière intervention 8 juillet 2008
-
4 mars 2008 à 15:41
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
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 4 mars 2008 à 14:40
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
FRatvks
Messages postés52Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention 2 octobre 2009 4 mars 2008 à 15:08
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