IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

reception de donnée sur port série


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Points : 2
    Points
    2
    Par défaut reception de donnée sur port série
    Bonjour

    J'aimerais récupéré les données de mon port série com1 et l'afficher dans une textbox voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Class Form1
     
        Dim S As String
     
        Public Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Dim bufferin() As Char = New Char(512) {}
     
     
            S = SerialPort1.Read(bufferin, 0, 512)
     
        End Sub
    mais sa ne marche pas lorsque j'envoie des donnée sur le port rien ne s'affiche , savez vous pourquoi? PS: je suis débutant

    merci

  2. #2
    Membre habitué Avatar de anonymousse
    Profil pro
    Inscrit en
    Février 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 130
    Points : 170
    Points
    170
    Par défaut
    bonjour,

    as-tu vu ce lien, c'est peut-être un début de solution ?

    http://caron.developpez.com/dotnet/port_serie/

    mousse

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Points : 2
    Points
    2
    Par défaut lien
    oui merci je l'ai vu mais j'aimerais comprendre pourquoi mon code ne marche pas

  4. #4
    Membre habitué Avatar de anonymousse
    Profil pro
    Inscrit en
    Février 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 130
    Points : 170
    Points
    170
    Par défaut
    bonjour,

    Est-tu sûr de la quantité d'argument de la propriété Read, je croyais qu'il suffisait de donner la quantité d'octets à lire (.Read(512) par exemple)

  5. #5
    Membre régulier Avatar de Anklor
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 76
    Points : 120
    Points
    120
    Par défaut
    tu as mis tout ton code ??
    si c'est le cas, à aucun moment, tu demandes d'afficher le résultat.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Points : 2
    Points
    2
    Par défaut suite du code
    je ne suis pas sur anonymousse.....

    voila mon code complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Public Class Form1
     
        Dim S As String
     
        Public Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Dim bufferin() As Char = New Char(512) {}
     
     
            S = SerialPort1.Read(bufferin, 0, 512)
     
        End Sub
     
     
     
     
        Public Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
     
     
            TextBox1.Text = S
        End Sub
     
     
    End Class

  7. #7
    Membre habitué Avatar de anonymousse
    Profil pro
    Inscrit en
    Février 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 130
    Points : 170
    Points
    170
    Par défaut
    inspires-toi de ce tutorial :

    http://www.dreamincode.net/forums/to...tion-in-vbnet/

    et en particulier de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub comPort_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
    08	    'determine the mode the user selected (binary/string)
    09	    Select Case CurrentTransmissionType
    10	        Case TransmissionType.Text
    11	            'user chose string
    12	            'read data waiting in the buffer
    13	            Dim msg As String = comPort.ReadExisting()
    14	            'display the data to the user
    15	            _type = MessageType.Incoming
    16	            _msg = msg
    17	            DisplayData(MessageType.Incoming, msg + "" + Environment.NewLine + "")
    18	            Exit Select
    19	        Case TransmissionType.Hex
    20	            'user chose binary
    21	            'retrieve number of bytes in the buffer
    22	            Dim bytes As Integer = comPort.BytesToRead
    23	            'create a byte array to hold the awaiting data
    24	            Dim comBuffer As Byte() = New Byte(bytes - 1) {}
    25	            'read the data and store it
    26	            comPort.Read(comBuffer, 0, bytes)
    27	            'display the data to the user
    28	            _type = MessageType.Incoming
    29	            _msg = ByteToHex(comBuffer) + "" + Environment.NewLine + ""
    30	            DisplayData(MessageType.Incoming, ByteToHex(comBuffer) + "" + Environment.NewLine + "")
    31	            Exit Select
    32	        Case Else
    33	            'read data waiting in the buffer
    34	            Dim str As String = comPort.ReadExisting()
    35	            'display the data to the user
    36	            _type = MessageType.Incoming
    37	            _msg = str + "" + Environment.NewLine + ""
    38	            DisplayData(MessageType.Incoming, str + "" + Environment.NewLine + "")
    39	            Exit Select
    40	    End Select
    41	End Sub

  8. #8
    Membre habitué Avatar de anonymousse
    Profil pro
    Inscrit en
    Février 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 130
    Points : 170
    Points
    170
    Par défaut
    au fait, j'ai oublié :

    UTILISES LES BALISES DE CODE pour ta présentation des données (lis les règles du Forum)

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Points : 2
    Points
    2
    Par défaut vox exemple
    merci de vos réponse, j'ai bien essayer de m'inspirer de vos exemple ,

    mais étant débutant je n'arrive pas a "extraire" la partie qui me fraudais, je pense ne pas être loin du but, je pense qu'il me manque plus qu'a définir la vitesse du port, le nb de bits etc.. puis d'ouvrir mon port.


    merci

  10. #10
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Effectivement,
    si tu n'a pas configuré le port COM, tu ne peut pas écouter les les infos.

    Tu communique avec quoi comme appareil? un automate, une imprimante, ...
    il faut que tu connaisse le protocole de communication, le nombre de bit, la vitesse et le bit de parité.

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Points : 2
    Points
    2
    Par défaut configuration
    je communique avec un micro contrôleur pic 9600baud, 8bits pas de parité 1 bit de stop une config assez standard je pense ...

    comment le configurer et l'ouvrir ? j'ai regarder sur msdn mais ce n'est pas très bien détaillé ....

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    comme le dit hunteshiva il faut bien penser à configurer ton port com

    Petit conseil pratique, crée une petite interface dans le programme qui te permet de changer les paramètres de ton port com. En phase de test, ça te permettra d'éviter de repasser à chaque fois par visual studio pour changer ces paramètres.

    Maintenant (mais c'est tout de même à vérifier) si tu cherches à récupérer une string pas besoin de te compliquer la vie avec des tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s = SerialPort1.ReadLine()
    Typiquement si tu veux t'amuser avec le port série pour chater entre 2 pc.

    Ne pas oublier d'ouvrir le port série et de le fermer en fonction des besoin.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par zzr69 Voir le message
    je communique avec un micro contrôleur pic 9600baud, 8bits pas de parité 1 bit de stop une config assez standard je pense ...

    comment le configurer et l'ouvrir ? j'ai regarder sur msdn mais ce n'est pas très bien détaillé ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SerialPort1.PortName = "COM" + NumericUpDown1.Value.ToString
    SerialPort1.BaudRate = TextBox1.Text
    Par exemple

    ici tu aurais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SerialPort1.PortName = "COM4" 'si ton port série sur le pc est COM4
    SerialPort1.BaudRate = 9600
    le reste est le défaut du port série.

    pour l'ouvrir SerialPort1.Open()
    pour le fermer SerialPort1.Close()

    La doc n'est pas terrible sur msdn mais là, ça s'y trouve quand même il me semble, c'est vraiment les bases sur le port série

  14. #14
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    tu peut faire en ligne de code comme te le montre "jojo1284" qui a gentiment omis de mettre les balises de codes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SerialPort1.PortName = "COM4" 'si ton port série sur le pc est COM4
    SerialPort1.BaudRate = 9600
    ou avec l'interface que t'offre Visual Studio,
    tu a une fenêtre de propriété qui s'affiche en bas à droite *par défaut*


    tu a juste à compléter les éléments suivants:
    • BaudRate
      La vitesse en baud utilisée par ce port
    • DataBits
      Le nombre de bits par octets transmis (ou reçus)
    • Parity
      contrôle de parité
    • StopBits
      Nombre de bits d'arrêt


    ce qui est asse marrant c'est que c'est que ta config est celle par défaut du SérialPort


    PS: histoire d'être propre, je te conseil de nomer tes élement avec un certain standart
    textBox -> txtConnexion, label -> lblConnexion, SerialPort -> spMicroControl, ...

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Points : 2
    Points
    2
    Par défaut essai
    merci à tous pour vos réponse je pense pouvoir m'en sortir maintenant, je vais essayer cela et je vous tiendrais au courant merci encore !

  16. #16
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    N'oublie pas de mettre le tag

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Points : 2
    Points
    2
    Par défaut Impossible de récupéré la variable..
    re bonjour,

    j'ai essayer a nouveau mon code, en suivant vos conseille mais toujours rien j'ai bien ajouter un composant port série a mon projet voici mon code :

    avez vous une idée de pourquoi sa ne marche pas?

    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Public Class Form1
     
        Dim S As String
     
        Public Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
     
            SerialPort1.Open()
     
            S = SerialPort1.ReadLine()
     
        End Sub
     
     
     
     
        Public Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
     
     
            TextBox1.Text = S
        End Sub
     
     
    End Class

  18. #18
    Membre régulier Avatar de Anklor
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 76
    Points : 120
    Points
    120
    Par défaut
    salut, déjà ta procédure Textchange ne sert à rien. Ensuite, il faut ouvrir ton port COM soit par un chargement, soit sur l'évenement d'un bouton (si tu veux pouvoir mettre des options de BaudsRate, selection port, etc)
    De +, il faut utiliser un AppendText, sinon tu vas voir qu'un seul caractère dans ton textbox.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
         SerialPort1.Open()
     
    End Sub
     
    Public Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
     
        TextBox1.Appendtext = SerialPort1.ReadLine()
     
    End Sub
    si tu vois rien dans ton textbox, c'est que la configuration de ton Port Com n'est pas bonne

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Points : 2
    Points
    2
    Par défaut essaie du code
    merci de ta réponse je viens d'essayer par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.AppendText = SerialPort1.ReadLine()
    est souligné et il est indiqué argument non spécifié pour le paramètre text de public sub appendText je dois rajouter autre chose?

    merci

  20. #20
    Membre régulier Avatar de Anklor
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 76
    Points : 120
    Points
    120
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Appendtext(SerialPort1.ReadLine())

Discussions similaires

  1. [Débutant] simplfier ma reception de donné sur le port série
    Par gastoncs dans le forum VB.NET
    Réponses: 0
    Dernier message: 13/01/2012, 23h44
  2. [VB6]Réception de données sur port série
    Par lindecker dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/03/2006, 06h48
  3. Recevoir "NULL" sur port série
    Par WinY57 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 04/03/2005, 11h37
  4. Etat de CTS sur port série
    Par Juste_Une_IlluZion dans le forum C++Builder
    Réponses: 9
    Dernier message: 12/09/2004, 10h46
  5. [Débutant] Réception sur port série
    Par Tophe59 dans le forum Langage
    Réponses: 43
    Dernier message: 28/06/2004, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo