Problème Serial Port RS232

Résolu
Signaler
Messages postés
44
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
5 avril 2013
-
 Utilisateur anonyme -
Bonjour,

J'ai un petit problème avec l'utilisation du SerialPort de Vb.net.

Au départ j'utilisais MSCOMM et tout fonctionnait correctement sur mon PC qui est en XP, mais le programme tournera sur un Seven et donc quand je l'ai installer, j'ai eu la mauvaise surprise de voir que le MSCOMM ne fonctionnait pas. J'ai donc trouvé ce "SerialPort", mais je ne passe jamais dans le DataReceived. J'ai fais plusieurs tests, j'ai téléchargé cet exemple. Mais rien n'y fait.

Avez vous une idée?

Merci d'avance.

2 réponses

Messages postés
44
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
5 avril 2013

Problème résolu. Après plusieurs recherches, j'ai comparé un à un les paramètre du MSCOMM32 et du Serial Port et par défaut sur le MS, le DTREnabled est à True et sur le SerialPort il est à False.
Je l'ai donc passé à True et tout marche nickel.

Bonjour,
En VB.NET l’événement est traité sur un autre thread, au lieu de tout ton code avec la lecture d'octets dans le tampon etc, tu peux rediriger l'événement sur une autre sub, exemple:
Si tu fais:
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        ListBox1.Items.Add(SerialPort1.ReadExisting)
    End Sub

Tu auras ce message:
Opération inter-threads non valide : le contrôle 'ListBox1' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.


Il suffit tout simplement de faire:
    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Me.Invoke(New EventHandler(AddressOf Recu))
    End Sub

    Private Sub Recu()
        ListBox1.Items.Add(SerialPort1.ReadExisting)
    End Sub

(Sans toucher au DTR)

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique