Liaison série avec un pic

Résolu
jcavallo Messages postés 4 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 18 mai 2007 - 10 mai 2007 à 17:19
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 15 juin 2007 à 23:35
Bonjour à tous,

j'ai un petit problème pour récupérer sur une liaison série avec un pic des données qu'il envoie.
J'arrive à enregistrer les 5 premiers octets qui arrive mais pas les suivants alors qu'avec une liaison PC-PC sa marche très bien ???
De plus, le message s'affiche bien à l'écran (en entier) avec la méthode WriteMessage (que se soit de PC à PC ou de Pic à PC).

Voici la partie de code qui fait la réception:

' This subroutine is fired when the timer event is raised. It writes whatever

' is in the Comm Port buffer to the output window.

Private
Sub tmrReadCommPort_Tick(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles tmrReadCommPort.Tick

Try

' As long as there is information, read one byte at a time and

' output it.

While (m_CommPort.Read(1) <> -1)

' Write the output to the screen.WriteMessage(Chr(m_CommPort.InputStream(0)),

False)'chaîne de caractère qui récupère le message sur la liaison série

trame2 &= Chr(m_CommPort.InputStream(0))

End
While

Catch exc
As Exception

' An exception is raised when there is no information to read.

' Don't do anything here, just let the exception go.

End
Try

End
Sub

Je ne comprends pas d'où sa peux venir.
C'est peut être une histoire de thread, mais je  ne suis pas assez bon dans ce domaine pour trouver par moi même (je suis débutant ).
Si vous avez une idée aidé moi, je travaille sur un trojet pour mon école d'ingénieur et ce problème m'empêche de tester le reste du programme. (il me reste peu de temps pour le rendre ).

En vous remerciant par avance.

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mai 2007 à 21:04
Attention, je n'ai pas fait de test, mais connaissant bien les port séries sous VB6, je pense qu'ici c'est pareil.

Lorsque tu lit un caractère dans le buffer, il est automatiquement sorti de celui-ci et tous les caractères restant sont décalés
Donc ici, le caractère que tu vas lire pour trame2, ne sera pas le même que celui pour Writemessage, ça sera le suivant.
Si tu veux que ce soit le même, il te faut le lire qu'une seule fois dans une variable, et ensuite utiliser la variable pour WriteMessage et Trame2

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
jcavallo Messages postés 4 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 18 mai 2007
11 mai 2007 à 13:16
Merci pour votre réponse,

je vais tester et voir si sa marche mieu.
0
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
15 juin 2007 à 23:26
un pti conseil :
apres des essaie de dialogue entre le PC et un Motorolla 68HC(T) je sais plus combien qui integre le port serie on se rend compte d'un truc pas drole (a 9600 Bauds) :
si on utilise la methode qui permet de tout lire d'un coup et qui renvoi un String il passe par un encoding a la *** et on perdais des donnée a cause de ca.
Si on tente de lire 1 seul octet a la fois en boucle infinire via le .ReadByte() on se rend compte que ca rame a mort, cc'est due au fait que CHAQUE lecture que ca soit 1 ou plein d'octet initialise qqchs (coté framework) qui prend qq millisecondes mais qui sur des tranction de plusieur Ko deviennent vraiment ABERENTE, la c'est pour un inclinometre qui numerise en boucle des qu'on cogne la table il fallait 25 sec pour voir le programme affiché le changement ...

je me rappelle plus tres exactement comment ca a été resolu mais evite de lire 1 par , lit par gros paquet d'un coup et gere un buffer de ton coté qui aura un acces largement plus rapide

TeBeCo
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 juin 2007 à 23:35
Les subtilités de la communication série

Tout un métier, des années d'expériences à en voir de toutes les couleurs.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Rejoignez-nous