Tableau Byte et déclaration [Résolu]

toosdu87 100 Messages postés lundi 3 avril 2006Date d'inscription 1 mars 2010 Dernière intervention - 8 janv. 2009 à 15:50 - Dernière réponse : PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention
- 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

PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 8 janv. 2009 à 17:33
+3
Utile
[../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 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
toosdu87 100 Messages postés lundi 3 avril 2006Date d'inscription 1 mars 2010 Dernière intervention - 9 janv. 2009 à 08:47
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de toosdu87
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 8 janv. 2009 à 16:03
0
Utile
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
cs_fauve 661 Messages postés vendredi 2 décembre 2005Date d'inscription 23 mars 2011 Dernière intervention - 8 janv. 2009 à 16:17
0
Utile
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
toosdu87 100 Messages postés lundi 3 avril 2006Date d'inscription 1 mars 2010 Dernière intervention - 8 janv. 2009 à 16:19
0
Utile
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
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 8 janv. 2009 à 16:20
0
Utile
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
toosdu87 100 Messages postés lundi 3 avril 2006Date d'inscription 1 mars 2010 Dernière intervention - 8 janv. 2009 à 16:48
0
Utile
PCPT
Je suis preneur si tu as une solution DOTNET
Cyril
Commenter la réponse de toosdu87
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 9 janv. 2009 à 10:31
0
Utile
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.