Problème Serial Port RS232

Résolu
Clad74 Messages postés 44 Date d'inscription mercredi 18 avril 2012 Statut Membre Dernière intervention 5 avril 2013 - 5 avril 2013 à 10:00
 Utilisateur anonyme - 6 avril 2013 à 14:05
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.
A voir également:

2 réponses

Clad74 Messages postés 44 Date d'inscription mercredi 18 avril 2012 Statut Membre Dernière intervention 5 avril 2013
5 avril 2013 à 11:36
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.
3
Utilisateur anonyme
6 avril 2013 à 14:05
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
0
Rejoignez-nous