1 pièce(s) jointe(s)
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:
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 |
Pièce jointe 190542