Tableau Byte et déclaration [Résolu]

Messages postés
100
Date d'inscription
lundi 3 avril 2006
Dernière intervention
1 mars 2010
- 8 janv. 2009 à 15:50 - Dernière réponse :
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 9 janv. 2009 à 10:31
Bonjour à tous,

Voici ce que je voudrai faire:








Dim
Octet_hexa

As



Byte
()


If
Longueur_Trame =

"5"



Then

Octet_hexa =





{

CByte
(Tableau_emission(0)),

CByte
(Tableau_emission(1)),

CByte
(Tableau_emission(2)),

CByte
(Tableau_emission(3)),

CByte
(Tableau_emission(4)),

CByte
(Tableau_emission(5)),

CByte
(Tableau_emission(6)),

CByte
(Tableau_emission(7)),

CByte
(Tableau_emission(8)),

CByte
(Tableau_emission(9))}


End



ifJ'ai une erreur à la premiere accolade qui me dit : Expression attendue!!!

Pourriez vous m'aider à ce sujet car cela doit être tout bête mais je bloque.

Merci

Cyril
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 8 janv. 2009 à 17:33
3
Merci
[../auteur/TOOSDU87/737476.aspx toosdu87]

-> OK mais quel est le but?
un tableau de byte d'une "bonjour" donnerait un tableau de 0 à 6, contenant les codes ascii de chaque lettre

ici tu as un tableau de décimal (nombres à virgules donc) et tu voudrais tout mettre dans un tableau de byte, donc en fait juste un tableau d'entier positifs de 0 à 255 ?

peux-tu expliquer le but stp?

si c'est juste ce que je viens de dire (étrange...), çà donnerait quelque chose dans ce goût là :



    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim i As Integer

        ' "Tableauemission contient des valeurs décimales."
        Dim Tableauemission(0 To 9) As Double
        For i = 0 To 9
            Tableauemission(i) = i * 2.05
        Next i

        'tableau de byte
        Dim Octet_hexa() As Byte

        'remplissage et cast
        ReDim Octet_hexa(Tableauemission.GetUpperBound(0))
        For i = 0 To 9
            Octet_hexa(i) = Convert.ToByte(Tableauemission(i))
        Next i

        'verif
        For i = 0 To 9
            System.Console.WriteLine(String.Format("{0}. '{1}' devient '{2}'", i, Tableauemission(i), Octet_hexa(i)))
        Next i
    End Sub
<!-- Coloration syntaxique vb/vba/vb.net : http://charles.racaud.free.fr/code-syntaxing/ -->
Coloration syntaxique vb/vba/vb.net







TRACE :

0. '0' devient '0'
1. '2,05' devient '2'
2. '4,1' devient '4'
3. '6,15' devient '6'
4. '8,2' devient '8'
5. '10,25' devient '10'
6. '12,3' devient '12'
7. '14,35' devient '14'
8. '16,4' devient '16'
9. '18,45' devient '18'


<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de PCPT
Meilleure réponse
Messages postés
100
Date d'inscription
lundi 3 avril 2006
Dernière intervention
1 mars 2010
- 9 janv. 2009 à 08:47
3
Merci
Merci PCPT,

pour récap:
je remplie mon tableau de string (qui sont des valeurs HEXA) de la façon suivante:
Tableau_emission(7) = Val(

"&h" + Mid(Parameter_number, 3, 2))
''''D2Tableau_emission(8) = Val(

"&h" + Mid(Parameter_number, 1, 2))
''''D3Je travail uniquement avec des entiers.
Mon tableau permet de créer une trame que je vais envoyer par RS232 a un microcontroleur.
C'est pourquoi il faut que je convertisse en Octet.

En tout cas grâce à toi et aux autres que je remercie, le code marche très bien de cette façon, c'est exactement ce que je voulais. MERCI

Dim Octet_hexa
As
Byte()

'remplissage et cast

ReDim Octet_hexa(Longueur_Trame + 1)

For i = 0
To Longueur_Trame + 1Octet_hexa(i) = Convert.ToByte(Tableau_emission(i))

Next i

Me.COM_NITOO.Write((Octet_hexa), 0, Octet_hexa.Length)

***Dernière petite question, est ce que Convert.toByte utilise la classe Convert DOTNET?

Cyril

Merci toosdu87 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de toosdu87
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 8 janv. 2009 à 16:03
0
Merci
Salut
Juste des idées (parce que .NET me file des boutons) :
- Ton tableau de Byte (Octet_hexa) n'est pas dimensionné, il devrait avoir un (9) quelque part, non ?
- Avant l'accolade, ne faudrait-il pas un mot clé comme Array ?
- Tableau_emission est-il bien un tableau valide ?
  Un tableau de quoi ? S'il est déjà un tableau de Bytes, CByte et Byte ne vont pas ensemble

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Dernière intervention
23 mars 2011
- 8 janv. 2009 à 16:17
0
Merci
Salut,

C'est tout simple, il faut déclarer et initialiser ton tableau de Byte en même temps :





Dim
 Octet_hexa As Byte() =  { CByte (Tableau_emission(0)), CByte(Tableau_emission(1)), CByte(Tableau_emission(2)), CByte(Tableau_emission(3)), CByte(Tableau_emission(4)), CByte(Tableau_emission(5)), CByte(Tableau_emission(6)), CByte(Tableau_emission(7)), CByte(Tableau_emission(8)), CByte(Tableau_emission(9))}
<!-- Coloration syntaxique vb/vba/vb.net : http://charles.racaud.free.fr/code-syntaxing/ -->



++

Fauve

<hr size ="2" width="100%" />
Pensez : Réponse Acceptée 
Commenter la réponse de cs_fauve
Messages postés
100
Date d'inscription
lundi 3 avril 2006
Dernière intervention
1 mars 2010
- 8 janv. 2009 à 16:19
0
Merci
Merci Jack

Ton tableau de Byte (Octet_hexa) n'est pas dimensionné, il devrait avoir un (9) quelque part, non ?
J'obtiens l'erreur "Les tailles de tableau ne peuvent figurer dans les spécificateurs de type"

Le Array devant n'a pas l'aire de fonctionner.

Tableauemission contient des valeurs décimales.

A titre d'info :

Dim Octet_hexa
As
Byte() = {
CByte(Tableau_emission(0)),
CByte(Tableau_emission(1)),
CByte(Tableau_emission(2)), _
CByte

(Tableau_emission(3)),
CByte(Tableau_emission(4)),
CByte(Tableau_emission(5)),
CByte(Tableau_emission(6)),
CByte(Tableau_emission(7)), _
CByte

(Tableau_emission(8)),
CByte(Tableau_emission(9))}

Le code précédent fonctionne bien mais je ne souhaite pas remplir mon tableau durant la déclaration.

Cyril
Commenter la réponse de toosdu87
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 8 janv. 2009 à 16:20
0
Merci
salut,
et de toute façon CBYTE n'est pas DOTNET, il faut passer par la classe CONVERT, voire simplement passer par un tableau de CHAR ou de INT32
++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Commenter la réponse de PCPT
Messages postés
100
Date d'inscription
lundi 3 avril 2006
Dernière intervention
1 mars 2010
- 8 janv. 2009 à 16:48
0
Merci
PCPT
Je suis preneur si tu as une solution DOTNET
Cyril
Commenter la réponse de toosdu87
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 9 janv. 2009 à 10:31
0
Merci
salut,

l'HEXA n'est qu'une représentation d'un LONG, tu as dis que c'était un tableau de decimal et pour finir tu stockes dans un tableau de string en faisant VAL qu'il ne faudrait plus utiliser non plus (vb6)...

pareil pour cette ligne

For
i = 0

To
Longueur_Trame + 1


tu avais écrit
Longueur_Trame =

"5"
, çà veut dire que tu additionnes des string et des integer, le reste de ton code doit contenir pas mal d'erreurs




Convert.ToByte(...


, => oui c'est le convert de dotnet

bon courage

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Commenter la réponse de PCPT

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.