From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Array d'éléments de tailles différentes

Bonjour,

 

Cela fait un moment que je suis dans une impasse avec Labview... Y aurait-il une solution pour créer un array (tableau) avec des valeurs de grandeurs différentes sans que Labview le initialise toutes aux mêmes tailles?

 

Exemple: Je voudrais obtenir:

010

111000

100

1001

=>0101110001001001

Mais malheureusement j'obtiends:

010000

111000

100000

100100

=>010000111000100000100100

 

D'avance merci!

Meilleures salutations.

LV2012
0 Compliments
Message 1 sur 11
3 101 Visites

si je comprends bien, tu as un tableau 2D et tu voudrais pouvoir avoir "des trous" dans ton tableau. réponse, ce n'est pas possible car toute lignes / colonne doivent avoir la même dimension, pour bien le comprendre, le tableau que tu obtiens a 6 colonnes et 4 lignes donc forcément 24 valeurs, si tu n'en définis par, LabVIEW prend la valeur par défaut du type de donnée.

si tu veux absolument avoir des longeurs différentes pour tes lignes tu ne peux pas utiliser un simple tableau 2D de numérique.

 

donne un peu plus d'info sur ce que tu veux faire et on pourra te guider vers une solution appropriée. (j'espère).


We have two ears and one mouth so that we can listen twice as much as we speak.

Epictetus

Antoine Chalons

0 Compliments
Message 2 sur 11
3 096 Visites

Peut-être remplacer les "trous" par une valeur qui signifie "trou" ... et ensuite traiter suivant besoins.

(les "trous" sont codés ... donc on peut faire ce que l'on veut après)

0 Compliments
Message 3 sur 11
3 093 Visites

Pour faire simple, j'ai un certain nombre de valeurs à lire et elles sont de grandeurs différentes (de 1bit à 7bits). Il faut que je les lise puis les concaténate en une chaîne de 50bits que j'utilise ensuite dans mon programme.

Mon problème est que si je prends une valeur sous forme d'entier, le poids d'un nombre n'est pas respecté (5 => 0101, mais avec deux variables de 7bits, 5 et 5 (0000101 et 0000101 => 0000101'0000101) j'obtiens plutôt 101'0101) ce qui n'a pas du tout la même valeur!

Meilleures salutations.

LV2012
0 Compliments
Message 4 sur 11
3 088 Visites

Donne ton code.

et en commentaires ... montre la "sortie", ce que tu obtiens, et ce que tu aimerais obtenir.

0 Compliments
Message 5 sur 11
3 084 Visites

 

Peut-être convertir tout cela en chaine de caractères, utiliser la concaténation de chaines (voir exemple joint) . Après, il faut ajouter, en amont et en aval les fonctions de conversions qui vont bien.

 

jihef

0 Compliments
Message 6 sur 11
3 071 Visites

Merci pour vos réponses.

 

Je reçois mes valeurs depuis plusieurs variables locales (format binaire de 1 à 7 bits) puis j'aimerais les concaténer pour les transformer en une chaîne de caractères hexa. Malheureusement, je n'arrive pas à convertir un array 2D de bits en string hexa.

Exemple:

v0:0

v1:01110

v2:0100010

v3:010

 

=>v0-v3:010'0100010'01110'0(binaire) => 4 8 9 C(hexa)

 

J'ai trouvé une nouvelle manière de procéder avec la fonction "Pick Line" dans le répértoire des strings. Mais j'ai toujours des soucis de dimension.

Meilleures salutations.

LV2012
0 Compliments
Message 7 sur 11
3 058 Visites

 

Comment fais-tu pour recevoir des valeurs avec un nombres "variable" de bits ???

 

                                     smileys2_interrogatif.gif

 

un U8 c'est 8 bits, un U16 c'est 16 bits et un U32 c'est 32 bits ...

Il n'y a pas de valeurs (qu'elles viennent de n'importe où) ... qui comptent 21 bits ou 3 bits ... ???

Il est impossible de recevoir d'une variable locale numérique un ... nombre variable de bits.

 

Que veux- tu dire par nombre "variable" de bits ?

Ou peut-être considères-tu que "00011101" ... compte 5 bits ?

Parlerais-tu des bits à "0" au dela du dernier bit significatif ... en trop, et donc "ne comptant pas" ???

 

PS: le vi que tu as placé au téléchargement ... n'explique rien

et n'explique certainement pas cette histoire de valeurs comportant un nombre variable de bits.

Ton BtStrings est un Tableau de chaines de caractères, pas un Tableau de Numériques.

D'où viennent ces "bits" à l'origine ?

0 Compliments
Message 8 sur 11
3 056 Visites

Le VI que j'ai posté répond au problème initial posé :

 

Cela fait un moment que je suis dans une impasse avec Labview... Y aurait-il une solution pour créer un array (tableau) avec des valeurs de grandeurs différentes sans que Labview le initialise toutes aux mêmes tailles?

 

Exemple: Je voudrais obtenir:

010

111000

100

1001

=>0101110001001001

 

Comme indiqué dans mon post il faut l'encadrer avec les fonctions de conversion qui vont bien...

Reste à voir ce que sont ces chaines de bits de longueur variable. Utiliser des chaines de caractères pour modéliser cela peut résoudre le problème... surtout pour les opérations de concaténation.

0 Compliments
Message 9 sur 11
3 049 Visites

Très simple, j'ai fait une déclaration des mes variables globales (32bits et binaires), je connais également les grandeurs fianles de mes variables (7bits, 5bits, 3bits ou 1bit). Toutes mes valeurs sont converties en binaire, puis à l'aide d'un masque, j'effectue une opération ET logique pour obtenir la bonne longueur ainsi que la valeur.

 

Exemple:

 

01110000000000000000000000000000 (variable globale)

11111 (masque)

----------- (ET logique)

011100 (résultat)

 

Ensuite il faut que je rassemble mes résultats en une chaîne.

Meilleures salutations.

LV2012
0 Compliments
Message 10 sur 11
3 042 Visites