Probleme d'un serial communication

Karim_94 Messages postés 10 Date d'inscription mercredi 20 avril 2022 Statut Membre Dernière intervention 1 mai 2022 - Modifié le 21 avril 2022 à 18:01
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 - 22 avril 2022 à 14:20
slt a touts mois je peux faire un serial communication entre deux dispositif.
dans la phase de envoyer les donnes le textBox s'affiche mais dans le cas de récus les donnes il affiche un erreur

Public Class Form1
    Dim dataout As String
    Dim dataIN As String
    Private Delegate Sub accésdelégue(ByVal ajoutertext As String)

    Private Sub Acceesformprincipal(ByVal textoform As String)
        dataout = textoform
        '-----------------------------------------------
        '-----------------------------------------------
        TxtDonnesRecus.Text = dataout
        '-----------------------------------------------
        '-----------------------------------------------
    End Sub
    Private Sub Interruptionaccesport(ByVal bufferin As String)
        Dim textinterompre As Object = {(bufferin)}
        Dim delegueinterrption As accésdelégue
        delegueinterrption = New accésdelégue(AddressOf Acceesformprincipal)
        MyBase.Invoke(delegueinterrption, textinterompre)
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        dataout = ""
        dataIN = ""
        BtnConnecter.Enabled = False
        Btnenvoyerdonnes.Enabled = False
    End Sub

    Private Sub BtnChercherPort_Click(sender As Object, e As EventArgs) Handles BtnChercherPort.Click
        CBoxPort.Items.Clear()
        For Each PortDisponible As String In My.Computer.Ports.SerialPortNames
            CBoxPort.Items.Add(PortDisponible)
        Next
        If CBoxPort.Items.Count > 0 Then
            CBoxPort.Text = CBoxPort.Items(0)
            MessageBox.Show("selectioner le port de travail")
            BtnConnecter.Enabled = True
        Else
            MessageBox.Show("non port trouvé")
            BtnConnecter.Enabled = True
            Btnenvoyerdonnes.Enabled = True
            CBoxPort.Items.Clear()
        End If
    End Sub 

2 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
21 avril 2022 à 20:12
Sans regarder plus loin, le message est clair, tu cherche à faire entrer une variable d'un type dans un autre type incompatible (String[]->String).

Ensuite, pour des questions de lecture, on évite de mettre des accents et autres caractères spéciaux dans les noms des éléments de code (classe, variable, controles, ...), de préférence, on reste sur du : a-zA-Z0-9 et _ (note 0-9 ne peut être utilisé en premier catactère)
1
Karim_94 Messages postés 10 Date d'inscription mercredi 20 avril 2022 Statut Membre Dernière intervention 1 mai 2022
Modifié le 21 avril 2022 à 20:28
Ok je fais le changer
mais comment je résoudre se problème quel est la code qui je varier
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
22 avril 2022 à 08:18
Bonjour

Sans regarder plus loin, le message est clair, tu cherche à faire entrer une variable d'un type dans un autre type incompatible (String[]->String).

Certes, mais la raison est un peu moins claire.

Hier, je ne devais pas avoir les yeux en face des trous, y’a bien le bon code posté, au milieu de tout le reste.
     Private Sub Interruptionaccesport(ByVal bufferin As String)
        Dim textinterompre As Object = {(bufferin)}
        Dim delegueinterrption As accésdelégue
        delegueinterrption = New accésdelégue(AddressOf Acceesformprincipal)
        MyBase.Invoke(delegueinterrption, textinterompre)
    End Sub


On voit que delegueinterrption est de type accésdelégue, et que textinterompre est de type objet, ce n’est donc pas directement un tableau de string.
Mais textinterompre est défini comme suit
     Dim textinterompre As Object = {(bufferin)} 
c’est donc un objet qui contient un tableau de string.

Bref, la variable textinterompre ne sert à rien, il faut utiliser bufferin dans l’appel à l’invoke de MyBase.


Cela dit, en configurant correctement Visual Studio, ce code ne compilerait pas et ça t’alerterait dès l’écriture qu’il y a une incohérence.
Pour éviter que cela se reproduise à l’exécution, va dans les propriétés du projet et mets « Option Strict » et « Option Explicit » sur « On »
1
Karim_94 Messages postés 10 Date d'inscription mercredi 20 avril 2022 Statut Membre Dernière intervention 1 mai 2022 > Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024
Modifié le 22 avril 2022 à 11:27
Merci c'est bien il démarre les données récus sont affichés merci mon ami
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656 > Karim_94 Messages postés 10 Date d'inscription mercredi 20 avril 2022 Statut Membre Dernière intervention 1 mai 2022
22 avril 2022 à 14:20
De rien

Pense à marquer le sujet résolu
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
21 avril 2022 à 18:04
Bonjour

Tout d’abord j’ai édité ton message pour insérer les balises de codes, merci de lire et d’appliquer ce qui est expliqué là pour te prochains posts https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Poster un code, c’est super
Mettre une capture d’écran de l’erreur aussi.
Cependant ce qui serait bien, c’est de donner le contenu des variables quand ça plante et aussi de poster le code qui correspond à la capture.
0
Rejoignez-nous