Réception d'info sur Mscomm... HELP!

florian37 Messages postés 56 Date d'inscription dimanche 13 janvier 2002 Statut Membre Dernière intervention 8 décembre 2008 - 23 oct. 2003 à 21:25
florian37 Messages postés 56 Date d'inscription dimanche 13 janvier 2002 Statut Membre Derniè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.

SVP c'est super URGENT qq'un peu m'aider?

Merci d'avance!!!

Florian.

4 réponses

gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
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
0
florian37 Messages postés 56 Date d'inscription dimanche 13 janvier 2002 Statut Membre Derniè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...

Merci,
Florian.
0
gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
24 oct. 2003 à 12:12
OK,
Tu peux me l'envoyer. Je pourrais regarder ce week-end.

Mais pour que tu reçoive un événement lors de la réception de données, il faut setter la propriété suivante à 1.
Votre texte ICI

Cette propriété permet de définir àprès combien de caractères l'événement doit être déclencher.

e-mail:eric.sandron@electrabel.com

A+
0
florian37 Messages postés 56 Date d'inscription dimanche 13 janvier 2002 Statut Membre Derniè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...

Merci,
A+,
Florian.
0
Rejoignez-nous