Single trigger output pulse each iteration

I want to output a trigger pulse, record two analog inputs, and save the data to a text file.  When I do this for one iteration it works fine, but multiple iterations only acquire and save, the output pulse is only generated on the first iteration.  I am using a counter pulse output to generate the signal. How can I fix this issue?

Hi there,
What kind of board are you using? Are you saving data to the file on every iteration? Depending on your application, it might be advisable to save all data to a file after you are done with your application. Can you post your code so that we can look at it?
Regards,
Efrain G.
National Instruments
Visit http://www.ni.com/gettingstarted/ for step-by-step help in setting up your system.

Similar Messages

  • How to take a single data point for each trigger pulse ( synchronou​s acquisitio​n).

     hi
              im using the pci-mio-16E1 card, with the IDE VC++, so  im looking for an example to explicate me how to make an synchronous acquisition data using an external timing, so the idea is to acquire (take) a single data point for each trigger pulse  from one  input channel ,and saving  the data in a file .
    now im making a code using the AI_setup and DAQ_op functions, im getting  a speed acquisition (it is the start of acquisition data), and  it is  a synchronous acquisition just for one trigger pulse, and me i looking for an acquisition for each trigger pulse. 
      so to  understand my problem you can see my code :
    iStatus = Timeout_Config(iDevice, lTimeout);
             iRetVal = NIDAQErrorHandler(iStatus, "Timeout_Config", iIgnoreWarning);
       //  configuration and selection of  signal trigger  
             iStatus = Configure_HW_Analog_Trigger(iDevice, ND_ON, iLowValue,iHighValue, ND_ABOVE_HIGH_LEVEL, ND_THE_AI_CHANNEL);
            iRetVal = NIDAQErrorHandler(iStatus, "Configure_HW_Analog_Trigger", iIgnoreWarning);
      iStatus = Select_Signal(iDevice, ND_IN_CONVERT, ND_PFI_2,ND_HIGH_TO_LOW);
             iRetVal = NIDAQErrorHandler(iStatus, "Select_Signal", iIgnoreWarning);
        iStatus = AI_Setup(iDevice, iChannel, iGain);
       iRetVal = NIDAQErrorHandler(iStatus, "AI_Setup", iIgnoreWarning);
       while ((iReadingAvail != 1) && (iStatus == 0)) {
     /* Wait until reading is available. */
             iStatus = AI_Check(iDevice, &iReadingAvail, &iReading);
            iRetVal = NIDAQYield(iYieldON);
           //  Acquire data from a single channel 
        iStatus = DAQ_Op (iDevice, iChannel, iGain, piBuffer, ulCount, dSampRate);
       while ((iDAQstopped != 1) && (iStatus == 0)) {
            iStatus = DAQ_Check(iDevice, &iDAQstopped, &ulRetrieved);
            iRetVal = NIDAQYield(iYieldON);
           iStatus = DAQ_VScale(iDevice, iChannel, iGain, dGainAdjust, dOffset,ulCount, piBuffer, pdVoltBuffer);
          iRetVal = NIDAQErrorHandler(iStatus, "DAQ_VScale",iIgnoreWarning);
       /* Set analog trigger mode back to initial state. */
           iStatus = Configure_HW_Analog_Trigger(iDevice, ND_OFF, iLowValue,iHighValue, ND_ABOVE_HIGH_LEVEL, ND_THE_AI_CHANNEL);
      /* Set PFI line back to initial state. */
           iStatus = Select_Signal(iDevice, ND_IN_START_TRIGGER,ND_AUTOMATIC, ND_DONT_CARE);
              iStatus = DAQ_Clear(iDevice);
     /* Plot acquired data  */
          iRetVal = NIDAQPlotWaveform(pdVoltBuffer,ulCount, WFM_DATA_F64);
    so this is the data acquired -0.900879,-0.900879,-0.900879,-0.900879,-0.900879,​-0.900879,-0.900879,-0.900879 and i think that is a noise because all time i get this data.
    tank you very mutch fo your help

    Hello,
    Please see the responses to this thread at the following post.
    http://forums.ni.com/ni/board/message?board.id=250​&message.id=13686
    Also, please only post one thread per issue.
    Regards,
    Sean C.

  • Acquire single analog point on each pulse

    Hi,
    I have a query on what i hope is a simple application. Im using a PCI-6220 card and what I would like to do is aquire a single data point which is to be triggered by a digital pulse. The pulse will come from an encoder, and what I would like to do is aquire a single analog data point each time the encoder channel pulse goes high (retriggerable daq?)
    Which would be the best way to approach this?
    Thanks,
    David

    David,
    this is easily done by importing your encoder-signal as external clock for your AI (which is either finite or continuous then!)
    hope this helps,
    Norbert
    [EDIT]: This will work out directly if the encoder creates CMOS/TTL pulses. If it doesn't, you should consider some kind of signalconditioning for your encodersignal
    Message Edited by Norbert B on 11-19-2007 03:41 AM
    CEO: What exactly is stopping us from doing this?
    Expert: Geometry
    Marketing Manager: Just ignore it.

  • Create 4 digital output pulses base on input ttl signal

    Hi
        I am a beginner in Labview and would appreciate any advice on how to solve the following problem.
    I am creating a TTL pulse train, and would like to send that into Labview as input.  For every falling edge detected on the input signal, I'd like Labview to generate 4 digital output pulses.  For each output pulse, I'd like to be able to specify the delay, and duration.       The picture should illustrate it more clearly, with the numbers showing the intended order of magnitude.
    System:  NI PCI-6733 DAQ card, Labview 8.5
    My daq card has 2 24-bit timers, and 8 digital I/O but I don't know what the best approach is for creating between 4-8 output pulses of this precision..should it be handled in hardware, or in software?  And how would I go about it
    Thanks,
    -Sidney
    NI Hardware: PXI-7853R, PCI-5122, PCI-6733, PXI-1036, PCI-MIO-16E-4, PCI-6110
    Computer Hardware: Xeon Quad Core - 2.33 Ghz, 8 GB RAM
    Software: Labview 2009, Labview FPGA 2009, Vista 64-bit, MAX 4.6, DAQmx 9.0, NI-SCOPE 3.5
    Solved!
    Go to Solution.

     Hi Yann,
       Wow, thank you so much for this example!  I'm trying to take a look at it, but when I run it.. it responds with the following error message
    Error -200452 occurred at Property Node DAQmx Trigger (arg 1) in DAQmx Start Trigger (Digital Edge).vi:1->reprise-1.vi
    Possible reason(s):
    Measurements: Specified property is not supported by the device or is not applicable to the task.
    Property: Start.TrigType
    Task Name: _unnamedTask<49>
    This is strange too, because ive already used the Digital Edge Start trigger for a different application with this card.
    -Sidney
    NI Hardware: PXI-7853R, PCI-5122, PCI-6733, PXI-1036, PCI-MIO-16E-4, PCI-6110
    Computer Hardware: Xeon Quad Core - 2.33 Ghz, 8 GB RAM
    Software: Labview 2009, Labview FPGA 2009, Vista 64-bit, MAX 4.6, DAQmx 9.0, NI-SCOPE 3.5

  • What is the maximum number of samples that can be acquired with a single trigger using PCI-6036E DAQ card?

    1. My PCI-6036E card has a FIFO of 1024 bytes in AI. Maximum how many samples can be acquired with single trigger for digitizing a waveform?
    2. PCI-6036E DAQ card has got a AO with 10ks/s update rate? Can I generate a pulsed output with the AO of this card? I need a pulse of, say, 5 V and 1 kHz frequency.

    Giri,
    1.The trigger is usually for enabling the acquisition. I mean, when it is logic zero, you acquire nothing; however, when it is logic one, you start acquiring your waveform,and you can acquire continuously without having to worry about how many samples, unless you want to set your program for doing so. You can acquire continuously by implementing buffer acquisition. Finally, the FIFO that is in the board will not affect the buffer acquisition.
    2.Yes, you can do that! You can generate your 5V signal with that specific frequency, and you should not have any problems, because the freq fits in the update rate.
    I hope this information is helpful.
    L Aguila
    Applications Engineer
    National Instruments

  • Oracle query - Merging multiple rows into a single row output

    Hi All,
    I have to have a multiple row output to be converted into a single row output.My current output looks as follows:
    ID YR INC_CODE OFFN SCHOOLNO
    8006 2002 00175 SC03 12
    8006 2002 00175 DC06 12
    8006 2002 00175 DC03 12
    8006 2002 00175 DC02 12
    ID,INCIDENT CODE,OFFENSE are all Primary keys
    So I need the output as follows:(IN ONE ROW)
    ID YR INC_CODE OFFN1 OFFN2 OFFN3 OFFN4 SCHOOLNO
    8006 2002 00175 SC03 DC06 DC03 DC02 12
    Can you help me on this since have been spinning the wheel and this has to be a query since will have couple of tables join to produce a materialized view.
    Thanks in advance

    Hi Nigel,
    Thanks for the reply I tested out the portion having the decode and I get the output as follows:
    ID YR INC_CODE OFFN1 OFFN2 OFFN3 OFFN4 OFFN5
    8982 2002 2175 DOC01 -----------------------
    8982 2002 2175 DOC02-------------------
    8982 2002 2175 DOC03------------
    8982 2002 2175 DOC06-------
    8982 2002 2175 SCV03
    There is no value as max for OFFN and each INC_CODE MAY HAVE UP TO A MAX OF 5 OFFN.My query is as follows:
    select distinct STU_STUDENT_ID, INC_BEG_SCH_YR,INC_INCIDENT_CODE
    , decode(rank() over (partition by INC_CODE order by OFFN),1,OFFN,null) as offn1
    , decode(rank() over (partition by INC_CODE order by OFFN),2,OFFN,null) as offn2
    , decode(rank() over (partition by INC_CODE order by OFFN),3,OFFN,null) as offn3
    , decode(rank() over (partition by INC_CODE order by OFFN),4,OFFN,null) as offn4
    , decode(rank() over (partition by INC_CODE order by OFFN),5,OFFN,null) as offn5
    from stu_offn where
    stu_offn.ID = '8982' and stu_offn.INC_CODE = '2175'
    (****Where clause is just given to just check a value)
    So as you know I need to just have all the OFFN in a single row ie as follows:
    ID YR INC_CODE OFFN1 OFFN2 OFFN3 OFFN4 OFFN5
    8982 2002 2175 DOC01 DOC02 DOC03 DOC06 SCV03
    Can you just give me a step by step procedure to go through this and the table in this case is just 'STU_OFFN'
    Thanks for the earlier reply appreciate it!
    ****Sending this again to show the exact way the output is coming

  • Writing bytes to serial port in each iteration of loop

    Hello everyone,
                      Well I am new to labview, my question might of beginner's level but i have searched the forums and didnt find content regarding it. Kindly help me through it as i am really stuck in it for last three days. 
                      I have to make a packet of bytes in each iteration depending upon the bytes i get from array which is input to for loop. Taking five bytes and then making packet according to protocol. Once packet is made i have to send it to serial port in the same iteration. So for each iteration i have to send packet to serial port. I have tried the shift registers, local variables, and also the autoindexing which returns the array at the end of loop. But these things dont solve my problem. Kindly help me solvng this issue.
    Many many thanks in advance
    Engr. Yasir Amin 

    First of all thanks alot for your reply.
                             The problem is that i have made separate subVI for this protocol stuffing and the output of that subVI is attatched to the serial visa write in another main  VI in which i am using this VI. I have sent parameters to subVI which makes the packet and then send the output, the output is then sent to visa serial write. Actually that visa serial write is common to many subVIs, On the interface its user's choice to select the request he wants to send. The based on the request the particular subVI is chosen and then that subVI generates the string which is in main VI. which is written to serial port. All other subVis are working fine becoz they dont have loop they simply make the string and send it to port. But this subVi with the loop has the problem as it sends only the last iteration string to port.
    I cant post the code as i am using my laptop in my room and the code is in office laptop But tomorrow i can share it from office
    Thanks
    Yasir

  • Appended text file in loop adds unwanted delimiter value at end of each iteration.

    I am using 'Export To Spreadsheet.vi' in a loop which saves a text file and appends data from a 1D array waveform for each iteration. My problem is that at the end of every iteration an extra delimiter value is appended to the file. When I then attempt to graph my data, I get gaps, as seen below (circled in black).
    When I start to analyze the data, I'm sure this will be a nuisance. I can not seem to find a solution to this problem. Any advise would be greatly appreciated. 
    Thanks.
    Solved!
    Go to Solution.

    Export Waveforms... does indeed place an end of line at the end of the last line, resulting in a gap when the next batch of data is appended.  I just had the same problem with a VI that a co-worker had written.
    The fix is non-trivial. First, make a copy of the Vi to a new location and with a modified name. (If you change a VI in vi.lib, it causes all kinds of problems.)
    Then go in and place string indicators various places until you find where the extra EOL characters are. The output of Array to Spreadsheet String ends with EOL.  I do not have all the other changes readily accessible.  I think we also changed the time format because the default setting lost resolution.
    That VI opens, writes, and closes the file on every call so this is not very efficient for frequent calls.
    It would almost be easier to write a Waveform to String formatting VI which does what you want and then use the standard OpenCreate/Replace File, Write to Text File, and Close File functions.
    Lynn

  • With single trigger, I want to acquire two channel in sequence

    I wanted to observe the sequence of  effects on more than two channels with respect to a single trigger input. And also I wanted to measure each channels with different " number of samples". For example Firstt channel with 10 samples and second with 500 samples. How I can implement this on PCI 6034 and USB 6008 DAQs 

    The 6008 has only very basic functionality.
    I would say to achieve the results you want you will need to add multiple channels to a single task, all at the same rate, and only extract the data you need.
    That way all channels will be synchronized.
    I don't think the 6008 can even do correlated digital-analog I/O or trigger off an input channel.
    I don't have any experience with the PCI 6034, but if you only need 500 samples then the method I mentioned above should work regardless.
    Troy
    CLDEach snowflake in an avalanche pleads not guilty. - Stanislaw J. Lec
    I haven't failed, I've found 10,000 ways that don't work - Thomas Edison
    Beware of the man who won't be bothered with details. - William Feather
    The greatest of faults is to be conscious of none. - Thomas Carlyle

  • How to make an checkbox editable and uneditable within a single alv output.

    Hi,
    How to make an checkbox editable and uneditable within a single alv output depending on condition.
    I have used Reuse_alv_grid_display.
    In my output every checkbox is editable. i have used edit = 'X'.
    I want editable checkbox for correct value and uneditable checkbox for incorrect value in a single alv

    >
    Mukilansap wrote:
    > I want editable checkbox for correct value and uneditable checkbox for incorrect value in a single alv
    Use alv styles to achieve this, set the style for each record before displaying the ALV. Structure LVC_S_STYL.
    Take a look at the example BCALV_EDIT_02, it is OOPS based, but check how the style table is filled.
    regards,
    Advait

  • Multiple strings input to single string output

    Dear all,
    this program is needed for my demo simulation purposes, I'm creating several string inputs to show into a single string output updating (input strings are shown in each line). i attached the picture below, put 2 output strings w/c both doesn't meet my desired result:
    1.) 1st string output - replace the old string w/ new string. what i need is to maintain also the previous strings. the new string will go to the next line.
    2.) 2nd string output - although i got all the strings i needed, it only appears right after the while loop terminates, so i did not see the string inputs updating.
    i'm using LV 8.5.1., any help is appreciated... posting your correct code will be more appreciated.
    thanks in advance...
    Ivel R. | CLAD
    Solved!
    Go to Solution.

    here's my code for anyone to see the actual difference.
    thanks,
    Ivel R. | CLAD
    Attachments:
    update strings.vi ‏14 KB

  • PXI 5422 Trigger output control

    How can the trigger output of the Digital Data and Control be controlled?
    Can it produce either a trigger pulse or digital value change on one of the PFI outputs through software instead of just at the start of the generation?

    Hi,
    Could you explain a little more about your application and what you are trying to achive,  as well as what events you want your trigger to be output on?  What is this tigger going to be driving?
    Thanks
    Matt Surridge
    National Instruments

  • GPTR doesn't output pulses

    I'm controlling GPCTR0 on a PCI-6035E card with software (Labwindows) that has it send out a single logic pulse. In the past month, the counter has gone from working fine, to outputting pulses of about .1V, to not pulsing at all. I've tried switching to counter 1, to no avail. I've also run the online diagnostic on the PCI card, and it passes alll of the tests. What's going on?

    perhaps your VI may be corrupt. If it passes all the diagnostics and the other counter does the same, it is most likely a software problem. Perhaps your VI may be corrupted or something in the code is wrong. I think it would be helpful to see the code you are using to generate this pulse.
    Derek

  • Counte CMOS output pulse

    Hello,
    I'd like to know whether there are any couters which can count CMOS output pulse.
    The rating of CMOS pulse are:
    Output pulse: CMOS 5V
    Output pulse width: 10 ns
    (It is actually output from Hamamatsu C9744 photon counting unit)
    I have some PCI cards (6014 and 6110), but their counter logic is TTL, not CMOS.
    When the CMOS output is connected to a counter of these cards, the counter number
    increased, but this may not be a correct counting.
    If you have a good idea to count with NI products, please let me know.
    Thank you for your time and kind help.
    Hiro
    Solved!
    Go to Solution.

    Hey Hiro,
    The bottom line is that a TTL counter will be able to read from CMOS input, but not the other way around. Therefore, you are OK. This is mentioned in the last line of this link: http://digital.ni.com/public.nsf/allkb/5AB6172CAE2BEF3E8625629800597B3F?OpenDocument
    An explanation of the voltage thresholds associated with each standard can be found in the graph in this link:http://www.interfacebus.com/voltage_threshold.html
    The counters on your devices fall under TTL/CMOS standards, which can count a CMOS pulse input. Some general information about each standard can be found at this link: http://digital.ni.com/public.nsf/allkb/2D038D3AE1C35011862565A8005C5C63?OpenDocument
    Regards,
    Jeff L.
    Applications Engineer | National Instruments

  • Query update on each iteration problem (MS SQL Sever / ODBC / Native Driver

    Hello,
    I�ve been working to learn some Java and now JDBC over the past 10 or so months.
    I think I have a general understanding of how to perform queries and work with data using JDBC. However, I�ve run into a problem. I�m trying to do a query of a set of data in a database based on the value of a status column. I want to loop over the messages and perform various functions with the data then update their status in the database. It�s preferable to do these 250 to 1000 rows at a time, but no more and no less.
    I�m connecting to MS SQL Server 2000, currently with ODBC. I�ve also tried it with the Java SQL Server 2000 drivers provided by Microsoft with the same results.
    I�ve found that I can do a one table query and loop though it with a while (rs.next()) {�} and run an Update statement with executeUpdate on each iteration without any problems, no matter the number of rows returned in query.
    I have not been able to use the updateString and updateRow inside the while loop. I keep getting errors like this at the line with the updateRow():
    Exception in thread "main" java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Row update failed.
    This occurs no mater how many rows I select, 1 or more.
    The real problem I�ve been having is that the query I need to loop though joins across several tables and returns some rows from some of those tables. This only seems to work when I query for 38 or less selected rows and I use an Update statement with executeUpdate on each iteration. The updateString and updateRow methods never work. Any number of rows selected greater than 38 causes a deadlock where the Update is waiting for the select to compete on the server and the Update can�t proceed until the Select is complete.
    As I stated above I�ve tried both ODBC and the native SQL Server driver with the same results. I have not tried any other databases, but that�s moot as my data is already in MS SQL.
    Questions:
    How can I avoid or get around this 38 row limit without selecting each row, one at a time?
    What am I doing wrong with the updateString and updateRow?
    Is there a better approach that anyone can suggest?
    Here�s some sample code with the problem:
    import java.sql.*;
    public class db1{
         public static void main(String[] args) throws Exception{
              Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
              String url = "jdbc:odbc:eBrochure_live";
              Connection con = DriverManager.getConnection(url, "sa", "d3v3l0p");
              Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
              Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://dcm613u2\\dcm613u2_dev:1433", "sa", "d3v3l0p");
              Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
              Statement stmt2 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
              stmt.executeUpdate("USE [myDatabase]");
              stmt2.executeUpdate("USE [myDatabase]");
              String qGetMessages = "SELECT TOP 250 t1.messageUUID, t1.subjectHeader, t2.emailAddress as toAddress " +
              "FROM APP_Messages as t1 JOIN APP_addressBook_contacts as t2 " +
              "     On t1.toContactID = t2.contactID " +
              "WHERE t1.statusID = 'queued'";
              ResultSet rs = stmt.executeQuery(qGetMessages);
              while (rs.next()) {
                   String messageUUID = rs.getString("messageUUID");
                   String subjectHeader = rs.getString("subjectHeader");
                   System.out.println(messageUUID + " " + subjectHeader);
                   String updateString = "UPDATE APP_Messages " +
                        "SET statusID = 'sent' " +
                        "WHERE messageUUID = '" + messageUUID + "' ";
                   stmt2.executeUpdate(updateString);
              con.close();
    Thanks for the help,
    Doug Hughes

    // sorry, ps.close() should be outside of if condition
    String sql = "UPDATE APP_Messages SET statusID = 'sent' WHERE messageUUID = ?";
    Statement statement = con.createStatement();
    PreparedStatement ps = con.prepareStatement(sql);
    ResultSet rs = statement.executeQuery("your select SQL");
    if ( rs.next() )
    ps.clearParameters();
    ps.setString(1, rs.getString("your column name"));
    ps.executeUpdate();
    ps.close();
    rs.close();
    statement.close();

Maybe you are looking for

  • Understanding Fan, Fan Control, and Heating Intel iMac

    Greetings all, I'm a recent convert from the world of Windows to Mac and I've enjoyed it more than you can imagine. I'm a network admin at a major airport and have come to hate working on Windows during the day to working on Windows at home. Although

  • Printing using SUBMIT statement

    Hi I have a problem in printing using SUBMIT. I have three printers identified to print certain orders using submit statement. the list of printers is given in a drop down and once the user selects a printer from the list, i have to generate a spool

  • Can't sign out on iPad or iPhone (to use a different Apple ID)

    I recently changed my Apple ID (did not create a new Apple ID account). On my MacBook Air I was able to sign out of iCloud to then start using the new ID. However, I cannot seem to do the same with my iPad or iPhone. Thus, I am constantly being asked

  • Restore RAC database from non-RAC source - EBS R12.1.1

    We have restored (PIT) a RAC database from a non-RAC (but ASM) source and I was wondering if that was a reasonable thing to do. The reason I ask is that I seem to remember that in the upgrade to R12.1.1 the upgrade driver had a different list of jobs

  • Can't publish my hyperlinks to entire site

    i'm just trying to publish a 5-page site for the first time to my .mac address, and it only publishes the first page and the links won't take me to the other pages...the hyperlinks are enabled in iweb but don't seem to work once I'm on the .mac site.