Problèmes avec VB.net SerialPort.DataReceived()

luluberlu77 Messages postés 1 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 10 mai 2006 - 10 mai 2006 à 23:01
circular Messages postés 17 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 27 mars 2010 - 17 déc. 2007 à 11:48
salut,



je sais pas trop dans quel thème mettre cette question. J'utilise
VB.net et je voudrais utiliser la fonction DataReceived() du portserie
comme suit :



Private Sub SerialPort1_DataReceived(ByVal sender As
Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles
SerialPort1.DataReceived



Label8.Text = SerialPort1.ReadExisting()



End Sub



Le problème est que dès que un octet arrive sur le port la fonction est
bien executée, mais le programme se bloque et affiche un message
d'erreur en anglais :



Cross-thread operation not valid: Control 'Label8' accessed from a thread other than the thread it was created on.



je crois que c'est un problème de porté de variable alors j'ai testé
des des trucs du genre Form1.Label8.text... et c'est pire. Je sais pas
comment faire fonctionner cette fonction de M....?



Merci pour vos réponses

@+ Lulu

3 réponses

perceval_59 Messages postés 18 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 17 septembre 2020
10 janv. 2007 à 17:39
vieu post mais j'ai le meme probleme
en fait on s'en sort facile en utilisant la commande
control.checkforillegalcrossthreadcalls = false
(J'ai conscience que c pas bien mais bon la seule phase ou j'ai besoin d'un thread est pour la recup de donnée RS232 apres c quasiment de l'evenementiel)

par contre je n'arrive pas a m'en sortir avec les données que j'obtien ..... ca me fige l'appli....

[:p] Perceval
0
basicmen Messages postés 3 Date d'inscription mardi 28 mars 2006 Statut Membre Dernière intervention 12 mai 2006
24 févr. 2007 à 10:39
J'ai un probléme de laison entre vb6 et mysql 
0
circular Messages postés 17 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 27 mars 2010
17 déc. 2007 à 11:48
Il faut utiliser un Delegate pour pouvoir utiliser les contrôles Windows Forms car la lecture se fait avec un autre thread que le thread principal.


Class


Delegate TrucAFaireDelegate(Param)

Sub TrucAFaire(Param)
EndSub

Puis dans l'événement :
Dim Deleg as TrucAFaireDelegate
Deleg = AddressOf TrucAFaire
TextBox1.Invoke(Deleg, new Object () {Param})


 
0
Rejoignez-nous