IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Recuperer qu'une partie d'une chaine qui arrive sur serial port.(depuis arduino)


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Recuperer qu'une partie d'une chaine qui arrive sur serial port.(depuis arduino)
    Bonjour,

    je dois récupérer une valeur de température qui provient d'un arduino (elle arrive sous la forme 20.62°C). pour ensuite l'afficher dans un simple textbox.
    cette info est transmise depuis l'arduino à chaque seconde.

    le code ci dessous, fonctionne parfaitement, cependant l'info s'affiche dans un textbox multiligne...ligne apres ligne.
    je veux seulement ma temperature sur une seule ligne de textbox.

    le probleme est que lorsque je reduit la textbox a une ligne et que j'enleve l'option multiligne, l'info (la temperature) s'ajoute à la droite de la precedente a chaque seconde...
    je ne parvient pas afficher la température une seule fois. cela créer des décalages dans l'affichage...

    auriez vous une idée à me proposer

    merci de votre aide


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Imports System.IO.Ports
    
    Public Class Form1
    
        Dim WithEvents sp As New SerialPort
        Private Sub GetSerialPortNames()
            For Each sport As String In My.Computer.Ports.SerialPortNames
                cmbPort.Items.Add(sport)
            Next
        End Sub
    
        Sub ShowString(ByVal myString As String)
            txtIn.AppendText(myString)
        End Sub
    
        Delegate Sub myMethodDelegate(ByVal [text] As String)
        Dim myDelegate As New myMethodDelegate(AddressOf ShowString)
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim BaudRates() As String = {"300", "1200", "2400", "4800", "9600", "14400", "19200", "28800", "38400", "57600", "115200"}
            cmbBaud.Items.AddRange(BaudRates)
            cmbBaud.SelectedIndex = 4
            Try
                GetSerialPortNames()
                cmbPort.SelectedIndex = 0
            Catch
                MsgBox("No ports connected.")
            End Try
        End Sub
    
        Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
            Try
                sp.Close()
                btnConnect.Visible = True
                btnDisconnect.Visible = False
                cmbPort.Enabled = True
                cmbBaud.Enabled = True
                Exit Sub
            Catch
                MessageBox.Show("Some kind of problem.")
            End Try
        End Sub
    
        Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
            Try
                sp.BaudRate = cmbBaud.SelectedItem.ToString
                sp.PortName = cmbPort.SelectedItem.ToString
                sp.Open()
                If sp.IsOpen Then
                    btnConnect.Visible = False
                    cmbPort.Enabled = False
                    cmbBaud.Enabled = False
                    btnDisconnect.Visible = True
                End If
            Catch
                sp.Close()
            End Try
        End Sub
    
    
        Private Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles sp.DataReceived, SerialPort1.DataReceived
    
            Dim str As String = sp.ReadExisting()
    
            Invoke(myDelegate, str)
    
    
        End Sub
    
        Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
            If sp.IsOpen() Then
                sp.WriteLine(txtMessage.Text)
                txtMessage.Text = ""
            End If
        End Sub
    
    End Class
    Nom : pbarduino.JPG
Affichages : 784
Taille : 30,5 Ko

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    je dois avoir raté quelque chose dans l'explication ... tu cherches à écraser la valeur affichée à chaque lecture ?

    Genre :
    plutôt que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtIn.AppendText(myString)
    ?
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    oui j'avais essayé mais j'obtiens ce résultats

    Nom : pbarduino.gif
Affichages : 744
Taille : 282,6 Ko

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Oki, le souci semble que tu ne reçois pas la donnée d'un coup.

    Deux possibilités selon la donnée reçue :

    - elle a un format connu et constant :
    \ - > tu concactènes ce que tu reçois dans un buffer et tu l'affiches uniquement quand ça match le format,

    - tu as une données spécifique entre chaque valeur (ex. "\n") :
    \ - >tu concatènes ta donnée dans un buffer et tu l'affiches quand la donnée spécifique apparait.
    Plus je connais de langages, plus j'aime le C.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2013, 15h57
  2. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo