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.
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.
le 05-07-2012 09:09 AM
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!
le 05-07-2012 10:18 AM
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
le 05-07-2012 11:17 AM
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)
le 05-07-2012 11:55 AM
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!
le 05-07-2012 12:34 PM
Donne ton code.
et en commentaires ... montre la "sortie", ce que tu obtiens, et ce que tu aimerais obtenir.
le 05-08-2012 12:55 AM
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
le 05-08-2012 04:35 PM
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.
05-08-2012 05:29 PM - modifié 05-08-2012 05:34 PM
Comment fais-tu pour recevoir des valeurs avec un nombres "variable" de bits ???
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 ?
le 05-09-2012 12:47 AM
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.
le 05-09-2012 01:18 AM
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.