Utilisation des composants com (axcom serialport)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 834 fois - Téléchargée 26 fois

Contenu du snippet

Dans ce code essai de comparaison des 2 composants Com (car tout le monde en parle mais ...
a part nous renvoyer sur la classe IO.ports pas beaucoup de reponses
Bref J'ai une application qui fonctionne Parfaitement a base de l'ancien composant COM 5
Lors d'une action sur le button connection a un appareil, envoi d'une commande T et lecture du buffer.
j'ai volontairement simplifier le code (pas de deco... pas de traitement)

j'essaye d'implementer a la place le nouveau composant serialport ... mais la: impossible de recuperer les données.
la j'aurrai besoin d'un coup de main car je cherche je cherche mais je bloque .. mais ou?

la class Form1 est une application window a laquelle sur le form est ajouté:
2 boutons pour la connexion (1 et 2)
2 textbox recuperant les données (1 et 2)
2 composants Com (l'ancien (1) et serialport (2) )

coment faire pour que 2 = 1 ?

Source / Exemple :


Public Class Form1
    'Sur Form1:
    ' 2 BOUTONS associés a 2 textbox + 2 composants :
    '1 = Ancien COM 5.0
    '2 = SérialPort Dotnet

    'CODE Fonctionnant parfaitement (COM 5.0)
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.AxCOM.CommPort = 1
        Me.AxCOM.Settings = "1200,n,7,2"
        Me.AxCOM.RThreshold = 1
        AddHandler Me.AxCOM.OnComm, AddressOf LectureFIC
        Me.AxCOM.PortOpen = True
        Me.AxCOM.Output = "T" & vbCrLf
    End Sub
    Private Sub LectureFIC(ByVal sender As Object, ByVal e As System.EventArgs)
        Do While Me.AxCOM.InBufferCount > 0
            Me.TextBox1.Text &= CType(Me.AxCOM.Input, String)
        Loop
    End Sub
    'Impossible de recuperer le buffer avec le sérialport
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.SerialPort.PortName = "COM1"
        Me.SerialPort.BaudRate = 1200
        Me.SerialPort.Parity = IO.Ports.Parity.None
        Me.SerialPort.DataBits = 7
        Me.SerialPort.StopBits = IO.Ports.StopBits.Two
        Me.SerialPort.ReceivedBytesThreshold = 1
        AddHandler Me.SerialPort.DataReceived, AddressOf LectureFIC2
        Me.SerialPort.Open()
        Me.SerialPort.Write("T" & vbCrLf)
    End Sub
    Private Sub LectureFIC2(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
        Do While Me.SerialPort.ReadBufferSize > 0
            Me.TextBox2.Text &= CType(Me.SerialPort.ReadChar, String)
        Loop
    End Sub
Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
14 mars 2007

Salut,

Je rencontre exactement le même problème (je suis en train de réécrire plusieurs applics VB6 utilisant l'OCX MSComm) en VB.NET et je me casse la tête pour résoudre ceci :-((

Bon, on va trouver...
Messages postés
18
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
17 septembre 2020

Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button2.Click
With Me.SerialPort
.PortName = "COM1"
.BaudRate = 1200
.Parity = IO.Ports.Parity.None
.DataBits = 7
.StopBits = IO.Ports.StopBits.Two
.Encoding = System.Text.Encoding.ASCII
.RtsEnable = True
.DtrEnable = True
.ReceivedBytesThreshold = 1
AddHandler .DataReceived, AddressOf LectureFIC2
.Open()
.Write("T" & vbCrLf)
End With
End Sub
Private Sub LectureFIC2(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
Do While Me.SerialPort.ReadBufferSize > 0
AQ &= CType(Me.SerialPort.ReadExisting, String)
Loop
End Sub

Pas vraiment trouvé car ca ne fonctionne pas encore parfaitement, car je n'arrive toujours pas a recuperer les données dans le texbox .. donc chargement dans une variable puis envoi dans la texbox manuelement (clic sur un bouton) car meme si j'arrive a intercepter la fin de l'envoie des données je n'arrive pas a faire d'action suite a ca (probleme d'interthread je suppose)

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.