Bonjour,

Je réalise actuellement un programme permettant de récupérer des codes barres scannés par plusieurs lecteur ceode barre reliés à des ports com.

Pour cela j'utilise MsComm.

Voici les paramètres pour mon programme.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
    With MSComm(nbport)
      .CommPort = rst("NoPortCom")
      .Handshaking = 2
      .RThreshold = 1
      .RTSEnable = True
      .Settings = "9600,n,8,1"
      .SThreshold = 1
      .PortOpen = True
    End With

Et l'utilisation MsComm :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub MSComm_OnComm(Index As Integer)
 
 
  Select Case MSComm(Index).CommEvent
 
    Case comEvReceive
 
        Pause 0.5
 
        tampon = MSComm(Index).Input
 
        Call Traitement(tampon, Index) 'traitement données
    Case comEvSend ' il y a des caractères à envoyer
 
    Case comEvEOF 'on a reçu le caractère EOF
  End Select
 
End Sub

Sachant que dans la fonction traitement je récupère les infos No port comm, l'article scanné, la date et l'heure et j'enregistre dans une base.

Plusieurs lecteurs code barres scanneront ensuite automatiquement des codes barres. Le problème est le suivant. Lorsque je scanne des articles les uns après les autres lentement, il n'y a pas de problème. Par contre si 2 articles sont scannés quasiment en même temps, ce qui pourra arrivé, tout n'est pas enregistré dans la base. Le scannage est trop rapide par rapport à l'enregistrement. J'ai essayé de ne pas enregistrer dans une base mais dans une liste. C'est un peu mieux. Mais il loupe encore des infos. Est ce que quelqu'un aurait une idée géniale pour résoudre mon problème.

Merci d'avance.