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 :

aide sur communication sur port serie


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 102
    Points : 56
    Points
    56
    Par défaut aide sur communication sur port serie
    Bonjour à tous,

    j'ai commence le VB.net il y a peu de temps et on vient de me demander décrire un programme en VB.net qui communique avec le port serie.

    Nous avons un lecteur de code à barre brancher au port série de l'ordinateur car nous voulons faire des échanges de messages et ces échanges ne fonctionnent seulement avec le port série.

    A chaque code barre lu nous voulons qu'un message apparaisse a l'écran du lecteur de code à barre nous disant par exemple :"OK"ou"erreur".

    En gros c'est pour vérifier si on a pris le bon produit avec les bonnes quantités donc nous avons deja un logiciel où sont référencé tout nos code barre avec les infos produit.
    Ce que je dois faire c'est un programme qui écrire dans un fichier texte l'information chargé par la lecture du code barre (en gros le code article) et de l'envoyé dans un répertoire précis.

    Notre logiciel de gestion va ensuite comparé le code article du fichier créé avec celui qu'il a en mémoire puis notre logiciel va écrire un fichier texte que je dois mettre dans une mémoire tampon. ensuite mon programme devra envoyé les infos de la mémoire tampon dans le port série pour que le message soit affiché à l'écran du lecteur.

    Le soucis c'est que ne sais pas par quoi et ou commencé car je ne pas trop les commandes de communication avec le port série, je cherche sur internet mais j'ai du mal a trouver mon bonheur si vous pouvez m'aider ca serait très gentil.

    Je vous remerci d'avance.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    rien compris du tout ...


    ou alors si tu souhaites afficher quelque chose sur ton lecteur de code barre depuis ton programme, il faut que le lecteur puisse le faire et ca doit etre dans la doc du lecteur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 102
    Points : 56
    Points
    56
    Par défaut
    j'ai un peu modifié mon texte pour qu'il soit un peu plus compréhensible s'il y a encore des soucis demander un peu plus d'information c'est vrai que par écrit ce n'est pas simple d'expliquer.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tout matériel type lecteur de code barre qui communique par un port série possède un protocole de dialogue choisi arbitrairement par le constructeur
    il faut donc obligatoirement avoir la doc constructeur qui contient la liste des commandes et leur effet
    ensuite c'est pas très compliqué à coder pour envoyer ses commandes sur le port série
    il est quasi impossible de trouver les commandes sans la doc
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 159
    Points
    159
    Par défaut
    J'ai une applie qui communique via le port Série avec une balance industrielle.
    Il faut utiliser le composant "SerialPort"
    Ensuite trouver dans la doc de ton lecteur de code barre les paramètres de communication, les principaux sont :

    - Vitesse de com en Bauds
    - Longueur standard des bits de données
    - Présence de bit de parité
    - Nombre de bits d'arrêt par octet.

    Une fois que tu as ça tu peux recevoir des données du matériel en gérant l'événement "DataReceived" (attention cet événement n'est pas levé dans le thread principal mais dans un thread secondaire donc attention aux "Cross thread exception")

    Tu peux lui envoyer les commandes via la méthode Write.
    Les commandes sont des chaînes, elles sont propres au materiel, tu dois les trouver dans ta doc.

    Pour SerialPort tout est dans MDSN.
    C'est sur que si tu n'as pas la doc de ton lecteur c'est quasi impossible.

    Bonne Prog et Bonne Année

  6. #6
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 102
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Oui j'ai la donc mon lecteur pour pouvoir envoyé des mesages dans son language, en faite ce que j'ai besoin c'est les commandes a utilisé dans vb.net qui me manque en cherchant sur internet, j'a trouvé 2 facons de faire : 1 - avec la classe RS232.vb (mais j'ai du mal a l'utilisé)
    2 - avec MSCOMM32.ocx que j'ai pas encore testé

    Si vous connaissez le meilleur moyen je suis preneur


    Merci d'avance

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 159
    Points
    159
    Par défaut
    Utilise le composant SerialPort
    Espace de noms: System.IO.Ports
    Assembly : System (dans system.dll)

    RS232.vb je ne connais pas et MSCOMM32.ocx est un ocx VB6.

    T'as regardé ce que SerialPort peut faire pour toi ?
    SerialPort est présent nativement dans le FrameWork ce serait dommage de se conpliquer la vie avec autre chose.

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    <parenthèse>
    RS232.vb existe parce que sous visual studio 2003 (framework 1.1) la classe serialport n'existait pas
    ce fichier était un "wrapper" qui faisait de l'appel d'api pour communiquer avec le port série

    depuis vs2005 (fx2) la classe serialport a été ajoutée, et elle doit fortement ressembler à rs232.vb
    </parenthèse>


    fait une recherche sur le forum tu trouveras des exemples
    et on est plusieurs à avoir été obligé de convertir nos chaines de caractères en octet avant de les envoyer (ca dépend des matériels je pense)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 102
    Points : 56
    Points
    56
    Par défaut
    bonjour,

    Merci grace a vous j'ai utilisé SerialPort et j'ai pu codé ce que je voulais (en m'aidant d'internet biensur ^^).

    J'ai un autre soucis maintenent

    j'éxécute mon code et houra ca compile normal en mm temps.
    Dès que je lis un code barre grace a mon lecteur rien ne s'affiche dans le textBox.
    Fichiers attachés Fichiers attachés

  10. #10
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 102
    Points : 56
    Points
    56
    Par défaut
    Roh alors vraiment dsl pour la dernière mais alors franchment ca doit etre la fatigue qui me joue des tours

    J'avais pas vu que le host du lecteur n'était pas alimenté donc forcement aucune info pouvaient passé vive moi

    Merci beaucoup pour votre aide, Problème résolu

  11. #11
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 102
    Points : 56
    Points
    56
    Par défaut
    bonjour je réouvre mon sujet car j'a un petit soucis au niveau de l'écriture sur le port rs232.

    Je suis allé sur le site de msdn pour voir la fonction write de serialPort mais la fonction est pour application console et je travail sur application form.
    J'ai quand mm testé de faire ma fonction write mais sans succès.

    Si vous avez un lien sur lequel se trouve la fonction write de serialPort pour un application form j'aimerais bien le voir ou avoir un peu d'aide sur cette fonction.

    Merci d'avance.

  12. #12
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    nimp

    write fonctionne peu importe le type d'appli (console, winforms, wpf)

    je conseille par contre d'utiliser la surcharge qui demande un tableau d'octets



    truc style ca :
    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
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
            Dim s As New System.IO.Ports.SerialPort("COM1", 9600, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
            Dim octets() As Byte
            Dim chToSend As String = "A0" & vbCrLf
            octets = ChaineTOBytes(chToSend)
            s.Write(octets, 0, octets.Count)
        End Sub
     
        Private Function ChaineTOBytes(ByVal ch As String) As Byte()
            Dim b() As Byte
            ReDim b(ch.Length - 1)
            For i As Integer = 0 To ch.Length - 1
                b(i) = CByte(Asc(ch.Chars(i)))
            Next
            Return b
        End Function
    après faut gérer la réception dans la foulée en général
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #13
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 102
    Points : 56
    Points
    56
    Par défaut
    dsl du retard j'ai du partir 1 semaine

    merci pour ton code, entre temps j'qi pu trouvé un petit truc je le mets aussi.

    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
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Try
                ' Enable the timer.
                ' Write an user specified Command to the Port.
                oCP.Write(Encoding.ASCII.GetBytes(Me.TextBox1.Text & Chr(13)))
                WriteMessage(TextBox1.Text, True)
     
            Catch ex As Exception
                ' Warn the user.
                MessageBox.Show("Unable to write to comm port")
            Finally
                TextBox1.Text = ""
                TextBox1.Focus()
            End Try
        End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. communication avec port series en java
    Par konguess dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/01/2008, 12h26
  2. communication avec port serie
    Par seignseifer dans le forum C++
    Réponses: 2
    Dernier message: 14/03/2007, 09h34
  3. communication avec port serie
    Par seignseifer dans le forum C++
    Réponses: 1
    Dernier message: 28/02/2007, 02h56
  4. Communication par port serie sous vb
    Par kapjoel dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/10/2006, 10h02
  5. communication par port serie
    Par sofiane61 dans le forum MFC
    Réponses: 3
    Dernier message: 06/02/2004, 15h06

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