Access waveform data passed in a DLL

Hello

I'm working on a LabVIEW application that processes the continuous stream, 2 ms/s, 32 analog input channels, each channel. This application has a DLL built in order to improve the table great handling performance in LabVIEW. Initially, I fed the DLL with a double 2D array returned by DAQmx Read VI and worked on a controller embedded high performance. However, the new requirement is, I need to treat timestamps as well as each Read call to HAVE him, and that's why I need to feed the DLL with the waveform data returned by DAQmx Read. Output waveform contains the timestamps I need.

The problem is, I don't see an easy way to access the data of waveform within the DLL (developed using Visual Studio C++). The type of waveform data seems to be a C++ class, and who looks like I need to add a considerable amount of code to retrieve the data within the class of waveform.

My question is, LabVIEW naturally does support access to waveform data in a DLL and if there are examples of code? I understand, I can you can also process outside the DLL waveform data and feed the DLL with the array element in the waveform data. However, I have concerns about whether if performance will be significantly affected.

Thank you!

Donghui Yin

Doy says:

Sorry for the incomplete design details. If you are interested, I have used high cards, not PXI. This is why I don't have a problem of bandwidth PXI. Special assistance, I need right now is the note, 'External Code in LabVIEW using' manual on Page 2-7:

"Note waveforms, digital signals and digital tables can be passed through shared
"libraries, but access to the data inside shared libraries is not supported at this time."

Thank you.

I think that the text is clear enough! There is no documented API for access to international it data waveform within an external code module. The generated data type the node in library call for such a parameter is HWAVE or something, indicating that it is an opaque handle whose implementation details are deprived of LabVIEW. Since there is no documented API for access to her international of such data there is simply no way to access it.

And I didn't know all the functions that are exported in the LabVIEW executable that I could easily connect with the waveform dataype. Even if I had, we still do not know the prototype (aka list of parameters and types) of these functions.

Your only viable solution is to work with the data types supported. Your C code, or possibly the LabVIEW (table handles) native data type, either passing data in table C. else pointer would require reverse engineering of disassembly, a legally questionable approach, but also a lot of your time. And everything you would find this way I would be very hesitant to use in what feels, walks or crawls like a real-world application, since you can't be sure that your conclusions will work for any situation. It is also likely that your results will depend on some attributes may change between versions of LabVIEW.

Tags: NI Software

Similar Questions

  • problem with the history of EEG waveform data

    Hello world:

    I use SIT to create a user interface in Labview to communicate with a simulink model. After I configure the SIT connection manager and run the vi, the output was displayed in waveform graph.

    Now, I want to get all the data in the history of the map of waveform. I tried to use the graphic story property node to access the whole of the historydat. But nothing copied in the part of Y in the front of the cluster of waveform...

    Can someone give me a helping hand on what is the problem? or has anyone encounter the same problem when you use SIT.  I am really confussed...

    I've attached the vi, but to run the vi, you must have a simulink model corressponding and SIT, so I'm really sorry that you can not run it

    And thanks a lot a lot a lot for that.

    / Shangning

    I just realized this data is a 2D waveform table, which contains the waveform 2000 * 1, and each waveform data contains only 1 value of Y.

  • Filter for waveform data

    Hello world

    I'm trying to filter the noisy analog inputs of 10 channels (DC). I'm sampling of 100 samples/channel at 1000 Hz. My idea is to filter the data with a low pass filter (cut to 10 Hz 3rd order butterworth low freq) and then to calculate the average of each package of 100 samples. Finally, I would like to receive values at a rate of 10 Hz, which can be displayed on the front panel and be written in a file of measures.

    My problem is the following:

    The Express filter VI does not filter continuously after that the VI began. It seems to reset each time the loop runs. The table of 100 samples (white) before and after (red), the filter appear in the image "filterResponse". If I take the average of this table, it is of course less without the filter due to the transitory values between 0 and 0.025 s. I built a simplified version of my VI with only one channel using the VI "Simulate signal" and my concept seems to work well which is permanently (see "filterMeanExample.vi"). I get the idea that it might have to with the kind of dynamic data that is supported by many express VI. But since I'm on the VI KEITHLEY, I do not use the type of dynamic data. In fact, I had to convert a waveform data type to get a vehicle appropriate for the file of the measurement of its release.

    I wonder how to keep the filter VI of reset each time that the loop runs.

    My VI is rather large and contains the KEITHLEY 'Acquire signals' VI which most people do not have in their libraries, so I decided to show only the images.

    Thanks for your help!

    Phil

    System: WinXP, LabVIEW 8.2.1 Professional

    Thanks for the tips, I am set!

    I used the VI of butterworth filter in the tool box to filter on the Panel of the Signal processing that accepts the type of table data. I put the variable ' init/cont' true to prevent the filter to reset its initial States to 0. I guess, it was my real problem before. The Express filter VI doesn't have this option, so I wasn't aware of this feature.

    However, an image of the current value is attached.

    Thanks again,

    Phil

  • How to extract a D 1 waveform data in different channels to use for calculations on a page of data in real time

    Hi all

    I am a fairly new user to Labview and am trying to create a program that: watching the entries in different modules (9213, 9217) CompactDAQ sensors check errors and then uses data from some final calculations like averaging etc.  I've set up a small piece of code that includes the main functions that I am trying to accomplish.  Now I'm rather uncomfortable with getting set up and assigned channels, then pass these data in a while loop that continuously pulls the data from these sensors.

    I have the vi calculations complete and complement the inputs of channel UI, now, I'm working on the side of data manipulation and reading things.  The waveform D 1 who comes to read function is currently divided into components I want (given String Name and Y).  He then transmit this information out of the loop via a queue which transmits to the parallel loop below that will perform the verification errors and calculations of average.  There are some things that make it difficult. I showed the 2 sensors in my example, but in the actual program, there may be up to 400 entries.  The problem is that not all of these sensors will be used on all the tests that the software is used for.  To use the entries in the VI test for example: if I'm trying to the average of these 2 entries to create a common value, but then on a test, sensor 2 is not there, it must be recognized that fact and not use it in the service average.

    So to get down to it, I want to create something that can look through the D 1 waveform data groups, determine what these values are, then perform the functions necessary for these numbers once they are identified, then pass on the calculations of VI where it displays then usable for user information.  I think I'm having a problem with the finding in sorting than what I thought at makes me think that there must be an easier way.

    If someone has encountered this?  What is my explanation of what I'm trying to make sense?  Let me know and I can clarify.

    In terms of features, I don't see anything wrong. with respect to the effectiveness we must remember some general indications. These issues that I bring to the top will not affect your code now since your stack sizes are very small but can start to create the fragmentation of memory and slow down the software if your stack sizes are much larger and the software runs for a long period of time.

    1. try not to use the table to build. Whenever you use a table built labview creates a copy in memory. Try to initilized your berries and replace subsets.

    2. as much as you can try not index tables or unbundle cluster several times. try to perform as many tasks as possbile in one shot. (what was obvious in your second loop)

    In addition, he's looking good.

    I made a few changes to your code and attached to it. I wanted to give you a different on her opinion as it relates to being able to control entry and exit of programitically, if you had a look up table. I do not have the same changes to your second loop but I can guide you through what to do if you do not want to go in that direction. Yet once your original code is well done for someone who is new to labview, so don't feel you need to follow the new design of VI. Just try to remove the table construction and multiple indexing as a good habbit programming.

  • How can I access the data associated with an event within the event handler function?

    Hello

    In my LabWindows code, I try to use a DLL that has been developed in .NET (c#).  I used the built-in labwindows Wizard that converts the DLL to a usable 'instrument'.  Almost everything seems to work, except that I have 1 problem.

    There is an event (defined in the DLL) that I am able to detect.  I know that the reminder of the event is called at the right time.  But the problem is that in this function, I can't access the data that is supposed to be attached to the event.  It worked fine in c#, but I don't know how to do in LabWindows.  Here's what looked like in c# event handler function:

    void AppLoaderEventCallback (CommonLib.CommandResult MyResults)

    {

    MyResults is used in the body of this function

    }

    But in LabWindows, I can't seem to access the MyResults data structure.  Here's what I do:

    public static int CVICALLBACK AppLoaderEventCallback (CommonLib_CommandResult MyResults)

    {

    I can't access MyResults here

    }

    Can you help me with this?  I'm doing something wrong?

    Thank you very much for your help.

    -Mike

    I think that your statement of callback function is perhaps not quite correct. Look using the parameter "callback function" function Panel of the generated __Create function associated with this event. This shows the declaration of the callback function - make sure that your callback function is declared in the same way.

  • VM Ware Fusion 4 with El Capitan - ways to access my data

    Hello

    last week I upgraded my OSX to El Capitan, and now I am facing problems with my VM Ware Fusion 4.

    Unfortunately, I can not start the virtual machine more but need access to data in the windows.

    What are my options to access my data?

    Are there ways that do not include an update to a new version?

    If there is now way without Update: can I pass safely to VM Ware Fusion 5.x or later version without losing any data. (I have read the opinion of update on VM-Ware website - but I don't know if it applies to my case or not).

    Thanks in advance!

    Best,

    David

    Hello

    VMware's current VMware Fusion version 8, you can't buy an earlier version via the site, only by contacting the sales team.

    You would need Fusioni version 6 at least to run under El Capitan, but you don't have that, it will be version 8 (which is fine).

    You should have no problem to start the virtual machine in Fusion 4 under Fusion 8. That said, it's always a good idea to make a backup copy of your virtual machines before you try to turn it on in Fusion 8.

    You can get a 30 day trial of Fusion 8 here: try VMware Fusion or Fusion Pro. Run Windows on a Mac without rebooting. | United States

    Just use it to see if it works well, after 30 days, you can buy the license and change the time license limited to a permanent license.

    Edit: so that the update of the virtual machine no problem. You don't get a price update from Fusion 4, you would have to pay the normal price.

    Tip: If you can wait until Black Friday, VMware offers usually their office for a discount products.

    --

    Wil

  • To access the data in row Datagrid since in an itemRenderer

    I would like to know how can I access the data to another line starting an itemRenderer.  I need to format my cells based on other data in line. Here's what I mean... I have a datagrid and I want in row 0 col 2 itemRenderer access the data in row 1, column 1 in order to make a comparison, I can determine how to format data line 0 pass 2 and so on.  Is there a way of the converter of element by hand in another line and access the data?  I can't find a clear answer so I thought that I would go to the pro.

    Thank you!!

    You can use this code to join the dataProvider on the grid.

    var o: Object = this.parent.parent;

    var dp:Object = o.dataProvider;

  • I can't access my data once I reset my Airport under a new name... HELP me before MY husband comes home!

    my time capsule airport did not work.

    I have reset it and (via the instructions here) and gave it a new name and I for wireless connections, I think, even if there is an ethernet cable.

    It has a new name and my wireless works through it.

    I can't access the data on it.  There literally my life on it.

    What should I do?  Help me.

    I've attached screenshots of it.

    Please help me.

    All your Time Capsule's settings appear to be correct. Drive hard internal of the TC, by default, is named 'Data' as you can see in one of your screenshots.

    This should appear in the Finder under the category shared under the name of base station of your TC. Clicking on it should reveal the data 'folder '.

    In the image below, my Time Capsule is named: TC2. His internal drive is named: TM

  • Tecra A4: Matsu * a s uj - 831 - cannot access any data CD

    Hello

    I have a new toshiba tecra a4
    I have the combo dvd: Matsu * a UJ - 831S
    and I have the following in less than 4 months of use problem:
    Since yesterday I can not access any data cd, audio CD are ok, so on DVD.
    When I go to my computer and click on the drive I get the message "D:\ not accessible incorrect function".

    I tried to uninstall the software, etc. But nothing.
    I tried to boot from the dvd from Toshiba, is the beginning, I tried to boot from cd does not start.
    so the problem is hardware
    I downloaded the firmware (Loder_831_V102.exe), but he said: "the target disk is not connected" and I can't upgrade.

    So what is the problem, can it be fixed?

    Hello

    It's not easy to tell how to solve this problem.
    But first of all, you can try to remove this device in the Device Manager.
    After startup, the operating system should recognize the drive again.

    If this procedure doesn't help, well it could be a disk failure.
    If the warranty is valid, you should ask the ASP for a replacement.

    Good bye

  • RN v1 duo set for Time Machine and after a clean install of Yosemite I can't access my data

    Hi guys,.

    I have the ReadyNas duo v1 set for Time Machine and after a clean install of Yosemite I can't access my data.

    When I try via the Finder, files look for empty to me while info shows that they are not.

    I have no more support and I tried everything I could but all my data remains inaccessible.

    I have finally reached my backup via Time Machine, it was temporary unavailable yesterday.

    Thank you guys!

  • get the timestamp of waveform data

    Hi all

    I'm coming out of the timestamp from waveform data if this is possible. I am writing to file, but the express vi does not allow for fractions of a second and when I write a string waveform data for use with writing to the worksheet, the data of time is lost.

    any suggestions?

    Use Get waveform components. What part of VI? Writing to a file of measure written fractions of a second.

  • How to access the data in the row (text of children) in a pragmatic control tree?

    In LabVIEW 2010, I entered the data in row a tree with pragmatism control using the Add item and providing the child text table and the child tag for the line. When a row in the tree control is selected, I can get the line label in the Value property of the tree. But how do I access the data in the child text table when the line is selected? I can't seem to find a tree control property or method which will return data back.

    What I'm trying to do is: once a line in a tree is selected and a button is pressed, if the line tag is valid, I want to transfer all the data in row in another tree the same formatting. For this I need the data for the tree line and the line that was selected. I don't find a way to get access to these data of the line when it was composed in the tree.

    Can someone tell me how to access pragmatically the child text or row data in a tree control from a selected line in the tree? I have the label of the line, but how do I access data?

    Thank you for your help.

    Looking through numerous examples, I found how to do this using the properties ActiveItemRow and ActiveColNum, but I can't find these documented properties anywhere using LabVIEW. Even research through aid could not do anything about them.

    Where these important parameters are documented?

    Why they do not appear in the help?

    Are there other ways to access the data in the row (child text) form a selected line in a tree control?

  • to access the data of hyperteminal using labview

    Hello Sir,

    I'm a problem to access the data of hyperterminal directly through LabVIEW. Whenever I go to hyperterminal and the text capture option allows you to select data and save it in another file. My application requires automatic access of hyperterminal instead of manually do each and bread time. Is this possible? I enclose a VI that I tried. Please give me a suggestion about the present.

    Do not use hyperterminal. Use the series of VISA. Look at the examples that come with LabVIEW.

  • W510: How do I access my data from a failed hard drive after the failure of the motherboard

    I made a mistake and has paid for major .

    This error pouring a drink sweet on my laptop. I know, I know, my keyboard can and protect against damage caused by the spill, but it was a drink together. In any case, I panicked and shut down the system and it has upset and removed the keyboard. And be the impatient person that I am, I made what was probably the ultimate error. I do not give everything save a sufficient amount of time to dry and I tried to boot the system. There is my computer. Or at least I think.

    Symptoms: It began at the start, kept a beep, sometime just close and will start.

    In any case, I guess that my laptop went kaput. Now to the point of this thread. I had not been a recent backup and can't remember when the last backup was actually made. Assuming that my hard drive is ok, I want to get all my data, so I saw several options:

    -Send the system to a data recovery service where I will not pay less than $300, but probably 2 to 3 times what

    -buy an equivalent model laptop and put the HARD drive in there

    -by an external SATA hard drive enclosure and mount it via USB on another computer

    I bought a box external and assembled this evening. I had read about the data access of difficulty with a system non-Lenovo because of encryption of the data. I proved that by linking it to my work (a Dell) laptop and I couldn't access my data directories. If I have access to an another Lenovo Thinkpad, I'll be able to access the data if connected via USB? I had read that I can access the contents of disc hard if it is connected to an another Thinkpad, but I knew not that if it means that I have it connected via SATA connection or if there is work through the USB port.

    I'll appreciate any suggestions for accessing my data.

    Best regards!

    All,

    Thanks for the suggestions.

    I was able to recover my computer and all data on it.

    Just to describe what I have done, here are the details.

    Because of my concern about a failure of the motherboard, I bought a used/given new keyboard and an external SATA drive enclosure. I was not able to properly take possession of the car from my other laptop, but I was able to access the data in Mode without failure. With my data, I plugged the hard drive and the new keyboard in and started without problem.

    Thanks again,

    brent86

  • Process of waveform data (accumulated results)

    Hi all

    I am currently treating a waveform data that I read of DAQ card. Data are digital waveforms, so first I convert it to table DBL and then put the table in a block of prcessing (see attachment). Since I expect to get a report and indeed I got what I want at the first time. However, when I re - run the program, obtained results. for example the first time I got 0.5, then when I re - run the program, I expect to get another 0.5, however what I have is 1. If I keep running again, he continue to accumulate.

    Can someone tell me what's wrong with my program? I have attached a screenshot of the code and also the vi that I used to do the processing.

    Thanks in advance for your help.

    Main program:

    You have an uninitialized enter your last registry FOR loop to shift.  Initialize to 0 and you should be good to go.

Maybe you are looking for