Lecture d'un port serie avec SerialPort
Bonjour,
Je viens vers vous car cela fait 2-3 jours que je me casse la tête à trouver un réponse et une solution à mon soucis.
Je m'explique.
Je fais actuellement un applicatif fonctionnant sur une liaison série RS232.
La configuration du port se fait bien et l'envoie d'info également( A confirmé cf code).
Je me sers d'un shunt sur mon port série reliant le TX au RX.
Dans un premier temps je fais la demande de connexion, puis je fait une demande d par un checkbox et une validation.
Mais hélas je n'arrive pas à avoir le retour.
Un peu d'aide et / ou de correction ( Tout est possible) serai sympas.
Code de connexion :
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
Private Sub ConnexionToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnexionToolStripMenuItem.Click
'Barre de progression
ToolStripProgressBar1.Value = 10
'Chargement des paramétrages du port
Port = My.Settings.Port
Bits_par_secondes = My.Settings.BPS
Bits_de_donnees = My.Settings.BDD
Bits_D_arret = My.Settings.BDA
Paritee = My.Settings.Parite
Ctrl_Flux = My.Settings.Flux
Select Case Ctrl_Flux
Case "Aucun"
Ctrl_Flux = "0"
Case "Xon / Xoff"
Ctrl_Flux = "1"
Case "Matériel"
Ctrl_Flux = "2"
End Select
'Barre de progression
ToolStripProgressBar1.Value = 20
' Create a new SerialPort object with default settings.
_SerialPort1 = New SerialPort()
' Allow the user to set the appropriate properties.
_SerialPort1.PortName = Port
_SerialPort1.BaudRate = Bits_par_secondes
_SerialPort1.Parity = Paritee
_SerialPort1.DataBits = Bits_de_donnees
_SerialPort1.StopBits = Bits_D_arret
_SerialPort1.Handshake = Ctrl_Flux
' Set the read/write timeouts
_SerialPort1.ReadTimeout = 500
_SerialPort1.WriteTimeout = 500
'Barre de progression
ToolStripProgressBar1.Value = 30
'Contrôle du port avant connexion
Try
With SerialPort1
'Ouverture du port
_SerialPort1.Open()
ToolStripProgressBar1.Value = 60
'Affichage de l'etat de connection
ToolStripStatusLabel1.Text = "Connecté"
Connection = "Connecte"
ToolStripProgressBar1.Value = 65
'Affichage de la commande de deconnexion et occultation de la commande connexion
DeconnexionToolStripMenuItem.Visible = True
ConnexionToolStripMenuItem.Visible = False
ToolStripProgressBar1.Value = 70
End With
Catch ex As Exception
MsgBox("Le port : " & Port & " n'est pas disponible", MsgBoxStyle.Critical)
'Affichage de l'etat de connection
ToolStripStatusLabel1.Text = "Déconnecté"
Connection = "Deconnecte"
' Occultationde la commande de deconnexion et Affichage de la commande connexion
ConnexionToolStripMenuItem.Visible = True
DeconnexionToolStripMenuItem.Visible = False
End Try
'Définition de la date de la réalisation de la modification
Dim Calendar As String
Calendar = My.Computer.Clock.LocalTime.ToString("dd/MM/yyyy")
'Sauvegarde de l'historique
Dim sw As StreamWriter = New StreamWriter("Historique \" & "Historique.txt", True, System.Text.Encoding.Default)
'met le contenu dans le fichier
sw.Write(Calendar & " > " & Connection & " au port : " & Port & vbCrLf)
'Ferme le fichier
sw.Close()
ToolStripProgressBar1.Value = 85
' Affichage de la modification
Dim sw1 As StreamReader = New IO.StreamReader("Historique \" & "Historique.txt")
RichTextBox1.Text = sw1.ReadToEnd()
'Ferme le fichier
sw1.Close()
'Barre de progression
ToolStripProgressBar1.Value = 100
'Barre de progression
ToolStripProgressBar1.Value = 0
End Sub |
Code d’émission et de récupération
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
|
Public Delegate Sub _Affiche_ASCII(ByVal donnee As String)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Implantation de la valeur
Emis = "A" & Emission.Text
Console.Write(Emis)
' Lecture de la valeur émisse.
Dim nb_octet As Integer = SerialPort1.BytesToRead ' on récupère le nombre d'octet présent dans le tampon
Dim trame(nb_octet - 1) As Byte ' Tableau acceuillant les données au format byte
SerialPort1.Read(trame, 0, 0) 'on lit le port
Dim donnee As String = System.Text.Encoding.ASCII.GetString(trame) ' on récupère les données au format ASCII
' Label6.Text = Console.ReadLine
'Définition de la date de la réalisation de la modification
Dim Calendar As String
Calendar = My.Computer.Clock.LocalTime.ToString("dd/MM/yyyy")
'Sauvegarde de l'historique
Dim sw As StreamWriter = New StreamWriter("Historique \" & "Historique.txt", True, System.Text.Encoding.Default)
'met le contenu dans le fichier
sw.Write(Calendar & " > Emission de : " & Emis & " dB " & vbCrLf)
'Ferme le fichier
sw.Close()
' Affichage de la modification
Dim sw1 As StreamReader = New IO.StreamReader("Historique \" & "Historique.txt")
RichTextBox1.Text = sw1.ReadToEnd()
'Ferme le fichier
sw1.Close()
End Sub |
Les paramètres suivant sont au début de mon programme :
Imports System.IO
Imports System
Imports System.IO.Ports
Imports System.Threading
Merci d'avance.
Cordialement