trimarco232:
Bonjour,
peux-tu donner le programme en VS C++ ?
oui bien-sur le voilà :
Imports System
Imports System.IO.Ports
Public Class Form1
Dim comPORT As String
Dim receivedData As String = ""
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GroupBox1.Enabled = False
Timer1.Enabled = False
comPORT = ""
For Each sp As String In My.Computer.Ports.SerialPortNames
comPort_ComboBox.Items.Add(sp)
Next
End Sub
Private Sub comPort_ComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comPort_ComboBox.SelectedIndexChanged
If (comPort_ComboBox.SelectedItem <> "") Then
comPORT = comPort_ComboBox.SelectedItem
End If
End Sub
Private Sub connect_BTN_Click(sender As Object, e As EventArgs) Handles connect_BTN.Click
If (connect_BTN.Text = "Connection") Then
If (comPORT <> "") Then
SerialPort1.Close()
SerialPort1.PortName = comPORT
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.Parity = Parity.None
SerialPort1.StopBits = StopBits.One
SerialPort1.Handshake = Handshake.None
SerialPort1.Encoding = System.Text.Encoding.Default 'very important!
SerialPort1.ReadTimeout = 10000
SerialPort1.Open()
connect_BTN.Text = "Déconnecter"
Timer1.Enabled = True
Timer_LBL.Text = "Connecter"
Else
MsgBox("Select a COM port first")
End If
Else
SerialPort1.Close()
connect_BTN.Text = "Connection"
Timer1.Enabled = False
Timer_LBL.Text = "Déconnecter"
End If
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
receivedData = ReceiveSerialData()
RichTextBox1.Text &= receivedData
End Sub
Function ReceiveSerialData() As String
Dim Incoming As String
Try
Incoming = SerialPort1.ReadExisting()
If Incoming Is Nothing Then
Return "nothing" & vbCrLf
Else
Return Incoming
End If
Catch ex As TimeoutException
Return "Error: Serial Port read timed out."
End Try
End Function
Private Sub clear_BTN_Click(sender As Object, e As EventArgs) Handles clear_BTN.Click
RichTextBox1.Text = ""
End Sub
Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
Label3.Text = TrackBar1.Value.ToString()
SerialPort1.Write("R" + Label3.Text + ",")
End Sub
Private Sub TrackBar2_Scroll(sender As Object, e As EventArgs) Handles TrackBar2.Scroll
Label4.Text = TrackBar2.Value.ToString()
SerialPort1.Write("S" + Label4.Text + ",")
End Sub
Private Sub TrackBar3_Scroll(sender As Object, e As EventArgs) Handles TrackBar3.Scroll
Label6.Text = TrackBar3.Value.ToString()
SerialPort1.Write("A" + Label6.Text + ",")
End Sub
Private Sub TrackBar4_Scroll(sender As Object, e As EventArgs) Handles TrackBar4.Scroll
Dim Valeur As String = (TrackBar4.Value.ToString() + TextBox1.Text)
Dim Valeur2 As String = (TrackBar4.Value.ToString() + TextBox2.Text)
Dim Valeur3 As String = (TrackBar4.Value.ToString() + TextBox3.Text)
SerialPort1.Write("R" + Valeur + ",")
SerialPort1.Write("S" + Valeur2 + ",")
SerialPort1.Write("A" + Valeur3 + ",")
End Sub
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked = True Then
GroupBox1.Enabled = True
Else
GroupBox1.Enabled = False
End If
End Sub
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If Button1.Enabled = True Then
SerialPort1.Write("Z")
End If
End Sub
End Class
J-M-L:
Je vois que vous avez viré l'idée du marqueur de fin
puisque la seconde ligne est en commentairec'est très lent sans doute parce que
Serial.parseInt
attend le début du message suivant (qui commence par une lettre) avant de continuer ou un timeOut de l'ordre de la seconde par défaut...c'est pour cela qu'il vaut mieux virer cette commande et gérer la communication "à la main" vous même
J'ai fais une erreur ce n'était pas souhaité ou un oublie, mais du coup je le retire ?