Sortie 24V avec CompactDAQ et module NI 9472

Bonjour à tous,
Je travaille actuellement sur un projet où je dois utiliser un système qui est commandé électriquement et est constitué d’une valve sélectrice.
Ce système est actif tant qu'il est alimenté (tension de 24 Vcc) et je voudrais pouvoir contrôler ce système avec simplement l'appui d'un bouton dans mon interface Labview.
De plus, j'utilise un système CompactDAQ et différents modules pour l'acquisition des données des capteurs que j'ai, et je voudrais donc utiliser un de ces modules pour fournir cette tension de 24V.
Sur le site internet de NI, je n'ai pas trouvé de module de sortie analogique qui pourrait fournir une tension allant jusqu'à 24V et je me suis donc arrêté sur le module de sortie numérique NI 9472 que j'avais déjà de disponible et qui a une gamme de sortie maximale entre 6 et 30 V.
Pouvez-vous donc me dire si ce module pourrait convenir pour obtenir cette tension en sortie du CompactDAQ et vers mon système ? Sinon, quelqu'un aurait un autre module à me conseiller peut-être ?
C'est aussi le fait que ce module soit un module de sortie numérique plutôt qu'analogique qui me gène...
N'ayant pas encore accès aux capteurs de ma machine, je voudrais également savoir si il était possible dans un VI de simuler mes signaux de sortie de capteur (4 à 20 mA) afin de tester le fonctionnement de mon programme ?
Merci d'avance pour vos réponse !

Bonjour,
Merci pour votre dernière réponse, mais malgré tout je ne parviens pas à faire fonctionner mon VI que j'ai mis en fichier ci-joint. C'est en fait un sous-VI de mon programme principal.
Comme vous me l'avez indiqué, j'ai mis à l'intérieur d'une boucle "while" un bouton ON/OFF avec l'assistant DAQ que j'ai mis
en "sortie de port" sur le port 0 car c'est e seul choix qui m'est offert lorsque je le configure.
Bref, j'ai fait un montage rapide comme indiqué dans la documentation du module 9485 avec une source de tension CC 24V sur l'entrée 0 (CH0a) puis en sortie 1 (CH0b) j'ai connecté une résistance pour ma charge et ensuite je reviens vers la masse de mon alimentation pour fermer le circuit. J'ai également connecté un voltmètre en parallèle sur ma charge pour vérifier que la tension de 24V circule bien lors de l'activation du relai.
Cependant, comme vous verrez sur le VI ci-joint, je ne peux pas faire la liaison entre mon bouton poussoir et l'assistant DAQ car mon interrupteur est de type booléen et mon assistant DAQ doit recevoir un tableau 1D.
J'espère que vous pourrez m'indiquer une méthode pour arriver à avoir mes 24V en sortie, pourtant il me semble que ce n'est pas si difficile que ça et j'ai fait des choses beaucoup plus compliquées dans mes autres programmes...
Aussi, j'ai remarqué lorsque je rentre dans mon assistant DAQ pour le configurer et que j'appuie sur "exécuter", j'obtient bien mes 24V en sortie, ce qui indique que le relai s'est fermé, mais pour le réouvrir et retrouver une tension nulle, je dois appuyer sur "inverser toutes les lignes du port".
Merci d'avance pour votre réponse !
Pièces jointes :
Régénération_finale.vi ‏38 KB

Similar Messages

  • Sort up and sort Down push buttons in module pool with table control wizard

    hi,
    i have created 2 buttons for Sort up and sort Down push buttons in module pool with table control wizard
    please any one can help me.
    regards

    Hi
    Following code is to enable and disable the tbl control using two buttons. Just alter the code and for each button write the sort code.
    REPORT  YJAN27_SCREEN                                               .
    TABLES: SFLIGHT, YFLIGHT_28.
    TYPES: BEGIN OF struct1,
          carrid like sflight-carrid,
          connid like sflight-connid,
          fldate like sflight-fldate,
           END OF struct1.
    CONTROLS TBL1 TYPE TABLEVIEW USING SCREEN 2700.
    DATA: OK_CODE LIKE SY-UCOMM,
          CARRID LIKE SFLIGHT-CARRID,                                    "cols in tbl ctrl
          CONNID LIKE SFLIGHT-CONNID,
          FLDATE LIKE SFLIGHT-FLDATE,
          itab TYPE TABLE OF STRUCT1 WITH HEADER LINE,
          cols like line of TBL1-COLS,
          FLAG TYPE I.
    FLAG = 1.
    CALL SCREEN 2700.
    *&      Module  STATUS_2700  OUTPUT
    *       text
    MODULE STATUS_2700 OUTPUT.
      SET PF-STATUS 'BACK'.
    *  SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_2700  OUTPUT
    *&      Module  USER_COMMAND_2700  INPUT
    *       text
    MODULE USER_COMMAND_2700 INPUT.
    OK_CODE = SY-UCOMM.
    CASE OK_CODE.
      WHEN 'BACK'.
        LEAVE PROGRAM.
      WHEN 'DIS'.                                                         "write code for sort up
        loop AT TBL1-COLS INTO COLS.
           COLS-SCREEN-INPUT = 0.
            MODIFY TBL1-COLS FROM COLS.
        ENDLOOP.
        FLAG = 2.
      WHEN 'ENA'.                                                       "write code for sort down
        loop AT TBL1-COLS INTO COLS.
            COLS-SCREEN-INPUT = 1.
            MODIFY TBL1-COLS FROM COLS.
        ENDLOOP.
        FLAG = 1.
    ENDCASE.
    ENDMODULE.                 " USER_COMMAND_2700  INPUT
    *&      Module  GET_DATA  OUTPUT
    *       text
    MODULE GET_DATA OUTPUT.
      select carrid connid fldate from SFLIGHT into table itab.
    ENDMODULE.                 " GET_DATA  OUTPUT
    *&      Module  POPULATE_TBL  OUTPUT
    *       text
    MODULE POPULATE_TBL OUTPUT.
        MOVE-CORRESPONDING ITAB TO SFLIGHT.
    ENDMODULE.                 " POPULATE_TBL  OUTPUT
    *&      Module  CHANGE_SCREEN  OUTPUT
    *       text
    MODULE CHANGE_SCREEN OUTPUT.    " use this module if you want to hide the other button
    CASE FLAG.
      WHEN 1.
        LOOP AT SCREEN.
          IF SCREEN-NAME = 'B_ENA'.
            SCREEN-INVISIBLE = 1.
             MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
        LOOP AT SCREEN.
          IF SCREEN-NAME = 'B_DIS'.
            SCREEN-INVISIBLE = 0.
             MODIFY SCREEN.
          ENDIF.
       ENDLOOP.
      WHEN 2.
        LOOP AT SCREEN.
          IF SCREEN-NAME = 'B_DIS'.
            SCREEN-INVISIBLE = 1.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
        LOOP AT SCREEN.
          IF SCREEN-NAME = 'B_ENA'.
            SCREEN-INVISIBLE = 0.
             MODIFY SCREEN.
          ENDIF.
       ENDLOOP.
    ENDCASE.
    ENDMODULE.                 " CHANGE_SCREEN  OUTPUT
    PROCESS BEFORE OUTPUT.
    MODULE STATUS_2700.
    MODULE CHANGE_SCREEN.     " use this if you want to display one button at a time
    MODULE GET_DATA.
    loop at itab WITH control TBL1.
        MODULE POPULATE_TBL.       " populate tbl ctrl
    endloop.
    PROCESS AFTER INPUT.
    MODULE USER_COMMAND_2700.    " do the sort operations
    loop at itab.
      endloop.
    Hope this helps
    Regards,
    Jayanthi.K

  • Solution pour systeme d'acquisit​ion avec PCI 6321, NI 9375 et chassis cDAQ-9171

    Bonjour à tous,
    Je travaille actuellement sur un nouveau projet de système automatisé nécessitant la récupération d’information. J'ai un certain besoin a combler pour mon application et n'etant pas un expert dans le materiel NI, je prefere prendre vos avis et suggestions afin que ma solution soit la meilleure possible.  
    Il me faut donc en termes d'I/O :
    6  entrées pour 6 détecteurs inductif NO fonctionnant à 24V (trois fils pour chaque détecteur).
    3 entrées pour 3 détecteurs fins de courses NO fonctionnant à 24V.
    1 a 2 sorties PWM 0-5V.
    2 sorties logiques TTL (0-5V).
    2 sorties logiques 0-24V.
    2 sorties analogiques 0-10V avec 8 bits de résolution minimum.  
    Quelques I/O analogiques et digitales supplémentaires…
    Idéalement, j'aimerais alimenter mes 9 détecteurs (6 inductifs + 3 fins de courses) sous 24V directement depuis mes périphériques NI pour ne pas avoir à utiliser une autre source d’alimentation.
    Ma solution serait d'utiliser une carte PCIe 6321 pour les sorties PWM, TTL et analogiques 0-10V ainsi que pour les I/O analogiques et digitales supplémentaires. J’utilise Windows 7 avec LabVIEW 2012 pour faire l’acquisition des données.
    Pour les entrées et sorties 24V, je pencherais pour un module d'entrée/sortie numérique 24V tel que le NI 9375. J’ai choisi celui-ci car il comprend 32 I/O avec 16 entrées et 16 sorties. Je prendrais également le châssis cDAQ-9171 afin de pouvoir connecter mon module en USB avec mon ordinateur.
    Selon vous, est-ce que ma solution est viable et répond à mes attentes? Niveau qualité/prix je n'ai pas trouvé mieux! Mais je ne prétends pas être un expert et peut être que certains d'entre vous ont de meilleurs idées 
    Je vous remercie par avance.
    Maxime

    Bonjour,
    Auriez-vous un contact francophone pour le Canada et Montréal plus exactement?
    Merci.
    Maxime

  • Panneaux de métadonnées customisées XMP avec la CREATIVE CLOUD

    Bonjour à tous,
    Avant la CREATIVE CLOUD, nous avions l'habitude de créer des panneaux de métadonnées customisées pour l'industrie de la mode afin de gérer les nombreux fichiers graphiques (Illustrator, Photoshop, Indesign) permettant la création des modèles de vêtements, les plans de collection, les prints et Artwork, voir même les dossiers techniques dans indesign.
    A l'aide d'Adobe bridge, nous pouvions définir des processus de gestion des ressources numériques très efficaces, s'appuyant sur le tri, la classification, l'annotation de ces fichiers.
    Il était même possible en utilisant des mots clés, de récupérer les métadonnées en légende dans Indesign afin de produire très rapidement des documents synthétisant l'ensemble des informations essentielles de la collection.
    En matière d'édition, nous pouvions également exporter dans un PDF  ou un slide show, l'ensemble des fichiers d'une collection intelligente ou d'un filtre, via le module Output de Bridge (certes limité, mais quand même pratique, d'où l'incompréhension de nombreux utilisateurs qui ont vu ce module être retiré par défaut de Bridge CC, sans apporter d'alternative sérieuse).
    Nous notons toutefois que le module output peut être réinstallé dans bridge CC mais ne présente aucune évolution fonctionnelle (voir le lien ci-dessous) :
    Installation du module de sortie Adobe
    Avec l'arrivée de la CREATIVE CLOUD, la procédure de création des panneaux XMP a été modifiée par Adobe.
    En effet, avec les versions de la créative suite, il fallait utiliser Flash Builder pour créer des panneaux avancés de métadonnées (File info Dialog), ou alors un kit de fichiers fourni par Adobe se nommant GENERIC PANEL (fichier XML modifiable), permettant de créer des panneaux de métadonnées relativement simples.
    Cette méthode présentait toutefois des problèmes évoqués sur les forums, car souvent ces panneaux apparaissaient vides dans les logiciels de la CREATIVE SUITE.
    Malgré des explications plus ou moins hasardeuses des équipes techniques d'Adobe (création d'un fichier trust.cfg ou utilisation de la bonne version du SDK), beaucoup d'entre-nous n'ont jamais réellement su démystifier les caprices d'affichage des panneaux XMP utilisant la technologie flash.
    Désormais, avec la CREATIVE CLOUD, il faut utiliser le kit XMP Metadata UI SDK qui regroupe un ensemble de fichiers XML paramétrables.
    Théoriquement, nous n'avons donc plus besoin de passer par Flashbuilder pour créer des panneaux de métadonnées XMP.
    Malheureusement, Il semblerait que la migration des panneaux XMP créés dans les anciennes versions (CS5, CS6) avec Flashbuilder ne soit pas possible en l'état (sauf pour le Generic panel qui a été réalisé via un fichier XML et qui peut être converti via le Generic panel converter mis à disposition par Adobe)
    Avant de mettre la main dans le cambouis, j'aimerais donc savoir si :
    Quelqu'un d'entre-vous a déjà expérimenté la création de ces nouveaux panneaux XMP via le kit XMP Metadata UI SDK
    La procédure de création est plus simple
    Les possibilités offertes par Flashbuilder via de l'action script ont été conservées dans ces nouveaux panneaux( ex : possibilité de créer des listes de saisies filtrables en fonction des critères renseignées)
    L'affichage des nouveaux panneaux dans les outils Adobe se fait correctement
    Dans l'attente de votre retour d'expérience.
    Merci.
    Daté TETEGAN

    Bonjour,
    Peut-être pourriez-vous tout désisntaller de façon clean avec l'utilitaire Cleaner Tools : http://helpx.adobe.com/fr/creative-suite/kb/cs5-cleaner-tool-installation-problems.html
    Réinstaller suivant la configuration souhaitée.
    Creative Cloud, n'a pas besoin d'être installé spécifiquement sur le bureau.

  • 9472 Error 50808 with cDAQ-9172

    I am using the module NI-9472 (digital output) to switch a din-rail Relay with 24V DC that is switching a 3phase contactor, but am I getting the error 50808 when using this module with the cDAQ-9172 on slot 1.
    I have tryed the same application, with the same 9472 module with cDAQ-9171 and everything is working ok. The problem only pressists with the cDAQ-9172 and only when I connect the cables from the 9472 module to the relays. If these cables are disconected, I never get the error, and the module LEDs work just fine.
    I am also posting the VI I am using in order to get some help, maybe I should do this in other way.
    Thank you for the help.
    Attachments:
    error.jpg ‏92 KB
    Test 2.vi ‏50 KB

    Hello,
    DAQmx returns these errors after the host PC's USB controller reports a USB transaction error. 
    To recover from this state, you may use this : Programmatically Reset USB DAQ device in LabVIEW
    The underlying issue could come from the host controller, the device, or even the USB cable. Some host controllers are more susceptible than others to encountering these transaction errors.  It is recommended to double-check your USB cable and if necessary try the device on a different host controller.
    You could try a different USB host controller (PCI USB host controllers cost typically between 20 and 30 dollars).
    You'll find all these information in the following document : Why Do I Receive Error -50405 or Error -50808 Using an NI USB DAQ Device When Inserting or Removing ...
    FYI, a customer who met the same issue get the 9172 working by using an externally powered USB hub.
    Regards
    Jérémy C.
    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;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France

  • Ni9263 : 2 sorties de forme différentes

    Binjour, j'uitlise  le Ni cDAQ 9174  avec un module 9263. Je souhaiterais faire sortir 2 signaux différents. C'est à dire un sortie continue 5V et une sinusoidale 0-10V en pilotant la frequence..Tout ça en meme temps.
    Est ce possible? je n'y arrive pas. Mais je pense que ça doit etre tout bete.
    Merci beaucoup
    Mathieu

    Bonjour,
    Le module 9263 possède un convertisseur « digital vers analogique » pour chacune de ses 4 sorties analogiques, avec, en outre, un rafraîchissement des voies simultané. Il est donc possible de produire 2 signaux simultanés sur 2 sorties analogiques différentes.  En outre, la technologie du Compact DAQ 9174 est également adaptée à ce type de besoin. Vous pouvez donc piloter plusieurs sorties analogiques en même temps. Si vous souhaitez plus d’informations sur le Compact DAQ en question ainsi que sur la technologie de synchronisation et de cadencement qu’il contient, vous pouvez consulter les liens suivants :
    User Guide and Specifications NI cDAQ-9178/9174
    NI-STC3 Timing and Synchronization Technology
    Si vous souhaitez obtenir deux signaux en sortie d’une façon simple, vous pouvez générer vos signaux à l’intérieur d’une même tâche.
    Voici un petit exemple basé sur 2 waveformes (qui sont paramétrables, bien sûr) afin de vous aider dans la conception de votre VI.
    Le formalisme pour indiquer qu’on travaille sur deux voies physiques (par exemple sur la carte « Dev1 » en ao0 et ao1), mais dans la même tâche est le suivant :
    On déclare dans la commande Physical Channel Dev1/ao0 :n (pour utiliser toutes les vois de 0 à n) ou Dev1/ao0, Dev1/ao1 (pour utiliser les voies ao0 et ao1 seulement).
    Vous trouverez également plus d’exemples pour vous aider dans la recherche d’exemples LabVIEW, aux rubriques « E/S matérielles/DAQmx/Génération analogique/Tension ».
    J’espère que ces quelques éléments vous permettront de progresser dans la résolution de votre problème.
    Cordialement,
    Guillaume H.
    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;}
    >> NIDays 2011, le mardi 8 février au CNIT de Paris La Défense
    Pièces jointes :
    Support 2 sorties de forme différentes.png ‏39 KB

  • Sorting in ALV Report.

    Dear Experts,
    I mfacing a strange problem.
    I hv an internal table containing the required data in required sorted order.
    But when i call CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' function module,
    the sort order gets changed. I m not sorting internal table.
    The internal table is very much ok till i write statement  "CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'  ".
    I hv checked in dbugging mode, (if sy-subrc = 0 in the  above function module) the sort order getting changed only in the call of function module.
    Any suggestion.
    Regards,
    Maverick

    Hi,
    Define:IT_SORT TYPE SLIS_T_SORTINFO_ALV
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         I_CALLBACK_PROGRAM                 = w_repid
         I_CALLBACK_USER_COMMAND            = 'USER_COMMAND'
         I_CALLBACK_TOP_OF_PAGE             = 'TOP-OF-PAGE'
         IT_FIELDCAT                        = i_fcat[]
         I_SAVE                             = 'X'
          IT_SORT                           = it_sort
        TABLES
          T_OUTTAB                          = i_faglflexa_all
    *  EXCEPTIONS
    *    PROGRAM_ERROR                     = 1
    *    OTHERS                            = 2
      IF SY-SUBRC  0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Now in debugging if the sy-subrc = 0 then only the further process will take place.
    If sy-subrc is not zero then what is the point of sorting data as Th Function module have some error.
    So what  you are getting in debugging that is correct. Nothing is wrong.
    regards,
    Pravin
    Edited by: pravin s. on Mar 15, 2010 12:22 PM
    Edited by: pravin s. on Mar 15, 2010 12:25 PM

  • Memory and performance  when copying a sorted table to a standard table

    Hello,
    As you all probably know, it's not possible to use a sorted table as a tables parameter of a function module, but sometimes you want to use a sorted table in your function module for performance reasons, and at the end of the function module, you just copy it to a standard table to return to the calling program.
    The problem with this is that at that moment, the contents of the table is in memory twice, which could result in the well known STORAGE_PARAMETERS_WRONG_SET runtime exception.                                                                               
    I've been looking for ways to do this without using an excessive amount of memory and still being performant.  I tried four methods, all have their advantages and disadvantages, so I was hoping someone here could help me come up with the best way to do this.  Both memory and performance are an issue. 
    Requirements :
    - Memory usage must be as low as possible
    - Performance must be as high as possible
    - Method must work on all SAP versions from 4.6c and up
    So far I have tried 3 methods.
    I included a test report to this message, the output of this on my dev system is :
    Test report for memory usage of copying tables    
    table1[] = table2[]                                        
    Memory :    192,751  Kb                                    
    Runtime:    436,842            
    Loop using workarea (with delete from original table)      
    Memory :    196,797  Kb                                    
    Runtime:  1,312,839        
    Loop using field symbol (with delete from original table)  
    Memory :    196,766  Kb                                    
    Runtime:  1,295,009                                                                               
    The code of the program :
    I had some problems pasting the code here, so it can be found at [http://pastebin.com/f5e2848b5|http://pastebin.com/f5e2848b5]
    Thanks in advance for the help.
    Edited by: Dries Horions on Jun 19, 2009 1:23 PM
    Edited by: Dries Horions on Jun 19, 2009 1:39 PM
    Edited by: Dries Horions on Jun 19, 2009 1:40 PM
    Edited by: Dries Horions on Jun 19, 2009 1:40 PM

    I've had another idea:
    Create a RFC function like this (replace SOLI_TAB with your table types):
    FUNCTION Z_COPY_TABLE .
    *"*"Lokale Schnittstelle:
    *"  IMPORTING
    *"     VALUE(IT_IN) TYPE  SOLI_TAB
    *"  EXPORTING
    *"     VALUE(ET_OUT) TYPE  SOLI_TAB
    et_out[] = it_in[].
    ENDFUNCTION.
    and then try something like this in your program:
    DATA: gd_copy_done TYPE c LENGTH 1.
    DATA: gt_one TYPE soli_tab.
    DATA: gt_two TYPE soli_tab.
    PERFORM move_tables.
    FORM move_tables.
      CLEAR gd_copy_done.
      CALL FUNCTION 'Z_COPY_TABLE'
        STARTING NEW TASK 'ztest'
        PERFORMING copy_done ON END OF TASK
        EXPORTING
          it_in = gt_one[].
      CLEAR gt_one[].
      WAIT UNTIL gd_copy_done IS NOT INITIAL.
    ENDFORM.
    FORM copy_done USING ld_task TYPE clike.
      RECEIVE RESULTS FROM FUNCTION 'Z_COPY_TABLE'
       IMPORTING
         et_out        = gt_two[].
      gd_copy_done = 'X'.
    ENDFORM.
    Maybe this is a little bit faster than the Memory-Export?
    Edited by: Carsten Grafflage on Jul 20, 2009 11:06 AM

  • Sorting for loop

    Hi all...
    I using for loop to display student information and i want to sort the information (e.g. module code, name, admin no and etc) given in ascending and descending order. I use combo box to list and select the (information) to be sorted in either in ascending or decending order.
    But, how sld i code in the way that the result will change instance whenever i click the combo box ( e.g name) to be sorted in ascending order. Cos now, it only sort the last index, last student information and not all the student.
    Below is what i have done:
    String [] headerString = {"Module Group", "Tutorial Group", "Admin No", "Name"};
    //Create combo box
    JComboBox header = new JComboBox(headerString);
    header.setSelectedIndex(3);
    header.addActionListener(this);
    //Create the radio buttons
    ascendButton = new JRadioButton("Ascending", true);
    ascendButton.setMnemonic(KeyEvent.VK_UP);
    ascendButton.setSelected(true);
    descendButton = new JRadioButton("Descending", false);
    descendButton.setMnemonic(KeyEvent.VK_DOWN);
    //Register a listener for the radio buttons.
    ascendButton.addActionListener(this);
    descendButton.addActionListener(this);
    //Group the radio buttons
    group = new ButtonGroup();
    group.add(ascendButton);
    group.add(descendButton);
    buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
    buttonPanel.add(header);
    buttonPanel.add(ascendButton);
    buttonPanel.add(descendButton);
    class nameComparator implements Comparator
    public int compare(Object o1, Object o2)
    Vector one = (Vector)o1;
    Vector two = (Vector)o2;
    //the following line will return a negative value
    //if one is smaller in size than two
    //   return one - two;
    public boolean equals(Object obj)
    //don't know what to put it
    public void actionPerformed(ActionEvent event)
    System.out.println("Before" + v);
    if (ascendButton.isSelected())
    //Sort by natural order
    //Case-insensitive sort, ie. a, C, z
    Collections.sort(v, String.CASE_INSENSITIVE_ORDER);          
    else
    //Reverse-order sort
    Collections.sort(v, Collections.reverseOrder());
    list.setListData(v);
    //Reset the model used by the JComboBox after sorting the vector
    DefaultComboBoxModel model = new DefaultComboBoxModel(headerString);
    header.setModel(model);
    System.out.println("After" +  v);
    //reconstruct the vector and repaint again
    repaint();
    }

    Hi all, below is my coding. I still don't know how to start to sort my jlist. hope guys out there can give me some idea. Thanks.
    import java.awt.*;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.event.*;
    import java.io.*;
    import javax.swing.*;
    import javax.swing.text.*;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import java.util.*;
    import java.util.Vector.*;
    public class Display extends JFrame implements ActionListener{
      JButton editButton;
      JButton setButton;
      JComboBox header;
      JLabel imageLabel;
      JLabel acadYrLabel;
      JLabel semseterLabel;
      JLabel moduleCodeLabel;
      JLabel moduleGroupLabel;
      JLabel tutorialGroupLabel;
      JLabel admNoLabel;
      JLabel nameLabel;
      JPanel aPanel;
      JPanel imagePanel;
      JPanel soloPanel;
      JPanel buttonPanel;
      JPanel contentPanel;
      JPanel textFieldPanel;
      JRadioButton ascendButton;
      JRadioButton descendButton;
      JScrollPane infoPane;
      JScrollPane scrollPane;
      JTextField textField;
      JTextField moduleGroupField;
      JTextField tutorialGroup;
      JTextField adminNo;
      JTextField nameField;
      JTextField acadYrField;
       String[] headerString = {
          "Module Group", "Tutorial Group", "Admin No", "Name"};
       public Display()
        //Create combo box
        header = new JComboBox(headerString);
        header.setSelectedIndex(3);
        header.addActionListener(this);
        //Create the radio buttons
        ascendButton = new JRadioButton("Ascending", true);
        ascendButton.setMnemonic(KeyEvent.VK_UP);
        ascendButton.setSelected(true);
        descendButton = new JRadioButton("Descending", false);
        descendButton.setMnemonic(KeyEvent.VK_DOWN);
        //Register a listener for the radio buttons.
        ascendButton.addActionListener(this);
        descendButton.addActionListener(this);
        //Group the radio buttons
        ButtonGroup group = new ButtonGroup();
        group.add(ascendButton);
        group.add(descendButton);
        buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        //buttonPanel.setAlwaysOnTop(true);
        buttonPanel.add(header);
        buttonPanel.add(ascendButton);
        buttonPanel.add(descendButton);
        imagePanel = new JPanel(new GridLayout(10, 3));
        imagePanel.addComponentListener(new ComponentAdapter()
          public void componentResized(ComponentEvent e)
            JPanel p = (JPanel) e.getComponent();
         populate(50,60);
    public void populate(int length, int height)
        for (int i = 0; i <30; i++)
          soloPanel = new JPanel(new BorderLayout(0, 20)); //Specified gaps between components
          soloPanel.setPreferredSize(new Dimension(length, height+150));
          soloPanel.setBackground(Color.GRAY);
          //Create the text field and set it up
          acadYrField = new JTextField();
          acadYrField.setBackground(Color.GRAY);
          acadYrField.setColumns(20);
          acadYrField.setEditable(false);
          acadYrField.setText("2004");
          tutorialGroup = new JTextField();
          tutorialGroup.setBackground(Color.GRAY);
          tutorialGroup.setColumns(20);
          tutorialGroup.setEditable(false);
           tutorialGroup.setText("BM0539"+i+i);
          adminNo = new JTextField();
          adminNo.setBackground(Color.GRAY);
          adminNo.setColumns(20);
          adminNo.setEditable(false);
          adminNo.setText("012345X" + i);
          moduleGroupField = new JTextField();
          moduleGroupField.setBackground(Color.GRAY);
          moduleGroupField.setColumns(20);
          moduleGroupField.setEditable(false);
          moduleGroupField.setText("IT12345");
          nameField = new JTextField();
          nameField.setBackground(Color.GRAY);
          nameField.setColumns(20);
          nameField.setEditable(false);
          nameField.setText("Alex" + i);
          textFieldPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
          textFieldPanel.setBackground(Color.GRAY);
          textFieldPanel.setPreferredSize(new Dimension(235, 180));
          textFieldPanel.add(acadYrField);
          textFieldPanel.add(tutorialGroup);
          textFieldPanel.add(adminNo);
          textFieldPanel.add(moduleGroupField);
          textFieldPanel.add(nameField);
        infoPane = new JScrollPane(textFieldPanel,
                                   JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                                   JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        editButton = new JButton("Edit");
        editButton.addActionListener(this);
        //Create panel and add edit button to panel
        JPanel editPanel = new JPanel();
        editPanel.add(editButton);
        editPanel.setBackground(Color.GRAY);
        soloPanel.add(infoPane, BorderLayout.CENTER);
        soloPanel.add(editPanel, BorderLayout.SOUTH);
        imagePanel.add(soloPanel);
         public static void main(String[] args)
              Display d = new Display();
              d.createAndShowGUI();     
      public void createAndShowGUI()
        //Make sure we have nice window decorations
        JFrame.setDefaultLookAndFeelDecorated(true);
        JDialog.setDefaultLookAndFeelDecorated(true);
        //Create and set up the window
        JFrame frame = new JFrame("IABC");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        contentPanel = new JPanel(new BorderLayout());
        contentPanel.add(buttonPanel, BorderLayout.NORTH);
        contentPanel.add(imagePanel, BorderLayout.SOUTH);
        scrollPane = new JScrollPane(contentPanel);
        frame.setContentPane(scrollPane);
        frame.pack();
        frame.setSize(500, 300);
        frame.setLocation(350, 250);
        frame.setVisible(true);
       frame.setLocationRelativeTo(null);
      public void actionPerformed(ActionEvent event)
       if (ascendButton.isSelected())
           //Sort by natural order
               //Case-insensitive sort, ie. a, C, z
                 if (header.getSelectedIndex() == 0)
            Collections.sort(v, new myComparator());
      else
           //Reverse-order sort
               Collections.sort(v, Collections.reverseOrder());
        list.setListData(v);
        //Reset the model used by the JComboBox after sorting the vector
        DefaultComboBoxModel model = new DefaultComboBoxModel(headerString);
        header.setModel(model);
        System.out.println("After" + v);
        //reconstruct the vector n repaint again
        repaint();
      class myComparator implements Comparator
            public int compare(Object o1, Object o2)
                         String one = (String)o1;
             String two = (String)o2;
             return one.compareTo(two);             
    }

  • Erreur de communication avec fieldpoint

    Je possède un FP1600 qui commande un FPAI110, un FPRLY420, un FPAOCO20, et deux FPDODC60.
    Mon programme est réalisé avec Labview 6.0, j'utilise Fieldpoint Explorer 2.0 et la version du firmware de mon FP1600 est la 3.02.
    Après plusieurs heures de fonctionnement sans problèmes, la fonction FP read me renvois Error 33162 .
    A ce moment il devient impossible de communiquer avec aucun des modules du banc fieldpoint, la fermeture puis l'ouverture de la connexion n'a aucun effet.
    La seule façon de reprendre la main sur Fieldpoint est de couper l'alimentation du module de commande FP1600, puis de la rétablir.

    Nous avons déja eu ce problème avec un controlleur FP-1600. Il semble que ces controlleurs sont très sensible au bruit. La meilleur solution c'est de changer les FP1600 pour des FP2000, depuis ce temps nous n'avons jamais eu de problème !!!
    Nous avons eu des discussions avec les gens de NI et il ont dit qu'ils avaient trouvé un problème. Ce problème devrait être réglé sur les controlleurs FP2000.
    Si la solution de rechange n'est pas une option pour toi tu peux faire des recherches sur le site de NI je crois qu'il en parle un peu. Tu peux aussi approcher un représentent NI pour obtenir un démo de FP2000 pour vérifié si il tient la route avec ton système.

  • RS232 fonctionne avec MAX mais pas depuis Labview

    Bonjour, 
    Je dois communiquer en RS232 avec un Xmodus1200 (module GSM). 
    J'arrive à communiquer et à piloter mon module sans problème depuis MAX mais dès que j'essaie depuis LABVIEW, je ne recois qu'une partie du message.
    Le problème provient plus que probablement d'un problème de config différente entre les deux mais je tourne en rond sans trouver la solution.
    Je joins en annexe les captures d'écran de la config MAX et de l'écran "INPUT/OUTPUT" et également les écrans Labview.
    Merci d'avance 
    Nicolas
    Pièces jointes :
    Screen.docx ‏437 KB

    Bonjour,
    Sous Labview, pour savoir le nombre d'octet à lire vous utilisez la fonction qui permet de savoir combien d'octets sont dans le buffer. Hors au moment d'utiliser cette fonction, il est possible que la trame ne soit pas encore entièrement dans le buffer de lecture. La fonction "lire le port série" ne va donc pas lire toute la réponse.
    Si la taille de votre trame est connue à l'avance, vous pouvez mettre en entrée de la fonction 'lire le port série" le nombre d'octet à lire.
    Cordialement;,

  • Synchronis​ation acquisitio​n sortie ttl

    Je n'arrive pas à synchroniser le déclenchement de mon appareil (déclenché à partir d’une sortie compteur +5V que je récupère via le SCXI-1180) avec le début de mes acquisitions (sur voie analogiques). Je voudrais le faire de manière la plus précise possible (à la mili seconde près).
    Pour cela j’ai mis dans une boucle séquence mon sous VI de création de l’impulsion sur une sortie compteur à +5V avec le sous VI AI START. Mais la synchronisation n’est pas parfaite et en plus je reçois un message d’erreur : Aucun transfert en
    cours pour la ressource spécifiée.
    Attachments:
    Programme.JPG ‏151 KB

    Bonjour,
    Vous voulez synchroniser la génération d'un pulse sur une sortie compteur avec une acquisition analogique bufférisée finie.
    Pour plus de précision, la meilleure méthode est de déclencher l'acquisition analogique sur un trigger numérique externe.
    Ce signal numérique de trigger corespondra à votre sortie compteur ce qui permettra d'avoir une parfaite synchronisation entre les 2 tâches.
    Concrètement, si vous avez une carte DAQ MIO Serie E ou S utilisant le chip DAQ-STC, vous pouvez relier la sortie du compteur "OUT X" à l'entrée "PFIO" (= AI Start Trigger).
    Les exemples LabVIEW à utiliser sont:
    * Acquire N Scans Digital Trigger.vi
    * Generate Single Pulse.vi
    Bonne continuation.
    Matthieu Gourssies
    National Instruments

  • Acquerir le signal en creneau d'un capteur de debit (pulse 24v)

    Bonjour,
    Comment faire 'acquisition de mon capteur de debit (impulsion de 24v) avec le NI 9411?
    Merci d'avance 

    Bonjour,
    Quelle est le signal reçu par ce capteur ?  Comment interpréter un résultat en mesurant celui-ci ? Est-ce un rapport cyclique qui varie, une période, une phase ?
    Vous trouverez plusieurs exemples dans LabVIEW  » Aide » Outils de recherche d'exemples.
    Cordialement,
    Message Edité par Maxime MULLER le 05-11-2010 08:53 AM

  • Demande aide pour LabVIEW

    Bonjour tout les monde !
    Je suis actuellement en BTS électrotechnique et j'ai besoin de votre aide pour LabVIEW.
    C'est la première fois que je l'utilise.
    Le matériel :
    Un automate cRIO-9073.
    Des modules NI 9217,9203,9403,9476.
    Un PC avec LabVIEW
    But de mon projet:
    Élaborer avec LabVIEW un programme test pour chaque module.
    (Je dois faire des programmes qui testent chaque entrées,sorties ou voies de ces modules pour voir si ils fonctionnent bien)
    Problèmes rencontrés:
    Je ne comprend pas à quoi sert la fonction "TIME LOOP" et je ne sais pas comment la configurer (en effet je l'ai insérer mais le prof m'a dit que je devais la configurer)
    Aussi je ne sais pas comment configurer mes modules dans "l'exploreur de projet" (je pensais que le module se configurais automatiquement) 
    Par exemple ma carte NI 9217 collecte les informations de 4 sondes PT100, donc j'ai fait le programme mais mon prof m'a dit que je devais configurer le module dans l'explorateur de projet et que je devais configurer le TIME LOOP.
    Merci d'avance pour vos réponses.
    Cordialement,
    L'ETUDIANT

    Bonjour L'ETUDIANT,
    Pour donner quelques pistes :
    - J'imagine que tu parles des boucles cadencées (Timed Loop). Ces boucles se configurent en double-cliquant sur l'entête de la boucle en haut à gauche. Tu pourras ainsi fixer le cadencement de ta boucle, mais aussi sa priorité entre autres. Ces boucles sont largement utilisés dans les VIs Temps Réel car elles permettent de mieux maitriser l'exécution.
    - Les module se configurent effectivement dans ta fenêtre de projet. Une fois ton cRIO ajouté au projet, tu as la possibilité de "découvrir" tes modules. Une fois ceci effectué, tu auras accès à tous les modules connectés sur ton cRIO, et leurs propriétés pourront être modifiées.
    Un petit tour sur ce tuto pourra probablement t'aider.
    Cordialement,
    Eric M. - Application Engineering Specialist
    Certified LabVIEW Architect
    Certified LabWindows™/CVI Developer

  • Daqmx enregistrer des taches numériques et analogiques

    Bonjour,
    Sur labview depuis peu après avoir utilisé signal express pendant pas mal de temps, je tente de réaliser une application permettant de visualiser et d'enregistrer dans mesures analogiques et numériques.
    Je dispose d'un Ni cDAQ-9174 avec différents modules (thermocouples, mesures de tensions, mesures numériques...).
    En ce qui concerne l'affichage des courbes et le paramètrage, je m'en suis sorti, par contre en ce qui concerne l'enregistrement dans un fichier TDMS, je rencontre des soucis.
    Je souhaiterais enregistrer ma tache analogique et ma tache numérique, ainsi que l'horodatage, mais je n'arrive pas à cumuluer les taches, ni à mettre l'horodatage, et je ne peux pas lancer plusieurs fois le vi daqmx - configurer l'enregistrement...
    J'ai essayé beaucoup de combinaisons, mais rien ne semble fonctionner.
    Si vous avez un exemple pouvant m'aider, ou une aide à m'apporter, je vous en remercie d'avance.
    Je vous joins une version de mon vi faisant uniquement l'enregistrement de la partie analogique.
    Cordialement,
    Jon
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Mesure Thermocouple v1.vi ‏101 KB

    En fait avec l'assistant DAQ je ne peux configurer l'enregistrement, à moins que je ne me trompe ?
    J'ai commencé par utiliser l'assistant avant de reprendre des exemples pour utiliser ce dont j'ai besoin.
    Actuellement j'essaye d'utiliser d'autres fonctions, comme la fonction "Exporter des waveforms vers un fichier tableur (1D)" mais je ne trouve pas d'exemple là dessus...
    J'arrive à récupérer les mesures que je fais, mais j'ai un décalage entre mes mesures analogiques et numériques, l'horodatage est faux, et j'ai des blancs dans le fichier excel ainsi créé.
    Je joins le vi version 2012, peut être quelqu'un aura-t-il un exemple pour m'aider à avancer sur cette version ?
    Merci d'avance.
    Jon
    Pièces jointes :
    Mesure Thermocouple v2.vi ‏85 KB

Maybe you are looking for

  • I keep getting the error message on my MP510, the type of printhead is incorrect install the correct

      Recently my printer stopped printing black, although it would print the other colors. When I tried to print a print pattern, it would not print the checkered pattern it used to print to check the alignment. I tried cleaning, to no avail. Then I got

  • MIME Multipart/related to embed images in html files - Servlet

    Hello, My goal is to embed images in html/xhtml files to decrease latency when using slow networks. Think about mobile phones, if I have 10 images in one page, I will have 11 requests/responses to get the whole page. The solution would be to embed al

  • Flash video presentations

    I've put together a number of multi-screen flash presentations using stills and flash transitions and effect but I have a 3-screen display to do which features full screen video on each screen. I suppose the question is: Is Flash a viable way to deli

  • [solved] Wine OpenGL Drivers

    Hello Since I updated my Wine long time ago, 3D applications won't start. Wine gives this output http://pastebin.com/whccHcRx but my nvidia driver is installed correctly http://pastebin.com/FAcCa8hK Is it an 64 bit issue? I am using Arch 64 Bit and b

  • Preloaders in external .swf not working

    Hi people. I have built this website to showcase our work http://www.perfectmarketing.co.uk All the movie clips shown in the centre of the screen are external .swfs with their own preloader. But when the site is live, the preloaders don't seem to be