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 :

Affichage Avec deux chiffres dans TextBox


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Par défaut Affichage Avec deux chiffres dans TextBox
    Bonjour les développeurs,

    Voila j'ai une question. Je récupère une données Rs232 en héxadécimal et je les affiches ensuite dans une TextBox et mon problème et l'orsque je reçois ma donnée hexa (par exemple : "05") ben il m'affiche juste "5", pour les autres aucun soucis (par exemple :"88" s'affiche "88"). je voudrais donc que dans ma TextBox il m'affiche bien le 0 devant les chiffres.

    Je vous montre des Parties de mon code. Plus partique pour voir les variables:

    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
    Public Class Form1
        Dim Data As Byte
        Dim don1(900000) As String
        Dim i As Integer = 1
         '-------------------------------Reception des données du port série -----------------------
        Private Sub SerialPort1_DataReceived() Handles SerialPort1.DataReceived
            Do While SerialPort1.BytesToRead <> 0
                Data = Data & Hex(SerialPort1.ReadByte)
                don1(i) = Data
                i = i + 1
                Data = 0
            Loop
            Me.Invoke(New EventHandler(AddressOf DoUpdate))
        End Sub
          Public Sub DoUpdate()
            TextBox2.Text = don1(1) & " " & don1(2) & " " & don1(3) & " " & don1(4)
    Voila si certain on une petite astuce ou la solution...

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Utiliser String.Format plutot que de faire de la concaténation à tout va:

    http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Par défaut
    Ok merci je te remercie pour la réponse.

    Maintenant une autre question, je n'arrive pas à trouver dans la library:

    Est-ce qu'il y aurait un code pour simplifier ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            TextBox1.Clear()
            TextBox2.Clear()
            TextBox3.Clear()
            TextBox4.Clear()
            TextBox5.Clear()
            TextBox6.Clear()
            TextBox7.Clear()
            TextBox8.Clear()
    Je veux Effacer Toutes les TextBox ensemble et je trouve que le code est un peu lourd ^^

    Merci d'avance

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Bof. Pas grand chose à faire. Si par exemple elles ont toutes le même parent, tu peux itérer sur la propriété Controls:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach(var textbox in parent.Controls.OfType<TextBox>())
    {
        textbox.Clear();
    }
    Mais je suis pas sur que ca soit interessant.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Par défaut
    Merci pour l'astuce

    Mais retour à mon problème d'affichage
    En faite le problème est que je veux afficher de l'héxadecimal mais que il ne m'affiche pas les zéros devant les nombres décimals (0 -> 9)(H00 -> H09)
    Les commandes de format ne fonctionne pas du tout j'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub SerialPort1_DataReceived() Handles SerialPort1.DataReceived
        Dim Data, Data1(50) As Byte
        Dim Data2(50), RF, ex As String
     
            Do While SerialPort1.BytesToRead <> 0
                Data = Data & SerialPort1.ReadByte
                Data1(i) = Data
                Data2(i) = Hex(Data1(i))
                Data2(i) = Data2(i).ToString("00") 'Celle ci ********
                i = i + 1
                Data = 0
            Loop
    Le probleme est que je suis obligé de récuperer mes données dans une variable Byte. Lorsque mes données sont entierement en décimal il n'y a aucun problème mais quand il y a une lettre ben le programme fonctionne plus, logique. donc je suis obligé de passer mes variable en String. Donc voila tout mon soucis jespere mettre bien exprimé ^^

    MERCI D'AVANCE

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615

  7. #7
    Membre éprouvé 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 : 44
    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
    Par défaut
    Premièrement "00" ne veut rien dire, si tu veux 2 caractères décimales c'est "D2"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data2(i) = Data2(i).ToString("D2")
    Mais comme tu le dis, cela ne marchera pas si les valeurs comprennent A,B,C,D,E,F

    Maintenant, comme le dis Nathanael, il faut utiliser String.Format X (Héxa)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Data = Data & SerialPort1.ReadByte
    Data1(i) = Data.ToString("X2")   'x2 si tu veux en minuscule
    i +=  1

  8. #8
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par Anklor Voir le message
    Premièrement "00" ne veut rien dire
    Euh ben si! C'est un format custom a deux chiffres

  9. #9
    Membre éprouvé 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 : 44
    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
    Par défaut
    Je ne dis pas que ça marche pas, mais c'est pas standard.
    pour un nombre à 2 chiffres c'est ""D2" non ?

  10. #10
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut Affichage Avec deux chiffres dans TextBox ,stringbuilder
    bonjour crokflot,croque bytes
    Ce ne serait pas plus expeditif de passer par stringbuilder comme ceci.
    code:
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    Imports System.Text
    Imports System.IO.Ports
     
    Public Class Form2
        Dim Data(100000) As Byte
        Dim I As Integer = 0
        'à virer
        'Dim don1(900000) As String
     
        '-------------------------------Reception des données du port série -----------------------
        Private Sub SerialPort1_DataReceived() Handles SerialPort1.DataReceived
            Do While SerialPort1.BytesToRead <> 0
                Data(I) = SerialPort1.ReadByte
                'à virer
                '    'don1(i) = Data
                I = I + 1
            Loop
            Me.Invoke(New EventHandler(AddressOf DoUpdate))
        End Sub
     
        Public Sub DoUpdate()
            'TextBox2.Text = don1(1) & " " & don1(2) & " " & don1(3) & " " & don1(4)
            TextBox2.Text = ByteArrayToString(Data)
        End Sub
     
        Private Function ByteArrayToString(ByVal arrInput() As Byte) As String
            Dim i As Integer
            Dim sOutput As New StringBuilder(arrInput.Length)
            For i = 0 To arrInput.Length - 1
                sOutput.Append(arrInput(i).ToString("X2") & "-")
            Next
            Return sOutput.ToString()
        End Function
        'Pour Test
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            AfficheHex()
        End Sub
        Private Sub AfficheHex()
            Do While I < 255
                Data(I) = Convert.ToByte(I)
                I = I + 1
                Me.Invoke(New EventHandler(AddressOf DoUpdateBis))
                If I > 255 Then
                    'vide Data
                    ReDim Data(100000)
                    I = 0
                End If
            Loop
        End Sub
        Public Sub DoUpdateBis()
            TextBox2.Text = ByteArrayToString(Data)
        End Sub
    End Class
    Bon code....

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Par défaut
    Je vous remercie tous pour vos réponces. j'ai testé les 3 solutions et celle qui marchait le plus et la plus pratique et celle de Anklor.

    Merci encore

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

Discussions similaires

  1. Problème de recherche dans msflexgrid avec deux ou plusieurs textbox
    Par Smilossss dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 01/02/2013, 18h06
  2. [MySQL] problème avec deux requetes dans un même script
    Par leclone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/02/2007, 10h28
  3. Requête SELECT avec deux champs dans une colonne ??
    Par fredhali2000 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 08/06/2006, 10h41
  4. Pourcentage avec deux chiffres après la virgule
    Par Oluha dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/03/2005, 13h47
  5. Réponses: 22
    Dernier message: 29/01/2005, 11h29

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