Synchronizing data acquisition&waveform generation

I'm attempting to synchronize analog waveform generation and analog data acquisition using an AT-MIO-16E-1 board. I've followed the instructions in the manual on how to do this but with no luck (maybe the VI I wrote is incorrect).
Any suggestions?

Have you taken a look at the Simultaneous AI/AO examples that ship with NI-DAQ? They can be found in Examples>>I/O Interfaces>>Data Acquisition>>Simultaneous AI/AO. They will give you some examples of how to program your board.
Regards,
Erin

Similar Messages

  • Data acquisition and generation with PCI-MIO-16E-4 card help!!!!

    Hello,
    I'm using a PCI-MIO-16E-4 card with labview7 (in using DAQmx)and I
    would like to draw a frequency response.
    My problem is: my program can run correctly in low frequency but, it
    can't work correctly in high frequency (after 2KHz the signal is
    false).
    For verifying my program: I only try to generate and acquire a sweep
    sine. I constate after 2KHz the sine I read dosn't resemble to a sine
    I wrote.
    Can you say me where is the problem?
    Thank you.
    Le Trong Thao.

    "Dr. Imad" wrote in message news:<[email protected]>...
    > my understanding is that you are generating a sine wave (on one of the
    > anlogoutput channels) and you are trying to read the signal.
    > Since you can verify the signal at low frequency, but not at high
    > frequency, it looks like you should increase the scan rate of the data
    > acquistion (if you can, set it to 10 times the signal frequency)
    > You can also use an oscilloscope to verify the signal is what you
    > really generated.
    Thank you for your response.
    I've tried to do it, and I've tried several other possibilities but it
    doesn't work correctly.
    In fact, I think the problem is in my program. Do you have a program
    that works correctly? I f
    ound examples in the help but they don't run
    correctly.
    Le Trong Thao.

  • How to syncronize two data acquisition boards?

    I would like to know how I can use two Multifunction Boards simultaneously? For example, I had two NI6024 boards and I would like to use 16/DI channels. I want to syncronize them. Thank you.

    Youngkey,
    You can synchronize the two data acquisition boards, by using the RTSI bus that is part of the architecture of the boards. I am attaching the text of a Knowledge Base which describes how to accomplish this goal:
    Title:
    Synchronizing data acquisition between two or more MIO-16 series boards
    Problem:
    How can I synchronize data acquisition between two or more MIO-16 series boards?
    Solution:
    First, place a special Real-Time System Integration (RTSI) cable on the RTSI connector. Then, determine what trigger pulse signals need to transmitted to the trigger inputs of each MIO-16 series board. The board which sends the trigger signal becomes a 'master' and the board that rec
    eives becomes a 'slave'. Finally, start the data acquisition on both boards. Make sure you call the data acquisition functions or VIs on the slave board first to arm the acquisition. Below is a list of necessary function calls.
    * In NI-DAQ or LabWindows: Call the function RTSI_Conn for each counter or trigger signal you wish to connect up to a RTSI Trigger Line. Then call the regular functions to perform a data acquisition on both boards. Call the function RTSI_Clear at the end of the program.
    * In LabVIEW: Call the RTSI Control VI with control code set to Connect for each counter or trigger signal you wish to connect up to a RTSI Trigger Line. Then call the regular VIs to perform a data acquisition on both boards. Call the RTSI Control VI with Control Code set to Clear at the end of the program.
    Hope this information is helpful.
    L Aguila
    Applications Engineer
    National Instruments

  • Data acquisition and frequency generation togather with PCI-6251 and LV8.2

    Hi friends,
    I am a new user of Labview. I am using LB8.2 with PCI-6251 .
    I have to generate frequency and then measure the data and then for next frequency and so on.
    i know that for this i have to use looping and that is not a problem. The real problem for measurement is to identify whether the frequency is been generated. if yes then measurements starts otherwise it should wait until it started. then after finishing the measurements send a signal to generator for changing the frequency and amplitude.
    Now these two things {generation and measurement} togather are not working correctly for me. so i make 2 diff file, one for generation and other for measurements <by modifying the examples>. I can run both file togather and it works. But it need lots off effort and time. I have to measure from 10Hz to 1000Hz in 2Hz frequency step and i cannt leave in between .
    can anyone help me how to syncronize these two togather .
    Trying to attatch. both the files here ..
    main_v1.1.vi --> for Measuring
    Oscilloscope.vi --> for waveform generation
    Attachments:
    main_v1.1.vi ‏150 KB
    Oscilloscope.vi ‏37 KB

    Hay thnx dude..
    I found the example and now it works
    once again thanks a lot

  • Can my 600MHz P-3, 256MB Ram handle a data acquisition of more than 1kHz with waveform chart support?

    please suggest tools for acquiring high speed 8 analog channel data.
    can my 600MHz P-3, 256MB Ram handle a data acquisition of more than 1kHz with waveform chart support?

    Arun,
    I have performed data acquisition on a computer with lower specs than the one you described, at rates greater than 1 kHz. I don't quite understand the "waveform chart support" portion of your question, but if you are asking if it is possible to plot the acquired data on a Waveform Chart in LabVIEW, this should not be a problem.
    If you have more specific questions, let me know.
    -D
    Darren Nattinger, CLA
    LabVIEW Artisan and Nugget Penman

  • How to use ni-6008 and build a four channel data acquisition at a rate of 250 samples per channel and display all the data in a waveform chart

    how to use ni-6008 and build a four channel data acquisition at a rate of 250 samples per channel and display all the data in a waveform chart 

    Hi kdm,
    please stick in one thread for the same topic!
    Best regards,
    GerdW
    CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
    Kudos are welcome

  • Techniques for a synchronous long-life data acquisition

    Hello All
    I have a digitizer, which needs to run at a constant rate for ever. When some condition occur (reading exceed treshold level), other data processing must take place.
    The data processing last for much longer time that the successive sampling, which means that I can not fit data processing in the same thread as the sampling process.
    It looks like I need some kind of buffer, which will be filled and keep track of the sampled data, and another thread for data processing and analizying.
    Can somebody give me a link, or advice about this kind of problems. What are the techniques for long-life data acquisition.
    Thank you in advance.
    Pawel

    Indeed a challenging application! Here is what has been done successfully in other applications:
    1) to separate the DAQ task from other tasks, put the data into a Queue. This creates a second software buffer for your data.
    2) for large buffers, so you can extract pre and post trigger data, use two files (a double buffered file buffer) and stream the data to each file successively within your DAQ VI.
    3) when you detect the threshold trigger in your DAQ loop, note the block number and pass this as part of the queue
    4) your processing loop, can then use the block number to get pre and post trigger blocks for further analysis.
    Hope this helps you get started.
    Preston Johnson
    Preston Johnson
    Principal Sales Engineer
    Condition Monitoring Systems
    Vibration Analyst III - www.vibinst.org, www.mobiusinstitute.com
    National Instruments
    [email protected]
    www.ni.com/mcm
    www.ni.com/soundandvibration
    www.ni.com/biganalogdata
    512-683-5444

  • Error with "on-the-fly" controls in waveform generation

    I am trying to output a waveform in which I can change amplitude while the VI is running. When trying to do so, however, I am allowed to change the amplitude only once, and then I get error #-10880. What does this mean? I am using AO Write, and placing the waveform calculation and generation inside a sequence structure, with a wait statement, in the hopes of giving "changes enough time to take place".
    Thank you.

    jmarotta wrote in message news:<[email protected]>...
    > I am trying to output a waveform in which I can change amplitude while
    > the VI is running. When trying to do so, however, I am allowed to
    > change the amplitude only once, and then I get error #-10880. What
    > does this mean? I am using AO Write, and placing the waveform
    > calculation and generation inside a sequence structure, with a wait
    > statement, in the hopes of giving "changes enough time to take place".
    > Thank you.
    Hi, Jmarotta,
    I am not very sure how to solve your problem, but the error #-10880 is
    "updateRateChangeError A change to the update rate is not possible at
    this time because when waveform generation is in progress, you cannot
    change th
    e interval timebase, or when you make several changes in a
    row, you must give each change enough time to take effect before
    requesting further changes."
    You can find this in the help/error code/Data Acquisition Vis... Hope
    this would help. ^_^
    Regards,
    celery

  • How to do another thing before returning of a buffered waveform generation?

    Hi There,
    The DAC0 and DAC1 of PCI-6024E are used to generate waveforms by the buffered analog output mode. We know that before the buffered generation is completed, the starting function of generating waveform, either "WFM_op" or "WFM_Group_Control",will not return, unless you call "Timeout_Config". In my application developed by Visual C++, I hope that after starting the waveform generation process, I can do another thing, for example, plotting data or data processing. Would you tell me how to do that? I greatly appreciate you for any reply and suggestions.
    Kylin

    Kylin,
    Actually, WFM_Group_Control() is not synchronous. It is asynchronous and will return immediately after the generation has been started. I would suggest that you take a look at the following examples. They are located in C:\Program Files\National Instruments\NI-DAQ\Examples\VisualC\Ao:
    WFMsingleBufAsync.C
    WFMsingleBufSync.C
    WFMsingleBufAsync.C is an asynchronous generation that uses WFM_Group_Control(). On the other hand, WFMsingleBufSync.C is a synchronous generation that uses WFM_Op(). In your situation, you would want to follow the programming structure of WFMsingleBufAsync.C.
    Good luck with your application.
    Spencer S.

  • Triggering a 6024E into data acquisition from start and end number of finite pulse generator from a 6602

    My motion control system is driven by a 6602 I wanted to acquire analog current (to a voltage via I/V converter) from a 6024 AI when:
    (1) At the start of the pulse generation
    (2) Stop at the end of the pulse generation
    (3) Read every possible data between and stream it on the harddisk
    (4) Option to skip at regular intervals to reduce amount of data accumulation
    Anyone have some suggestions? What I did try and attempted was to "loop an AI from a triggered intermediate Analog Input VIs" this is rather erratic!My question for the analog input software are:
    (1)Can you trigger an AI to start a continuous acquisition?
    (2) How do you do AI from a "start" p
    ulse train to "end" pulse train?
    (3) How do you manage time for File I/O meanwhile doing (1) and (2) above?
    Bernardino Jerez Buenaobra
    Senior Test and Systems Development Engineer
    Test and Systems Development Group
    Integrated Microelectronics Inc.- Philippines
    Telephone:+632772-4941-43
    Fax/Data: +632772-4944
    URL: http://www.imiphil.com/our_location.html
    email: [email protected]

    "(1)Can you trigger an AI to start a continuous acquisition?
    (2) How do you do AI from a "start" pulse train to "end" pulse train?
    (3) How do you manage time for File I/O meanwhile doing (1) and (2) above?"
    Answer 1 and 2)
    Yes you can, This VI is part of the search examples that ships with LV:
    "Continuous Acquisition & Graph Using Digital Triggering and External Scan Clock
    Demonstrates how to continuously retrieve data from one or more analog input channels using an external scan clock when a digital start trigger occurs."
    Go to Search Examples in the Help/Contents of LV. Then pick I/O Interfaces/Data Acquisition (DAQ)/Analog Input/Triggering an Acquisition/Triggering a Continuous Acquistion.
    This VI is appropriate ifs you want to clock the DAQ with some clock (external scan clock) other than the on board clock.
    The start trigger required by the DAQ card will be a TTL signal attached to the PFI0/TRIG1 pin of you DAQ card (via whatever signal conditioning you have).
    The external clock also needs to be TTL and is attached to the PFI7/STARTSCAN pin.
    You tell it which AI channel to use and wire that up appropriately.
    All of this stuff is in the context help for the VI.
    Answer 3)
    You have a misconception of how the acquisition makes its way into a file on the hard disk. You don't really "stream to disk." The VI above will run a buffered acquisition. The DAQ card sets up a buffer that fills with the data continously. When you use the VI you set up how the buffer is configured, you will see controls for buffer size, number of scans to read at a time, etc. The acquisition runs data into the buffer continously and reads from the buffer are a parallel process where chuncks of the buffer are extracted serially. You can end up with a scan backlog where the reads are falling behind the data. Making the buffer bigger helps. All of this is limited by the sampling capability of the DAQ card. 200kSamples/second is for one channel of AI. Divide by 2 for 2 channels. etc.
    The short answer is that the VI and DAQ card manage the file I/O for you.
    The VI above writes the scan out to the waveform chart on the front panel. You will want to wire that data out from the AI Read Sub VI to a spreadsheet file in tab delimited form or similar.
    Look inside the VI block diagram. There is a While loop containing the AI Read. Every time the loop runs (unless you hit STOP), the AI Read plucks the specified # of scans from the buffer (starting from the last unread datum). If you wire the double orange wire from AI Read out of the loop (and set the tunnel for Auto Indexing) the Vi will build another buffer in memory that is a series of AI Reads appended to each other, a sequencial record of the acquisition. Here you put in a Write to Spreadsheet VI. This is in the Functions Pallete, it is the first VI in the File I/O Pallette (icon looks like a 3 1/2 disckette).
    There is more to it than this. The spreadsheet Write is 1D or 2D only. By running the array out of the while loop with auto indexing enabled, you create a 3D array. (If you turn off auto indexing you will only get the last array performed by the AI Read.) You will need to create a new array withe the pages of the array placed serially into a 2d array. I don't think I want to get into that. It isn't that bad to do, but you should get some time messing with arrays on your own, then you will see how to do it yourself. One solution is to only run the While loop once with a buffer big enough to hold the whole acquisition, or in other words no loop at all. I don't know how many scans you want. The other thing is by wiring that AI Read out of the loop you are creating an array that must be dynamically resized as the loop runs. Kind of a no no. Better to know what you are acquiring size wise and letting the VI set up buffers and array space that does not need to be changed as the program runs.
    Caveat: I am fairly new to this and I could be wrong about the arrays and buffers and system resources stuff. However, I have done essentially what you are trying to do succesfully, but not "continuously." I limited the AI Read to one large read that gets what I need.
    "Continously" is usually reserved for screen writes as in the VI above. The computer is not required to continually allocate space for an ever expanding array to be written as a file later. Each time this VI runs the While Loop the data goes to the waveforn chart. Each new AI read overwrites the previous one. Sort of like if you turn the Auto Indexing off. When the VI stops, the waveform chart on screen would show the same data as was written to the spreadsheet.
    Feel free to email me directly: [email protected]. I will help as I can.
    Mike Ross

  • Data acquisition from multiple channels.

    Hello
    Right now, I am able to acquire the signal from a single load cell and display it.But I would like to know of how to acquire  acquire signals from two load cells simultaneously.I am using Labview 6i and I am using AI S-Scan with AI config to acquire the waveform.It would be of great help if you could suggest a simple method to acquire the signals.
    PS: Please find the attached file used for acquisition from a single load cell.
    Looking forward for your reply.
    Manasa
    Attachments:
    test 4.vi ‏102 KB

    Hi Manasa,
    If I understand what you are trying to do, it is relatively
    straightforward to configure your application to acquire data on two channels.
    I was unable to run your vi as it was missing some of the subVI’s
    from your application.  However, your
    attachment was sufficient to see what you are trying to do. 
    Here is how to add channels:
    1.      
    In the I/O Channel Constant, you can add
    additional channels by using a comma or a semi-colon.  For example, to scan the first four channels
    you would put 0:3 in the constant (see attached screenshot ChannelConfig.jpg).  To scan the first and third channel you would
    put 0,2.
    2.      
    The AI Single Scan VI will now read from
    multiple channels.  Often it easiest to
    configure the output of this VI for viewing by first putting the data into an
    array using the Build Array VI.  It can
    then be plotted in a waveform graph. (see attached screenshot ReadtoGraph.jpg
    and WaveFormGraph.jpg)
    Just a few notes about “simultaneous” sampling:
    Most of the NI data acquisition cards have a multiplexer
    between the various input channels and the Analog to Digital (A/D) converter
    creating a very small delay between each channel (usually ms range or
    smaller).  NI does make several data acquisition
    cards that can perform true simultaneous sampling, meaning that there is an A/D
    converter for each channel.
    For the large majority of applications, the small delay
    between channels is negligible.
    Jared T.
    Attachments:
    ReadtoGraph.JPG ‏21 KB
    ChannelConfig.JPG ‏288 KB
    WaveFromChart.JPG ‏61 KB

  • How do you cyclicly trigger data acquisition after n pulses counted

    Hello all, please forgive my ignorance because I am very new
    to lab view and data acquisition. I am working on a system which is going to
    scan an object and produce an image. The gimble that I am scanning the object
    with is an X-Y type of gimble with stepper motors on each axis. The stepper
    motor controller will output pulses real time to indicate the real time
    position of the gimble in each axis. What I need to be able to do is count
    pulses from the stepper motor controller and then output a trigger pulse to
    trigger the data acquisition in a buffered mode when N number of pulses have
    passed and then generate another pulse to stop the acquisition after another N
    number of pulses have passed. The controller puts out 10,000 pulses per degree
    of travel. The velocity that I am traveling at is 20 degrees per second, so
    timing here is really important. I need to be able to utilize the speed of the
    daq card and not so much the speed of the computer to iterate through a loop. I
    have tried using the count down feature in the NIDAQ MX library but it does not
    appear to be useful to me. I set it up and it will count down but once it hits
    zero it continues to count down. My expectation was that it would either
    restart the down count or it would stop. I was expecting some sort of trigger
    event to take place once the count reached the zero point but I did not observe
    any sort of event taking place. Once again my knowledge and background is
    really limited so I could be missing something really fundamental here. I have
    tried using some of the legacy functions which would enable me to do exactly
    what I want to do but they do not seem to work with my daq card. I have a NI
    PCI-6122 and if anyone has any knowledge on how to get this type of card to
    talk to some of the non MX functions I would be more than happy to hear how. It
    seems to me though, that I am limited to the MX functions which I can not
    really translate into what I have learned I can do with the legacy functions. I
    thank you all once again for taking the time to read this I and I will
    appreciate any and all responses that can be helpful.
    ~ Randy Brown

    I have run a few more tests and obtained some data per the request of a telephone support engineer. I have some scope screen shots that might be able to shed some light on what is going on. I will provide a brief description of what I discovered before I show the resulting data. I discovered that using the number of up ticks and down ticks suggested does not yield the right timing for the clock pulses that I will need for triggering my data acquisition. When I use 55 low ticks and 2 high ticks as my settings I end up getting a pulse every 32 pulses read on the PFI line. I get the same results when I interchange the numbers, for example, when I set the program up for 2 low ticks and 55 high ticks I get the same resulting one clock pulse per 32 pulses on the PFI line. I started playing with the numbers and come to find that I was able to generate a pulse every 57 pulses in this setup. I set the high ticks to 2 and the low ticks to 71 and once I did that it generated a pulse every 57 pulses in. The results are not ideal though, a number of things happen within the first second of operation. One mode of operation the clock output pulse latches after a few pulses generated. Another mode of operation that I noticed was that it would generate n number of pulses and then just stop even though the program was still running. The results I am getting are not reproducible when it comes to the long-term operation of the clock pulse generation but the bottom line is not matter what happens the end result after 1 second is not what is expected. I will show below screen shots of my program and also scope shots for the respective modes of operation.
    Front End interface
    Block Diagram
    55 High ticks and 2 low ticks results
    55 low ticks and 2 high ticks results
    77 Low ticks and 2 high ticks results
    Undesired Latch after 1 second of operation
    N number of pulses generated and stopped while program was still running
     It appears the the long term operation (and when I say long term I mean after a second) is intermittent, it either latches high or low after a random number of pulses are generated on the clock output. I am not sure why this is happening. The one setup that I came up with that generates a pulse every 57 pulses is not going to work for the setup that I have I think I would have to reduce the 71 to 69 in order to compensate for the two pulses that happen while the output pulse of the clock is high. To be honest I have no idea what is going on and I am starting to wonder about my daq card. Being that it is not really reproducing the same results I am starting to think maybe something is wrong with it. Another possibility is that it might be the bnc 2110 that I am using. I will try another one tomarrow and see if this problem persisits. I am leaving now so I won't be able to try that as of yet but I wanted to pass this info and data along such that maybe you will notice something and be able to lead me in the right direction. Thank you again for all of your help.
    ~ Randy Brown

  • Synchronous data exchange over JCaps without TCP/IP or WebService...

    Hi all,
    the subject may sound like a little crazy request, but that is what we actually need.
    Just to explain: we have a SAP R/3 system running (v. 4.72) which is not able to call Web Services and is also not able to open a TCP/IP-connection to a foreign host to exchange data.
    But what we need is a synchronous data exchange as, after pressing a button in SAP, we should query some database tables of another sub-system with JCaps and send back the received information to SAP.
    Do you have any ideas out there how this synchronous request from SAP to JCaps can be fullfilled with JCaps (our version is 5.1.3)?!
    We thought about using a HTTP server on the JCaps side, where SAP just sends a HTTP-request on the specified address and then we could use the data received from this call, to get data from the sub-system and then send it back to SAP over an RFC or something similar - that is the easier part (sending data back to SAP). The harder part, in my opinion, is to create a possibility for SAP to call JCaps immediately - so not asynchron, which we already implemented over a file export...
    So, is it possible to use HTTP-server from JCaps for our needs?! Or is there another, easier possibility?!
    Any help highly appreciated...
    Regards
    Bernhard Böhm

    Hi Chris,
    thanks for the input - we also have a similar thing running, also using our BW-Server (SAP ERP 6.0) as the "web service engine"....
    But now, we want a solution without another server (like the BW in the upper case) involved!
    So, we thought about using HTTP-server on the JCaps-side which should be invoked by a simple HTTP-request from SAP (also possible in 4.72).
    Now I tried to setup a simple HTTP-Server project in JCaps 5.1.3 and it is making me crazy right now...
    I just do not get it to work - all I would do is a simple JCD that just print a line in the log-file when started. The JCD has just a "processRequest"-method from HTTPS-Server-eWay. In the connectivity map I did set up the connection to the HTTP-Server with the servlet-url-name - property:
    http://localhost:18001/dpListenHTTP_servlet_HttpServerServlet (like described in the userGuide).
    But when trying to build the project I get this error:
    com.stc.codegen.framework.model.CodeGenException: code generation error at = HTTP_Listen_cmListenHTTP_jcListenHTTP1 - HTTP Server e*Way Code GeneratorProblem creating war: C:\temp\dpListenHTTPprj_WS_serTestHTTP\12217262314811\WEB-INF\classes\..\dpListenHTTP_servlet_http:\localhost:18001\dpListenHTTP_servlet_HttpServerServlet.war (The filename, directory name, or volume label syntax is incorrect) (and the archive is probably corrupt but I could not delete it)
         at com.stc.codegen.frameworkImpl.model.CodeGenFrameworkImpl.process(CodeGenFrameworkImpl.java:1569)
         at com.stc.codegen.frameworkImpl.model.DeploymentVisitorImpl.process(DeploymentVisitorImpl.java:405)
         at com.stc.codegen.frameworkImpl.model.DeploymentVisitorImpl.process(DeploymentVisitorImpl.java:308)
         at com.stc.codegen.frameworkImpl.model.DeploymentVisitorImpl.traverseDeployment(DeploymentVisitorImpl.java:268)
         at com.stc.codegen.driver.module.DeploymentBuildAction.loadCodeGen(DeploymentBuildAction.java:923)
         at com.stc.codegen.driver.module.DeploymentBuildAction.access$1000(DeploymentBuildAction.java:174)
         at com.stc.codegen.driver.module.DeploymentBuildAction$1.run(DeploymentBuildAction.java:599)
         at org.openide.util.Task.run(Task.java:136)
         at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:599)
    Caused by: Problem creating war: C:\temp\dpListenHTTPprj_WS_serTestHTTP\12217262314811\WEB-INF\classes\..\dpListenHTTP_servlet_http:\localhost:18001\dpListenHTTP_servlet_HttpServerServlet.war (The filename, directory name, or volume label syntax is incorrect) (and the archive is probably corrupt but I could not delete it)
         at org.apache.tools.ant.taskdefs.Zip.executeMain(Zip.java:509)
         at org.apache.tools.ant.taskdefs.Zip.execute(Zip.java:302)
         at com.stc.codegen.frameworkImpl.model.util.AntTasksWrapperImpl.war(AntTasksWrapperImpl.java:404)
         at com.stc.connector.codegen.httpserveradapter.HSEWCodelet.generateFiles(HSEWCodelet.java:608)
         at com.stc.codegen.frameworkImpl.model.CodeGenFrameworkImpl.processCodelets(CodeGenFrameworkImpl.java:640)
         at com.stc.codegen.frameworkImpl.model.CodeGenFrameworkImpl.process(CodeGenFrameworkImpl.java:1546)
         ... 8 more
    Caused by: java.io.FileNotFoundException: C:\temp\dpListenHTTPprj_WS_serTestHTTP\12217262314811\WEB-INF\classes\..\dpListenHTTP_servlet_http:\localhost:18001\dpListenHTTP_servlet_HttpServerServlet.war (The filename, directory name, or volume label syntax is incorrect)
         at java.io.FileOutputStream.open(Native Method)
         at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
         at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
         at org.apache.tools.zip.ZipOutputStream.<init>(ZipOutputStream.java:252)
         at org.apache.tools.ant.taskdefs.Zip.executeMain(Zip.java:407)
         ... 13 moreAnyone any idea how to set up a HTTP-server-project?!
    Thanks and regards
    Bernhard Böhm

  • How does buffer size affect double buffered waveform generation?

    I had originally posted the following question:
    "Why does the double buffered waveform generation pause after the first buffer before continuing?"
    "I am using an AT-AO-10 board to generate a multiple channel waveform in double buffered mode. The board's DAC's are updated by an external clock signal. While the waveform generation performs well, I notice that after the first buffer has been generated there is a time delay before the next buffer is output. However the second buffer and thereafter perform well without any time delays. If anyone can provide me an explanation on why this happens I would appreciate it. I am using NI-DAQ API functions to generate the waveforms and my settings for the WFM_DB_Config function are 1 for oldDataStop to disallow regeneration of data and 0 for partialTransferStop to not stop when a half buffer is partially transferred."
    -posted by Vadi on 6/7/2001
    I received a response from Geneva as follows:
    Geneva L. on 6/11/2001 says:
    "Vadi,
    The first thing is to make sure that you have the latest version of NI-DAQ installed, NI-DAQ 6.9.1. If you need to install it, make sure you completely uninstall any prior versions. Then, you will have examples installed in either the NI-DAQ or the CVI directory. In the AO directory, you should find the WFMdoubleBuf example.
    Start with that to make sure the output appears as you expect. Then, you can modify it to apply your external update clock, following the idea presented in the WFMsingleBufExtUpdate example. You might even want to double-check that your external clock acts as you expect using an oscilloscope.
    Finally, modify the example such that you can update on multiple channels, remembering that you interleave each channels buffer into one buffer for WFM_DB_Transfer. Whatever data is in the buffer will be updated on the output channels.
    Regards,
    Geneva L.
    Applications Engineer
    National Instruments"
    I have checked my version of NI-DAQ and it is 6.9.1. I am generating the double buffered waveform according to the format shown in WFMdoubleBuf and with some modifications from WFMsingleBufExtUpdate to allow me to use my external update clock. However I continue to notice the same phenomena again and again. For a buffer size of 7500 or 10000 points there is a time lag meaning after the first buffer has been output there is a noticeable time delay before the second buffer and buffers there after is output. This time lag doesn't exist for the buffers that are output after the first buffer but it does exist for the first buffer. When I decrease the buffer size down to 5000 points the time lag disappears (Note: this phenomena also occurs when I use an internal time base as opposed to my external clock). Is there a reason for this? I am using a AT-AO-10 board and I know the on board FIFO is 1024 points deep. However from the documentation provided it doesn't indicate that double buffered mode uses the on board FIFO at all. In fact, the functions require that the FIFO mode be turned off (in WFM_Load) for double buffered waveform generation. Is there a reason why when the buffer size is increased that there is a time lag after the first buffer? Is this because of the functions themselves or is this because of the AT-AO-10 board?

    Vadi,
    Make sure that your buffer size is set to the same number of points that you're actually writing to the buffer initially. For instance, if you run the example as-is, the NIDAQMakeBuffer puts exactly the ulCount amount of data into the buffer. Then, it continuously writes out half buffers. Thus, if you are not writing enough data to fill up the buffer the first time, there will be that lag until the section where half buffers are output.
    Regards,
    Geneva L.
    Applications Engineer
    National Instruments
    http://www.ni.com/ask

  • To read & save data from serial port (write to .csv file), and plot data as waveform

    Hi,
    I've been stuck with this problem for weeks and really need some help. I've been searching a lot but I can't find a proper solution.
    I am trying to use Labview to plot and display some parameters of a data acquisition system for a project.
    The data acquisition system is connected to a computer via serial connection through COM 1 port.
    The data acquisition system sends a serial stream of data (ASCII string with baud rate 19200), as shown below (from HyperTerminal),
    01:00:26,933.24,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    01:00:27,931.54,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    The serial data stream consists of a time stamp (as 1st data), followed by 16 individual channel data, separated by comma "," and each stream ending in return "\n". Each value of the data ranges from 1 to 6 digits (value of -5000 to 15000).
     I have no problem reading this values correctly using HyperTerminal, but I have problem to plot and display individual parameters of this serial string in Labview. I want to save the entire data in  a “.csv” file corresponding to all the 16 channels with time stamp and plot each individual channel parameter in a graph with time on X-axis.
    I am relatively new to Labview hope I can learn a lot from your help.
     Thank you

    Thank you Dennis.........
    Now I had modified the program incorporating1D array for gauge display.....but currently I have a new problem. The program is running updating the file, waveform graph and Gauge very slowly. Approximately once in every 15 seconds 16 data streams are getting updated in a bunch with gauge sticking to the last value rather than indicating real time value.
    eg.
    12:33:41,-3728.78,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:42,-3730.47,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:43,-3729.81,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:44,-3733.80,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:45,-3733.57,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:46,-3729.27,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:47,-3725.97,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:48,-3730.14,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:49,-3733.20,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:50,-3733.60,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:51,-3732.24,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:52,-3734.51,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:53,-3728.07,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:54,-3732.54,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:55,-3732.24,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    12:33:56,-3731.58,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,
    gets updated in a bunch after 15 seconds, rather than in every second. I thought the problem is with while loop but, i realised there is no delay associated with it..... Can u kindly help me in modifing the program so as it can update the waveform, file data and gauge in real time? (I have attached the modified VI file "suitcase new.vi" and the data gathered after executing the same as in "Trail.txt".)
    Thank You,
    Rahul
    Attachments:
    trail.txt ‏85 KB
    suitcase new.vi ‏44 KB

Maybe you are looking for