Créer / remplir / utiliser un tableau

Bonjour,
J'aimerait pouvoir créer un tableau qui s'ajuste automatiquement en fonction du nombre de donnée, le remplir avec un fichier extérieure et enfin utilisé les valeurs dans d'autres système
J'ai un fichier txt qui arrive avec par exemple 10 valeur (0 ou toujours positives) j'aimerait pouvoir envoyer les 10 valeurs dans un tableau sous labview dans l'ordre ou elles sont enregistrées, puis pouvoir les ressortir pour les utiliser comme consigne de ma prochaine instruction.
J'arrive a charger le fichier txt sous labview mais je ne comprend pas comment cabler et surtout comment faire pour que les valeur se charge ligne par ligne les une en dessous des autres dans un tableau (que je n'arrive pas a configurer non plus )
J'utilise Labview 8.5 en anglais
Merci d'avance
Cordialement Rodolphe B.
Résolu !
Accéder à la solution.

Je passe par hasard, un petit ajout pour la gestion de l'affichage à l'écran.
Il suffit de mettre le Max que tu veux en lignes à afficher à l'écran.
Pièces jointes :
Récupération_Tableau.vi ‏10 KB

Similar Messages

  • Définir la taille des colonnes d'un tableau cvi et visualiser les colonnes non visibles

    Bonjour,
    j'ai deux questions sur l'utilisation de tableau 2D dans CVI :
    1. la largeur par défaut des colonnes ne permet pas de voir la valeur (float) en entier. Comment l'agrandir ?
    2. Le tableau est utilisé en visualisation d'une liste de 512 valeurs (donc 512 colonnes) qui ne sont pas toutes visibles à l'écran. j'ai mis un ascensseur horizontal, mais celui ci n'est pas actif quand le controle est grisé (à cause de l'interdiction pour modification). Comment visualiser les colonnes non visibles dans ce cas ?

    J'ai une version CVI 9.0.1
    C'est difficile de vous envoyer l'ensemble du code. j'ai utilisé un controle "Edit Table"
    Ci joint une copie d'écran qui illustre le problème :
    le tableau "Fréquence" contient une ligne "Freq" et une ligne "Chirp". les valeurs de la ligne "Freq" sont 13254 et 13125 et on voit 3254 et 3125. les valeurs de la ligne "Chirp" sont 13256 et 13398 et on voit 3256 et 3398 .
    Je n'ai pas trouvé d'attribut permettant de définir la largeur des colonnes.
    Du plus si le tableau contient plus de 8 colonnes, on ne peut pas les visualiser
    Pièces jointes :
    ecran-log.JPG ‏109 KB

  • Affecter des coordonnées à chaque case d'un tableau

    Bonjour,
    Esct ce qu'il est possible d'affecter des coordonnées X, Y a chaque case d'un tableau 2D. Exemple ds le tableau excel ci joint
    Par exemple je vx que la case (0,0) dont le contenu est 1 ait un systeme de coordonnées(0.0035,-0.0035).
    Merci d'avance,
    Pièces jointes :
    tab.jpg ‏33 KB

    Bonjour,
    Pourquoi ne pas tout simplement utiliser un tableau de cluster ? Cela parait plus simple....
    Cordialement,
    Pièces jointes :
    tableau_vi.vi ‏7 KB

  • Infos sur des sous ensembles d'un tableau

    Bonjour,
    Je viens pour vous demander des conseils sur ce forum, j'ai récupéré un programme dont je ne comprends pas l'utilisation sous ensemble d'un tableau. Ci-joint le schéma. Je ne vois pas l'intéret de l'utilisation du tableau ajouté et pourquoi cela sert, pourriez-vous me donner des infos si vous avez dèja utilisé ce genre de composant. Merci d'avance.     
    Pièces jointes :
    Face_Avant.JPG ‏169 KB
    Infos.JPG ‏42 KB

    Bonjour,
    Il semble que le vi sert à vérifier si des paramètres sont identiques.
    La fonction sous-ensemble de tableau permet de comparer une partie des paramètres uniquement: les 4 premiers puis les deux suivants.
    Pour la création de tableau ajouté, elle ne sert à rien dans l'état actuel, elle permet de passer d'un booléen à un tableau contenant un booléen. Par contre je panse qu'elle a été utilisée à la base pour y cabler la sortie de l'autre "OU de tableau" afin d'avoir les deux résultats de test.
    Cordialement,
    Micaël DA SILVA

  • FPGA et I/O : comment bien faire ?

    Bonjour,
    J'essaie en vain de lire tous mes capteurs en programmation FPGA sur C-RIO 9022 avec un chassis C-RIO 9113.
    Je souhaite utiliser le FPGA pour prendre une série de 250 mesures (sur 27 capteurs) sur un pas de temps très court, et ne conserver que la moyenne. Pour cela j'utilise 2 cartes NI-9205.
    Je me heurte à 2 méthodes qui ne fonctionnent pas :
        (1) Soit je fait une structure séquence de 27 séquences, et dans chacune je fais une boucle de lecture de mon capteur avec un moyennage (Image Erreur_compilation_FPGA.bmp). Dans ce cas je n'arrive pas à compiler, j'ai le message d'erreur suivant : "ERRORack:2310 - Too many comps of type "DSP48E" found to fit this device." J'imagine que la carte FPGA n'est pas dimensionnée pour mon besoin.
        (2) Soit je fait une boucle sur chacune de mes entrées, avec dans chacune une boucle de lecture de mon capteur avec un moyennage (image Erreur_refnum_dynamique.bmp). Pour boucler sur mes entrées, je voulais utiliser un tableau de taille fixe avec les refnum de mes entrées. Dans ce cas le vi n'est même pas exécutable, j'ai l'erreur "Fil de liaison : Possibilité de refnum dynamique non supportée pour la cible actuelle".
    La seule solution que j'ai trouvé mais qui ne me semble pas très "propre" est de faire 3 VIs FPGA utilisants la méthode (1) avec seulement 9 capteurs chacun. Dans ce cas la compilation fonctionne, et lorsque je souhaite faire la mesure j'appelle successivement mes 3 VIs depuis un Vi en RT.
    Voyez vous une solution qui me permettrait de n'avoir qu'un seul VI FPGA qui tourne en boucle, et un Vi RT qui récupère régulièrement les mesures pour les enregistrer ?
    Si je ne me trompe pas il n'est pas possible d'avoir plusieurs VI FPGA qui tournent en même temps ?
    Merci,
    Nicolas

    Bonjour,
    J'étais déjà tombé sur ces discussions, mais elles ne me semblent pas très positives.
    J'avoue être un peu perdu sur la discussion concernant les DSPs, et la solution proposée concernant les refnums dynamiques semble être celle qui me génère l'erreur DSPs.
    Je ne sais pas si j'ai réussi à attacher mes pièces jointes, mais l'idée est de faire autant de boucles que j'ai d'entrées (successivement, pas en parallèle), et une moyenne sur les mesures.
    Du coup je n'ai pas besoin que mes boucles tournent en parallèle, je voudrais donc théoriquement réutiliser la même boucle de moyennage, en changeant pour chaque mesure l'entrée et la sortie.
    Je ne sais pas si je suis clair, j'espère que les images seront plus parlantes.
    Merci
    Nicolas
    Pièces jointes :
    Erreur_refnum_dynamique.jpg ‏152 KB
    Erreur_compilation_FPGA.jpg ‏152 KB

  • Static textfields

    Hi guys,
    I do not know what happens. My input fields do not work and I have no syntax error. I cannot enter data.
    This is my code and below my .swf
    tks in advance.
    package {
      import flash.display.*;
      import flash.text.*;
      import flash.events.MouseEvent;
      public class U1A7_Fidelisation extends MovieClip {
    var affichage: String="";
    //Déclarer la création du tableau adherents et les varialbes à être utilisés.
      var rang1:Array = [];
      var adherent:Array = [rang1];
      public function U1A7_Fidelisation()
      btnAjouter.addEventListener(MouseEvent.CLICK, ajouter);
      btnAfficher.addEventListener(MouseEvent.CLICK, afficher);
      btnSupprimer.addEventListener(MouseEvent.CLICK, supprimer);
      btnMillesTotale.addEventListener(MouseEvent.CLICK, millesTotale);
    //Inclure le fichier externe qui contient la fonction pour caluler les milles accumulés et
    //les milles en prime.
      include "U1A7_Milles.as"
      //fonction pour ajouter les renseigments inscrits par l'utilisateur au tableau.
      function ajouter(event:MouseEvent):void
      var nom:String;
      var prenom:String;
          var semaineUne:int;
          var semaineDeux:int;
      var semaineTrois:int;
      var semaineQuatre:int;
      //Extraire les informations nécessaires des champs de saisie.
      prenom = txtPrenom.text;
      nom = txtNom.text;
          semaineUne = int(semaine1.text);
        semaineDeux = int(semaine2.text);
      semaineTrois = int(semaine3.text);
        semaineQuatre = int(semaine4.text);
      adherent.push([prenom, nom, semaineUne, semaineDeux, semaineTrois, semaineQuatre]);
      //fonction pour supprimer les renseigments du tableau.
      function supprimer(event:MouseEvent):void
          var indiceP:int=-1;
          var indiceN:int=-1;
          for (var rang:int = 0; rang < adherent.length; rang++)
            indiceP =(adherent[rang][0].indexOf(txtPrenom.text));
            indiceN =(adherent[rang][1].indexOf(txtNom.text));
            if ((indiceP != -1) && (indiceN != -1)) // prénom et nom ont été repérés.
              adherent.splice(rang,1);  // rang - indique la rangée à supprimer.
        // 1 - indique de supprimer cette rangée seulement.
      //fonction pour afficher afin que tout les renseignements inscrits dans le tableau
      //deviennent visibles.
      function afficher (event:MouseEvent):void
      affichage=("");
      for (var rang:int = 0; rang < adherent.length; rang++)
      for (var col:int = 0; col < adherent[0].length; col++)
      affichage = affichage + " " + adherent[rang][col];
      affichage = affichage + "\n";
      monMessage.text = affichage;
      txtPrenom.text = "";
      txtNom.text = "";
      semaine1.text = "";
      semaine2.text = "";
      semaine3.text = "";
      semaine4.text = "";
      //fonction pour calculer le total de points(milles) accumulés en 4 semaines d'un client
      //et pour voir si ils obtiendront des milles en prime.
      function millesTotale(event:MouseEvent):void
       var prenom2:String;
          var nom2:String;
          var semaineUne2:int;
          var semaineDeux2:int;
       var semaineTrois2:int;
       var semaineQuatre2:int;
       var somme:int;
       var sommeMessage:String;
       affichage = "";
          prenom2 = txtPrenom.text;
       nom2 = txtNom.text;
          semaineUne2 = int(semaine1.text);
       semaineDeux2 = int(semaine2.text);
       semaineTrois2 = int(semaine3.text);
       semaineQuatre2 = int(semaine4.text);
          somme = (semaineUne2 + semaineDeux2 + semaineTrois2 + semaineQuatre2);
         if (somme >= 5000)
      sommeMessage ="1000";
      else if (somme < 5000)
      sommeMessage ="0";
       affichage = (prenom2 + nom2 + " a accumulé " + somme + " milles. Elle/Il a obtenu "  + sommeMessage + " mille(s) en prime.");
      //Afficher le message dans le champ de saisie monMessage. 
       monMessage.text = affichage;
      txtPrenom.text = "";
      txtNom.text = "";
      semaine1.text = "";
      semaine2.text = "";
      semaine3.text = "";
      semaine4.text = "";

    can you see your cursor when you click on an input textfield?
    if no, there's something overlying it.  if yes, what happens when you type a letter and number?
    p.s.  make sure the font color is NOT white, and you should embed your font.
    p.p.s.  i just saw you marked ned's response 'correct'.  i don't see any change listeners where that could occur.  you have click listeners but those wouldn't change any textfields unless something is clicked.

  • Error # 1084

    It's me again.
    I corrected the error # 1009 and now i get 2 more : # 1084.
    I tried to correct but i can't see.
    Tks a lot.
    package {
              //composante du texte
              import flash.display.*;
              import flash.text.*;
              //importation des composantes du programme
              // composante du bouton
              import flash.events.*;
                        //création des classes du programme
              public class U2A5_JeuTicTacToe extends MovieClip
                        //Déclarer les constantes.
                        //combien de case par rangees et par colonnes
                        private static const RANGEES:int=3;
                        private static const COLONNES:int=3;
                        // grandeur des cases pour les rangees et les colonnes
                        private static const RANGEE_HAUTEUR:Number=85;
                        private static const COLONNE_LARGEUR:Number=85;
                        private static const RANGEE_DECALAGE:Number=10;
                        private static const COLONNE_DECALAGE:Number=10;
                        //Déclarer les variables pour le reste du programme
                        // variable pour la memoire de la derniere case selectionner
                        private var caseCourante:Cases;
                        // identifie une colonne ou rangee spécifique
                        private var tttRangee:int;
                        private var tttColonne:int;
                        // identifie le joeur courant donc les x ou les o
                        private var joueurCourant:int=2;
                        // variable pour savoir quand les 9 cases ont été choisi
                        private var nombreDeClics:int=0;
                        // variable pour le X et le O
                        private var joueurSymbole:String="X";
                        // variable utilisé quand un joueur gagne
                        private var gagnant:String="Début";
                        //Utiliser un tableau pour reseter au courant des x et des o pour chaque rangee.
                        var rangee1:Array=[" "," "," "];
                        var rangee2:Array=[" "," "," "];
                        var rangee3:Array=[" "," "," "];
                        //Insérer les rangées dans un tableau conteneur nommé TTTPlancheJeu.
                        var TTTPlancheJeu:Array=[rangee1,rangee2,rangee3];
                        //Utiliser une fonction constructeur pour dresser la planche du jeu.
                        public function U2A5_JeuTicTacToe():void
                                  // boucles for pour creer les trois colonnes et les trois rangees
                                  for (var c:int=0; c<COLONNES; c++)
                                            for (var r:int=0; r<RANGEES; r++)
                                                      // code pour creer chaque case une a cote de l'autre
                                                      var caseAffiche:Cases =  new Cases();
                                                      caseAffiche.stop();
                                                      caseAffiche.x=c*COLONNE_LARGEUR+COLONNE_DECALAGE;
                                                      caseAffiche.y=r*RANGEE_HAUTEUR+RANGEE_DECALAGE;
                                                      addChild(caseAffiche);
                                                      // code pour que le programme ecoute pour un evenement de click pour qu'un coup soit joue
                                                      caseAffiche.addEventListener(MouseEvent.CLICK, joueUnCoup);
                        // code de la boucle for pour la partie des coups joué
                        public function joueUnCoup(event:MouseEvent)
                                  // variable qui calcule du nombre de clic ajoute 1
                                  nombreDeClics++;
                                  // lorsqu'un click sur une case est fait - le bon symbole doit apparaitre - ceci en est le code
                                  caseCourante = (event.target as Cases);
                                  caseCourante.symbole=joueurCourant;
                                  caseCourante.gotoAndStop(joueurCourant);
                                  situeSurPlancheJeu();
                                  // code pour verifier si il y a un gagnant
                                  verifieGagnant();
                                  // code pour changer de joueur pour le prochain coup
                                  changeJoueur();
                        // code pour situer quel case le joueur a selectionner
                        function situeSurPlancheJeu():void {
                                  // basé sur les coordonnées X et les coordonnées Y
                                  if (mouseX<=85) {
                                            tttColonne=0;
                                  } else if ((mouseX > 85) && (mouseX <= 170)) {
                                            tttColonne=1;
                                  } else if ((mouseX > 170) && (mouseX <= 255)) {
                                            tttColonne=2;
                                  if (mouseY<=85) {
                                            tttRangee=0;
                                  } else if ((mouseY > 85) && (mouseY <= 170)) {
                                            tttRangee=1;
                                  } else if ((mouseY > 170) && (mouseY <= 255)) {
                                            tttRangee=2;
                                  // basé sur lequel des if qui fonctionne le programme utilise ces données dans ce code et met le symbole sur la bonne case
                                  TTTPlancheJeu[tttRangee][tttColonne]=joueurSymbole;
                        // code pour vérifié si il y a un gagnant.
                        function verifieGagnant():void {
                                  // Vérifie les rangées
                                  for (var r:int=0; r<RANGEES; r++) {
                                            if ( ( (TTTPlancheJeu[r][0]) == (TTTPlancheJeu[r][1]) ) && ( (TTTPlancheJeu[r][1]) == (TTTPlancheJeu[r][2]) ) && ( (TTTPlancheJeu[r][0]) != " ") ) {
                                                      gagnant=(TTTPlancheJeu[r][0]);
                                  //Vérifie les colonees.
                                  for (var c:int=0; r<COLONNES; c++) {
                                            // verifie si il y a trois même symbole sur une rangée
                                            if ( ( (TTTPlancheJeu[c][0]) == (TTTPlancheJeu[c][1]) ) && ( (TTTPlancheJeu[c][1]) == (TTTPlancheJeu[c][2]) ) && ( (TTTPlancheJeu[c][0]) != " ") ) {
                                                      gagnant=(TTTPlancheJeu[c][0]);
                                            // Vérifie une des diagonales
                                            // verifie si il y a trois même symbole sur une colonne
                                            if ( ( (TTTPlancheJeu[0][0]) == (TTTPlancheJeu[1][1])) && ((TTTPlancheJeu[1][1]) == (TTTPlancheJeu[2][2]) ) && ((TTTPlancheJeu[0][0]) != " ")) {
                                                      gagnant=(TTTPlancheJeu[0][0]);
                                            // vérifie si la partie est nulle.
                                            // si les 9 cases ont été choisi et il n'y a jamais eu de gagnant le jeu est nul
                                            if ((nombreDeClics == 9) && (gagnant == "Début")) {
                                                      gagnant="Match null!";
                                            //S'il y a un gagnant, l'indiquer.
                                            if (gagnant!="Début") {
                                                      MovieClip(root).gagnant=gagnant;
                                                      // allé à l'image 3 finPartie
                                                      MovieClip(root).gotoAndStop("finPartie");
                                  // function qui permet les bon symbole pour les joueurs respectif d'etre afficher
                                  function changeJoueur():void {
                                            //Si c'est le joueur 2 c'est donc le symbole o qui apparait
                                            if (joueurCourant==2) {
                                                      joueurSymbole="O";
                                                      // change la variable pour que le prochain tour soir au X
                                                      joueurCourant=3;
                                            } else if (joueurCourant == 3)
                                                      //Si c'est le joueur 3 c'est donc le symbole X qui apparait
                                                      joueurSymbole="X";
                                                      // change la variable pour que le prochain tour soir au O
                                                      joueurCourant=2;

    The first thing that is wrong with the code is that constructor return type is void - remove it; constructor returns an instance of the class.
    Second, you have three lines that have spaces in variable names:
    caseAffiche.x=c*COLONNE_LARGEUR+COLONNE_DECA LAGE;
    caseAffiche.y=r*RANGEE_HAUTEUR+RANGEE_DECALA GE;
    caseAffiche.addEventListener(MouseEvent.CLIC K, joueUnCoup);

  • Erreur de compilatio​n FPGA

    Bonjour,
    Lorsque je compile mon Vi FPGA, j'ai cette erreur qui apparait :
    "The length of a line in 'bushold.vhd' is too long for xilinx 10.1.
    Length:9678    Max length:4150"
    Quelqu'un pourrait-il me dire de quoi il en retourne, SVP ?
    Merci par avance.
    Config : Seven _ LabVIEW 2010 _ NI-RIO 3.5 _ Carte FPGA PCI 7833R _ Virtex-II _ 3M Gate

    Bonjour,
    Merci d'avoir posté sur le forum NI.
    En effet, l’utilisation de  trois tableaux de 100 U32 me parait difficile dans le FPGA (l’utilisation de tableau dans un FPGA est gourmande). Pour être sûr de cela, vous pouvez faire un benchmark. Vous créez un nouveau VI et vous placez juste un tableau avec un U32. Vous compilez et regardez dans le rapport de compilation pourcentage de mémoire alloué à ce vi, le nombre de LUT et de DSP.
    Cordialement
    Samuel G. | Application Engineer Team Leader
    Certified LabVIEW Developer
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    Été de LabVIEW 2014
    12 présentations en ligne, du 30 juin au 18 juillet

  • Registre à décalage

    Bonjour,
    J'ai développé récemment une IHM dans le cadre de mes études d'ingénieur. Cette IHM devait envoyer des commandes de tensions vers une carte électronique via une liaison RS232. La carte électronique envoyant ensuite cette commande de tension sur une ou plusieurs voies (24 au totale) afin de polariser une antenne.
    J'ai donc mis 24 controls numérique (pour l'envoi de la valeur de tension/ un par voie) ainsi que 24 cases à cocher (pour la sélection des voies) sur mon IHM. J'ai ensuite mis une structure évenement (avec un évenement sur chaque sélection de la case à coché pour l'envoi de la valeur de la tension) je stock ensuite les 24 valeurs dans un tableau. Lorsque j'appuis sur le bouton "envoi", je "dépile" mon tableau dans le VI d'envoie sur la liaison RS232. Un programme sur la carte électronique se chargant ensuite du traitement des valeurs différentes de 0V pour envoie vers l'antenne.
    J'ai don du utilisé 24 registres à décalage pour avoir accés à chaque valeur dans tous les évenements de ma strucuture évenement. Je suis finalement arrivé à une IHM parfaitement fonctionnelle mais je me posais la question s'il n'existait pas d'autre alternative que le registre à décalage pour mon IHM (parce que j'en ai passé des heures à relier chaque ligne de mes registre à décalage). Même question pour l'utilisation du tableau.
    J'epère avoir été clair.
    Merci
    Benjamin
     

    " extraire un à un les éléments d'un Cluster" ... ?
    il n'est pas possible " d'indexer " un Cluster.
    par contre, si tous les éléments du cluster sont du même type, tu peux convertir ton Cluster en Tableau ("cluser to array" dans la palette cluster)
    et ensuite ... indexer le Tableau obtenu.
    attention, les éléments dans le Tableau se trouveront dans l'ordre dans lequel il se trouve dans le cluster
    Tu me diras .... bein oui, je m'en doute :-)
    attention ... l'ordre dans le cluster n'est pas oblibatoirement l'ordre avec lequel ils sont graphiquement visibles (dans le cluster)
    Au départ ... l'ordre dans un cluster est l'ordre suivant lequel tu introduis les éléments dans le cluster.
    ensuite .... tu peux réorganiser cet ordre ... clic droit sur le bord du cluster + reorder controls in cluster.

  • Gestion des axes sur graphique

    Bonjour,
    Je cherche un moyen de renverser mes axes (X devient Y et vice versa) sur un graphe utilisant des données de type Waveform. Je sais que c'est tres simple a faire avec des graphes de type Intensite ou des Waveforms utilisant des tableaux de nombres mais je ne trouve pas comment faire avec des données de type Waveform.
    Si quelqu'un a une suggestion (voire une solution!!!).....
    Merci.
    Raoul Chodziesner-Bonne
    Ingénieur Instrumentation
    CRIL TECHNOLOGY - Groupe ALYOTECH
    "Celui qui pose une question peut paraitre idiot sur le moment, celui qui n'en pose pas le reste toute sa vie!"

    Hi
    Maybe this is what you are looking for. By the way - if you want to change the axes, you have to use the XY-graph, because Waveform-Graph and Waveform-Chart generate the x-axis with the provided information from the waveform-datatype.
    Hope this helps.
    Thomas
    Using LV8.0
    Don't be afraid to rate a good answer...
    Attachments:
    renverser.vi ‏33 KB

  • Visualisation d'une rampe en fonction du temps

    Bonjour,
    dans le cadre de mon projet, je dois contrôler un frein selon une rampe. J'ai réalisé un programme que voici :
    Comment faire pour afficher cette rampe en fonction du temps et ainsi obtenir une droite de type y =ax ?
    J'ai l'impression qu'il faut utiliser des tableaux.. Est-ce bien ça ? Ou alors un graphe XY ?
    Merci d'avance !

    Vous pouvez peut être trouver quelque inspiration dans l'exemple attaché ?
    Chilly Charly    (aka CC)
             E-List Master - Kudos glutton - Press the yellow button on the left...        

  • Jauge de contrainte

    Bonjour,
    Je voudrai ajouter à mon programme, un transformation d'échelle pour que l'utilisateur puissent voir de façon "reelle" ce qui se passe. Du coup, on a un sur deux entrées les déformations enregistrés sur un échantillon (machine biaxiale),.
    J'ai la tranformation Y= mX +B, mais lorsque je regarde les exemples pour les jauges de contraintes (type de pont, exitation etc).
    J'ai regardé le tuto ni sur les jauges mais pour ma part, je n'ai que deux cables de mesures, et je n'ai accés au information donné au dessus), juste à son echelle linéaire.
    J'ai donc chercher à créer mon échelle linéaire (plutot que d'utiliser le module acquisition en jauge). Mais les entrées ne sont pas correctes.
    J'utilise un tableau de voies, puis je l'ai aplati et enfin les donnes dans ma tache daqmx.
    J'ai mis mon début d'acquisition à savoir le tableau de voie, l'aplatissement, mon ai tension et en dessous mon echelle.
    Est ce que quelqu'un peut me dire comment relier tous ca. J'ai fait plusieur tests mais sans résultat .
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    essai.JPG ‏37 KB

    Bonjour,
    Tout d'abord, merci d'avoir posté sur le forum National Instruments.
    J'ai regardé votre code et l'échelle est très bien construite. Il faut donc plutôt se tourner vers son réglage.
    Appelons "a" la pente, et "b" l'ordonnée à l'origine (Y=aX+b). "a" permet de régler le gain que l'on veut appliquer au signal, tandis que "b" permet de régler l'offset.  Une fois ces deux paramètres fixés, il ne reste alors plus qu'à ajuster la gamme de mesure. En effet, si un signal d'entrée varie entre  -10V et 10V, après mise à l'échelle sa gamme de mesure n'est plus [-10;10] mais  [ax(-10)+b;ax10+b]. Dans votre programme, vous devez régler la gamme de mesure en ajustant les indicateurs "valeur minimum" et "valeur maximum".
    Concernant votre problème, pourriez-vous m'indiquer les valeurs que vous avez choisies pour "a" et "b" lors de votre simulation?
    Car si vous avez choisi a=1 et b=-1750, vous devez obtenir un signal de même amplitude que le signal d'entrée à savoir 0.01V d'après votre capture d'écran (puisque le gain est de 1), décalé d'un offset de -1750 V. Il sera donc normal avec l'échelle de visualisation choisie (-1950V;-1575V) de voir un signal continu à -1750V.
    Pour information, il est également possible de créer une échelle personnalisée sous MAX (voir le tutorial disponible à ce lien : http://digital.ni.com/public.nsf/allkb/3F6558112FD2C776862575B5004F7F87?OpenDocument )  et de l'utiliser dans LabVIEW (voir l'exemple disponible à ce lien : https://decibel.ni.com/content/docs/DOC-3706 )
    J'espère que ces éléments vous aideront à résoudre votre problème, n'hésitez surtout pas à poser d'autres questions.
    Bien cordialement,
    Audrey_P
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    Journées techniques : des fondamentaux aux dernières technologies pour la mesure et le contrôle/comm...

  • Fixer espacement entre 2 blocs de texte en redimensionnement auto

    Bonjour,
    Je me casse les dents sur un problème de mise en page.
    Nous avons des blocs de texte qui sont alimentés en auto par une base de données. Seulement le contenu n'étant jamais identique, les blocs s'ajustent automatiquement.
    Seulement nous souhaiterions conserver le même espace entre les blocs, qui pour le moment, se chevauchent, ou à l'inverse sont trop espacés, sans avoir à retoucher manuellement.
    En clair, est il possible de verrouiller un espace entre 2 blocs ?
    Merci d'avance

    Fâcheux effectivement !
    … Mais, dans ce cas, utiliser un tableau et un bloc ancré sous le tableau. 

  • Retour paramètre string par Labwindows/CVI pour Teststand

    Bonjour à tous,
    j'utilise Teststand 2012 Development System et Labwindows/CVI 2012 Development System sous Windows 7 professionnel.
    Le contexte : grâce à une DLL crée avec Labwindows/CVI j'appel la fonction "Traitement" par TS.
    Le prototype de la fonction est le suivant void __declspec(dllexport) Traitement (char message[256], car reponse[256]);
    Je passe en paramètre deux strings à cette fonction. Cette fonction reçoit un "message", effectue un traitement sur celui-ci et le renvois sous le tableau "reponse" à TS. Cette fonction a été testée et fonctionne sous CVI.
    Mon problème : J'ai vérifié ma fonction reçoit bien le message mais me retourne quelque chose d'erroné( cf. image) et n'est censé me retourner, dans"reponse", que les chiffres au début mais me rajoute des instructions en temps que string. Je ne comprend pas comment cette suite d'instruction ce rajoute et pourquoi?
    J'ai consulté tous les messages disponibles sur le forum et je n'ai pas réussi à trouver un problème équivalent et donc une solution.
    J'espère que vous aurez une idée, voir pourquoi pas une solution
    Dans l'attente d'une réponse,
    Cordialement,
    Erwan.
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    message.png ‏74 KB

    Bonjour Akagi,
    Dans une chaîne de caractère, "Null" ou "\0", correspond effectivement à une fin de chaîne.
    Pour éviter ce comportement, vous pouvez changer le type de passage de paramètre dans TS en tableau de Numérique.
    Ce faisant, aucun traitement ne sera fait sur le caractère "NULL". pour rappel un char = 1 Octet, on peut donc utiliser un tableau de numérique U8 pour représenter une chaîne de caractère.
    En résumé, si votre chaîne de caractère = 3"Null"01, vous obtiendrez ainsi: tab[0] = 3, tab[1] = 0, tab[2]=1.
    Je suis désolé, mais j'ai du mal à saisir où est intégré le caractère "NULL" dans CVI, est-ce une entrée clavier saisie par l'utilisateur, autre?
    Est-il possible d'utiliser un autre caractère ou série de caractère(non spécial) permettant d'identifier cette transition/caractère spécial "Null"?
    EX: (\) = "Null", soit la chaîne 3(\)01 équivalent à 3"Null"01. Il suffit ensuite d'établir un algorithme permettant de changer (\) en "NULL".
    Cordialement,
    Rémi D.
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    >> Les rencontres techniques de NI - Mesures et acquisition de données : de la théorie à la mise en ...

  • Affichage plusieurs courbes

    Bonjour,
    Je viens sur ce site pour avoir des conseil. J'ai 4 mesures issues des 4 capteurs via une carte 9213. Je souhaiterai afficher en fonction du choix de l'utilisateur une ou plusieurs courbes issues des capteurs. Voilà le Vi que j'essai de faire mais dans la boucle for je n'arrive pas à faire la séparation des quatres voies. Pourriez-vous me donner quelques éléments pour réaliser ce que je veux faire. Merci d'avance.      
    Pièces jointes :
    Acq_Multi_Courbes.vi ‏82 KB

    Bonjour,
    Voici ton VI modifié pour l'affichage de plusieurs courbes.
    J'ai changé la facon dont tu construis le tableau afin qu'il prenne en compte le nombre de données dans le tableau.
    Ensuite, tu peux changer la conversion de tes données dynamiques (en sortie d'acquisition), ici tu les transforme en tableau 2D de doubles, or, si tu veux utiliser l'horodatage, il est préférable d'utiliser un tableau 1D de waveform, entrainant quelques légères moficiations à ton VI.
    Il est possible que tu sois obligé de réouvrir le VI express Assistant DAQ et refaire OK, car la carte que j'ai utilisé pour mes tests ne correspond pas à de l'acquisition de T°, il a donc changé quelques paramètres.
    Cordialement,
    Olivier L. | Certified LabVIEW Developer
    Pièces jointes :
    Acq_Multi_Courbes-3_mod.vi ‏78 KB

Maybe you are looking for

  • How do I convert AIFF song files in iTunes to ACC files to fit iPod?

    How do I convert AIFF song files in iTunes to ACC files to fit iPod? My AIFF files are appartently bigger per song than ACC files. How do I convert an AIFF song or playlist in iTunes to ACC files so they take up less room. Right now I can only fit 50

  • SP2010 Foundation Post Install issues on development workstation - Database and Services

    Just recently installed SP2010 Foundation for a development workstation.  Platform isWin7 X64 pro, SQL 2008 (Developer edition) (1) Looks like search has some configuration issues.  This is in the Windows event log The Execute method of job definitio

  • Re: my notebook doesn't display the red color

    I think I have the same or a similar problem.  I have a AMD A4-6210APU with radeon r3 graphics 1.8 ghz running 64 bit windows 8.1. Since updating the graphics driver last week I have noticed the colour red seems more pink or purple.  This is particul

  • Lost all my old email !!!

    Once I upgraded to Mountain Lion I lost all my old email , How

  • Replace text with wildcard in the middle

    I am looking to change several config file keys that have server names in the format  <server>server01</server> <server>server02</server> <server>server03</server> I would like to change all of the server tags to contain the same server, for example