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 :

Envoie de plusieurs octets avec un Serialport


Sujet :

VB.NET

  1. #1
    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 Envoie de plusieurs octets avec un Serialport
    Bonjour,
    J'ais repris la fonction suivante afin de pouvoir envoyer une trame d'octets sur un port RS232 (via un SerialPort)
    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
    Public Class Octets
     
        Private _octets As New System.Collections.Generic.List(Of Byte)
     
        Public Sub Add(ByVal nb As Short)
            _octets.AddRange(BitConverter.GetBytes(nb))
        End Sub
     
        Public Sub Add(ByVal nb As Integer)
            _octets.AddRange(BitConverter.GetBytes(nb))
        End Sub
     
        Public Sub Add(ByVal nb As Byte)
            _octets.AddRange(BitConverter.GetBytes(nb))
        End Sub
     
        Public ReadOnly Property GetOctets() As Byte()
            Get
                Return _octets.ToArray
            End Get
        End Property
     
        Public ReadOnly Property Count() As Integer
            Get
                Return _octets.Count
            End Get
        End Property
     
    End Class
    *merci Pol63*


    pour ensuite m'en servir de la maniére suivante
    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
            'allocation de la memoire pour un tableau de 8 octets
            Dim octets(7) As Byte
            'remplissage des octets
            'avec des valeurs au hasard
            octets(0) = 2
            octets(1) = 1
            octets(2) = 83
            octets(3) = 0
            octets(4) = 6
            octets(5) = 39
            octets(6) = 98
            octets(7) = 24
            'crétation de la trame
            Dim oc As New Octets
            'remplissage de la trame
            For ii As Integer = 0 To 7
                oc.Add(octets(ii))
            Next
            Dim test As Integer = oc.Count
            'envoie de la trame
            spRS232.Open()
            spRS232.Write(oc.GetOctets, 0, oc.Count)
            spRS232.Close()
    Seulement il y a un soucis ...
    pour chaques Bytes compté, il me compte 2octets avec la fonction oc.count
    au lieu d'un octet (un Byte c'est sur 8bites donc sa vaut 1octet normalement)

    Comme je ne suis pas encore très a l'aise avec la création de fonction,
    je voulais avoir l'avis d'une personne qui s'y connais plus que moi pour me dire d'ou vient cette erreur ...

  2. #2
    Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Mars 2005
    Messages : 82
    Points : 67
    Points
    67
    Par défaut
    Salut

    As tu regardé du coté du encoding

    Si tu as un pb met encoding à default

    arnaud

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut
    Je dirais que tu te compliques un peu la vie la ...

    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
    Dim octets(7) As Byte
            'remplissage des octets
            'avec des valeurs au hasard
            octets(0) = 2
            octets(1) = 1
            octets(2) = 83
            octets(3) = 0
            octets(4) = 6
            octets(5) = 39
            octets(6) = 98
            octets(7) = 24
     
     
    spRS232.Open()
            spRS232.Write(octets, 0, 7)
            spRS232.Close()

  4. #4
    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
    le "encoding"?
    je ne sais pas ce que c'est ....


    d'accord stolken mais s'il compte 16 octets c'est qu'il doit avoir ces raisons ...
    si je prend que les 8 premiers je risque de ne pas prendre mon message correctement

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par hunteshiva Voir le message
    le "encoding"?
    je ne sais pas ce que c'est ....


    d'accord stolken mais s'il compte 16 octets c'est qu'il doit avoir ces raisons ...
    si je prend que les 8 premiers je risque de ne pas prendre mon message correctement
    La classe que Pol63 a fait, c'est pour convertir des variables short 16 bits donc 2 octets en 2 bytes, tu n'en as pas besoin...

  6. #6
    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
    Citation Envoyé par stolken Voir le message
    La classe que Pol63 a fait, c'est pour convertir des variables short 16 bits donc 2 octets en 2 bytes, tu n'en as pas besoin...
    non, il me génére une liste de Byte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private _octets As New System.Collections.Generic.List(Of Byte)
    et je ne vois pas pourquoi quand j'enregistre un Byte il me compte 2 Byte après ....

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par hunteshiva Voir le message
    non, il me génére une liste de Byte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private _octets As New System.Collections.Generic.List(Of Byte)
    et je ne vois pas pourquoi quand j'enregistre un Byte il me compte 2 Byte après ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
            dim octets(7) as byte 'tu crées un tableau de 8 colonnes de 1 byte
     
            octets(0) = 2  'tu places dans chaque colonne 1 byte
            octets(1) = 1
            octets(2) = 83
            octets(3) = 0
            octets(4) = 6
            octets(5) = 39
            octets(6) = 98
            octets(7) = 24
    ca te génére un tableau de bytes, je vois pas trop pourquoi tu veux une liste


    Sinon pour la classe Pol63 je peux pas t'aider ...
    Peux etre qu'il passera par la ...
    @+

  8. #8
    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
    Non, c'est bon
    en faite je pense que la fonction ".count" me retourne le nombre de caractéres comptés
    et comme 1octet est codé sur deux caracétres, il me compte 2*nbrOctets

    Donc tout va bien

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

Discussions similaires

  1. [Débutant] Envoi de plusieurs lignes avec un TcpClient
    Par Tornade8912 dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/03/2015, 14h37
  2. Envois de plusieurs ARP avec libnet.
    Par jyz93 dans le forum Réseau
    Réponses: 0
    Dernier message: 24/08/2011, 17h12
  3. envoi mail automatique a plusieur personne avec critère et Pj
    Par popofpopof dans le forum VBA Access
    Réponses: 9
    Dernier message: 26/02/2010, 09h51
  4. Réponses: 6
    Dernier message: 14/11/2006, 10h35
  5. Envoi d'un mail avec plusieurs pièces jointes
    Par Wilco dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/04/2006, 10h19

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