Problème Serial Port RS232 [Résolu]

Clad74 44 Messages postés mercredi 18 avril 2012Date d'inscription 5 avril 2013 Dernière intervention - 5 avril 2013 à 10:00 - Dernière réponse :  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.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Clad74 44 Messages postés mercredi 18 avril 2012Date d'inscription 5 avril 2013 Dernière intervention - 5 avril 2013 à 11:36
3
Merci
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.

Merci Clad74 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de Clad74
Utilisateur anonyme - 6 avril 2013 à 14:05
0
Merci
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
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.