Serial port &

cs_Sof31 Messages postés 2 Date d'inscription jeudi 21 décembre 2000 Statut Membre Dernière intervention 24 octobre 2008 - 24 oct. 2008 à 10:32
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Derniè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 ?

Merci,

Sof.

3 réponses

lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Derniè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é.

Bonne Prog
0
cs_Sof31 Messages postés 2 Date d'inscription jeudi 21 décembre 2000 Statut Membre Dernière intervention 24 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

Et ca ne marche pas ...
Où est mon erreur ??

Merci,

Sof.
0
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Derniè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

        return radiobutton_reception_status.checked

    End Function

   
Bonne Prog
0
Rejoignez-nous