Go Down

Topic: Envoie String de 50 caractères entre VB.NET et Arduino (Read 4951 times) previous topic - next topic

pierrotm777


pierrotm777

J'ai essayé les lignes qui suivent sans succès ...

Code: [Select]
    Private Sub ButtonSauvegardeConfig_Click(sender As System.Object, e As System.EventArgs) Handles ButtonSauvegardeConfig.Click
        Try
            'format envoyé : 1656|1653|1385|1385|2|2073|1389|1225|2073|1|0|0|1|3
            Dim MessageToSend As String
            MessageToSend = textCentreServo1.Text & "|"     'centerposServo1
            MessageToSend &= textCentreServo2.Text & "|"    'centerposServo2
            MessageToSend &= textIdleServo1.Text & "|"      'idelposServos1
            MessageToSend &= textIdleServo2.Text & "|"      'idelposServos2
            MessageToSend &= textTempsReponse.Text & "|"    'responseTime
            MessageToSend &= textMaxiMoteurs.Text & "|"     'fullThrottle
            MessageToSend &= textDebutSynchro.Text & "|"    'beginSynchro
            MessageToSend &= textMiniGenerale.Text & "|"    'minimumPulse_US
            MessageToSend &= textMaxiGenerale.Text & "|"    'maximumPulse_US
            MessageToSend &= textAuxiliaireMode.Text & "|"  'auxChannel
            If CheckBoxInversionServo1.Checked = True Then MessageToSend &= "1|" Else MessageToSend &= "0|" 'reverseServo1
            If CheckBoxInversionServo2.Checked = True Then MessageToSend &= "1|" Else MessageToSend &= "0|" 'reverseServo2
            MessageToSend &= textTelemetrieType.Text & "|"  'telemetry
            'MessageToSend &= textAddresseI2C.Text & "|"     'I2C LCD
            MessageToSend &= textNombrePales.Text           'nbPales

            SerialPort1.ReadTimeout = 5000
            SerialPort1.WriteTimeout = 5000

            MsgBox(MessageToSend)
            'MsgBox(Asc("|"))
            ReadSettings = ""
            SerialPort1.Open()
            SerialPort1.Write(MessageToSend.ToString.Trim & vbCr)
            Thread.Sleep(1000)
            ReadSettings = SerialPort1.ReadLine
            Thread.Sleep(500)
            SerialPort1.Close()
            If ReadSettings <> "" Then
                MsgBox(ReadSettings)
            Else
                MsgBox("RIEN")
            End If

            LabelModifications.Text = "Modifications sauvegardées !"
            LabelModifications.ForeColor = Color.Green
        Catch ex As Exception
            MsgBox(ex.Message)
            SerialPort1.Close()
        End Try
    End Sub

B@tto

Pour la troisième fois : STOP AVEC LES OPEN CLOSE :

SerialPort1.Open()
            SerialPort1.Write(MessageToSend.ToString.Trim & vbCr)
            Thread.Sleep(1000)
            ReadSettings = SerialPort1.ReadLine
            Thread.Sleep(500)
            SerialPort1.Close()
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

pierrotm777

Je viens de me rendre compte que j'initialise l'objet SerialPort1 dans ma fenêtre principale mais aussi dans ma seconde form et avec le même nom . Les commandes de la form principale fonctionnent , et pas celles de la form deux ...

Je m'emmêle les pinceaux .

Il faudrait que j'arrive à définir un seul objet serialport pour les deux form !!!


B@tto

bin oui y'a rien a faire, mis à part que dans la form qui n'a pas instancié le port série il faut appelé celui de l'autre form. Par exemple si on a form1 et form2 et form 1 a instancié le porté série, dans form il faudra appelé le port série comme ça :

form1.SerialPort1
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

pierrotm777


XavierMiller

Idéalement, il vaut mieux séparer le tout. A l'époque, on appelait cela "la programmation en couches". Définis une classe "service" instanciée globalement quelque part (dans main), et appelée dans tes forms, qui ne doivent normelement contenir que la gestion de l'affichage, et appeler ces classes service.
Cela te permet de "découpler" l'affichage du code effectif, et te permettre par exemple d'enlever tes forms, pour les remplacer par rien (serveur sans affichage), une gestion en console, ou d'autre affichage (HTML, braille, ...).

Go Up