cs_Sof31
Messages postés2Date d'inscriptionjeudi 21 décembre 2000StatutMembreDernière intervention24 octobre 2008
-
24 oct. 2008 à 10:32
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 7 août 2020
-
26 nov. 2008 à 17:00
Bonjour,
Je suis débutante en VB et j'utilise le control Serial port avec l'évènement DataReceived.
Lorsque l'évènement data_received arrive, je veux faire un traitement des données uniquement suivant la valeur d'une case à cocher.
Seulement voilà cette case à cocher est toujours à faux et ce quelque soit sa vraie valeur.
J'ai compris qu'il y avait un problème de thread mais par contre, je ne sais pas comment le résoudre.
Pouvez vous m'aider ?
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 7 août 2020 24 oct. 2008 à 10:50
Bonjour,
Renseigne toi sur les délégués.
Je te conseil de faire une fonction qui te renvoi la valeur de ta CB et de l'appeler dans ton traitement via un délégué.
cs_Sof31
Messages postés2Date d'inscriptionjeudi 21 décembre 2000StatutMembreDernière intervention24 octobre 2008 24 oct. 2008 à 16:00
Bonjour,
Merci pour cette réponse rapide.
J'ai essayé la solution proposée en faisant ça :
Public Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim My_Reception_Status As Get_Reception_Status_Delegate = AddressOf Get_Reception_Status
If My_Reception_Status.Invoke = True Then
My_Received_Frames_treatment.Invoke()
End If
End Sub
Private Function Get_Reception_Status() As Boolean
return radiobutton_reception_status.checked
End Function
Delegate Function Get_Reception_Status_Delegate() As Boolean
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 7 août 2020 26 nov. 2008 à 17:00
Bonjour,
Désolé de ne pas avoir répondu a ton problème mais je n'étais pas repasser par ici depuis un moment.
Je ne sais pas si tu as réussi à résoudre ton problème mais voici une possibilité si ce n'est pas le cas:
Private Delegate Function Get_Reception_Status_Delegate() As Boolean
Public Sub SerialPort1_DataReceived(ByVal sender As System.Object,
ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles
SerialPort1.DataReceived
Dim isChecked as boolean = false
If me.InvokeRequired Then
isChecked = me.invoke(new Get_Reception_Status_Delegate(addressOf Get_Reception_Status))
End If
End Sub
Private Function Get_Reception_Status() As Boolean