florian37
Messages postés56Date d'inscriptiondimanche 13 janvier 2002StatutMembreDernière intervention 8 décembre 2008
-
23 oct. 2003 à 21:25
florian37
Messages postés56Date d'inscriptiondimanche 13 janvier 2002StatutMembreDernière intervention 8 décembre 2008
-
24 oct. 2003 à 15:53
Bonjours à tous et à toutes,
voila j'ai un big probleme,
j'utilise le composant mscomm qui est param. sur le COM1 de mon PC,
grace à un timer le scrute le Com1 toute les secondes,
je dois y recevoir des données ASCII.
Mais mon probleme et que des fois j'ai 2 packet de données en moins d'une seconde, donc le premier se trouve perdu... :o(
J'aimerais donc un coup de main pour récupérer mes packet à chaque mouvement du port Com...
j'ai regardé sur le forum et les sources mais j'ai pas trouvé ce que je cherchais...
Mon probleme est que j'ai pas de communication disant d'attendre avant l'envois du deuxieme packet,
donc je dois faire de la réception direct.
Je scrute un appareil qui envois les données via son port imprimante, une fois reçu je décode les données ASCII et je les enregistres dans un fichier texte ainsi qu'une BD Access.
gaa179
Messages postés361Date d'inscriptionmercredi 21 mai 2003StatutMembreDernière intervention12 novembre 20092 24 oct. 2003 à 11:24
Salut,
Pour ne perdre aucune info entrante, la méthode du pooling n'est pas conseillée. Il faut utilise l' Event OnCom de Mscomm. Tu seras avertit de tous changement d'états des signaux RTS, CTS,.., des erreurs et datas qui arrivent.
Pour être prévenu de l'arrivée de byte sur le module, la propriété Thresthold doit être > 0 . Par expérience, je l'ai setter à un et je reconstitue la trame dans une chaîne de caractère.
Voici un example de MSDN:
Private Sub MSComm_OnComm ()
Select Case MSComm1.CommEvent
' Handle each event or error by placing
' code below each case statement
' Errors
Case comEventBreak ' A Break was received.
Case comEventFrame ' Framing Error
Case comEventOverrun ' Data Lost.
Case comEventRxOver ' Receive buffer overflow.
Case comEventRxParity ' Parity Error.
Case comEventTxFull ' Transmit buffer full.
Case comEventDCB ' Unexpected error retrieving DCB]
' Events
Case comEvCD ' Change in the CD line.
Case comEvCTS ' Change in the CTS line.
Case comEvDSR ' Change in the DSR line.
Case comEvRing ' Change in the Ring Indicator.
Case comEvReceive ' Received RThreshold # of
' chars.
Case comEvSend ' There are SThreshold number of
' characters in the transmit
' buffer.
Case comEvEof ' An EOF charater was found in
' the input stream
End Select
End Sub
florian37
Messages postés56Date d'inscriptiondimanche 13 janvier 2002StatutMembreDernière intervention 8 décembre 2008 24 oct. 2003 à 11:54
Bonjour Gaa179,
Merci d'avoir répondu si vite,
En fait dans mon timer j'utilise une routine qui me permet de trier les bon packets des mauvais grace au code ASCII reçu,
j'ai fait des essait avec le Mscomm_Oncom() mais ca ma rien donné de bien... :o/
En fait je ne sais pas dutout m'en servir et je voulais savoir, si je t'envoyais ma routine qui se situe dans mon timer, si tu pouvais l'integrer dans la fontion Mscomm_Oncom() affin de me faire voir comment cella fonctionne?
Merci d'avance si la réponse est oui,
je ne pourrais t'envoyer mon code seulement Lundi car je ne suis pas la ce w-end...
florian37
Messages postés56Date d'inscriptiondimanche 13 janvier 2002StatutMembreDernière intervention 8 décembre 2008 24 oct. 2003 à 15:53
Je ne pourrais t'envoyer le code seulement Lundi dans l'apres-midi,
j'espere que cella ne te dérange pas,
la je ne suis pas sur le même PC, j'y serrais que Lundi...