Bonjour à tous,
J'ai un microcontrôleur connecté au port série. Pour l'instant j'arrive à scanner les ports de l'ordi, les placer dans une liste déroulante.
Mon soucis est la gestion d'une mauvaise sélection du port.
- Sélection du port dans la liste déroulante
- bouton "valider" qui envoie un caractère vers le microcontrôleur
- si le bon port est sélectionné, alors le microcontrôleur renvoie un autre caractère, alors une msgbox dit "Tout va bien"
Jusqu'ici c'est bon... En revanche, si c'est un autre port qui est sélectionné mais qui n'est pas connecté au microcontrôleur, comment avoir une msgbox indiquant que ce port n'est pas connecté au microcontrôleur...
J'utilise la class "serialport"...
Liste des ports disponibles
Bouton permettant la validation du port sélectionné
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load CheckForIllegalCrossThreadCalls = False For i As Integer = 0 To My.Computer.Ports.SerialPortNames.Count - 1 ComboBox1.Items.Add(My.Computer.Ports.SerialPortNames(i)) Next BT_SELECT.Enabled = False End Sub
Lecture du port
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub BT_SELECT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_SELECT.Click If Port.IsOpen Then Port.Close() End If Port.PortName = NumPort Port.Open() LBL1.Text = "Port " & NumPort & " sélectionné" Port.Write(Asc("A") & "!%") End Sub
J'ai bien essayé de mettre un test dans le "DataReceivedEvents" mais bien évidemment si le port sélectionné ne correspond pas au port où se trouve le microcontrôleur, aucune donnée arrive sur ce port et donc aucun test ne peut être effectué...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub port_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles Port.DataReceived Dim Test As String Test = CChar(ChrW(Port.ReadByte())) TxtB_TestPort.Text = Test If Test = "T" Then MsgBox("Connexion établie sur le port " & NumPort, 64, "Connexion port " & NumPort) TxtB_TestPort.Text = "" End If End Sub
Là, je suis coincé et ne sais quelle technique utilisée
Merci à vous si vous avez une piste
Lio
Partager