Building DLLs from VIs with array as output

Is there any special way to build DLLs from VIs having arrays as outputs. Suppose I have a VI "Random" with input "nrand" and output an array "the_random2". When I build DLL from the VI, I have something like this in my header file
void __stdcall Random(long nrand, double the_random2[]);
Now it returns void. So I have to pass the array as pointer and retrieve it. If I use Mathscript to load the DLL and call this function, how do I pass the pointer to the array "the_random2"? Simply speaking, any useful method to build DLLs with array outputs and the right way to call them from Mathscript would be appreciated.
Regards
NRK

Hi,
Building DLLs in LabVIEW is described in this tutorial.  
Mathscript can call shared libraries such as DLLs, however make sure
that they are compliant with the supported data types as stated here in
this help page.  All supported functions for calling/loading shared libraries is described here. 
Note that these functions are not supported with the base package.  The
details of the sytax of each function is described in their specific
help page.
Hope this helps!
Regards,
Nadim
Applications Engineering
National Instruments

Similar Messages

  • Applicatio​n Builder: error in building DLL from a VI

    I have a VI which I have been compiling into a DLL for use with Labwindows. Suddenly yesterday the build would no longer compile. Instead the error message (see attached picture) persisted all day no matter what I changed in the VI. Before the error message appeared, the Labview project window went blank for a moment, then showed some "C" code from somewhere, and then back to the project window. It's almost like something blew up in the compile process.
    I've tried all suggestions in the error message. Checked data types and names. I believed the VI is wired back to where it was. There is not much to the VI but it does reference some .NET assemblies.
    Thanks for any comment or help,
    Doug Wendelboe
    Attachments:
    VI-DLL-Pictures.zip ‏21 KB

    Hi Eriquito:
    Thanks for your response. I've included some snapshots of appropriate Ap Builder setup pages. My DLL is named "CVIMESQueryTray.dll". I had this compiling quite well up until a few days ago, so Ap Bldr didn't object then.
    See if you can spot something in my ApBuilder setup that I might be doing wrong.
    Thanks for your help.
    Doug Wendelboe
    (Hmmm.. I guess I can't attach more than three items, so I ZIPped them into one file).
    Attachments:
    ApBuilderPics.zip ‏154 KB
    ProjectFile.JPG ‏60 KB
    ApBuilderPage1.JPG ‏31 KB

  • Can I create a dll from labview with more that one function name

    I know that when I create a dll from C and then call it in labview using the call library function node I can see the different functions on the configuration screen. Is there a way to create a dll in labview to have more than one function name? No matter how many functions happen in my VI it seems to build into a dll under the same function name requiring inputs for every function, can this be avoided somehow?
    Thanks,
    Dave

    Each function corresponds to a separate VI. When creating the dll, on the Source Files tab of the app builder, click the Add Exported VI for each VI that you want. SubVIs of a main are not automatically exported and will not be available as separate function calls.

  • Calling LabVIEW DLL from C with 2d array strings

    I am trying to write a DLL in C that calls a LabVIEW DLL that has a
    number of functions that each return a 2D array of strings which are the formatted
    measurements, with column 1 being the measurement name and column 2
    being the measurement. I wanted to use the 2D array of strings since
    this would give a uniform interface for returning measurements. Ive
    cobbled together bits and pieces of messages and example code I've
    found here into something that almost works, and was hoping someone
    with a little more experience in interfacing C with LabVIEW DLLs would
    be able to help me.
    Here's a little
    snippet from the header file generated when building the LabVIEW DLL:
    typedef struct {
    long dimSizes[2];
    LStrHandle String[1];
    } TD1;
    typedef TD1 **TD1Hdl;
    long __cdecl TestVI(char serialNumber[],  TD1Hdl *formattedMeasurements, char ErrorDescription[], long len);
    The "TestVI" VI generates a 2D array of strings. The cell contents and number of rows are random to
    simulate different measurement names and measurements.
    Here's a snippet for the wrapper class:
    class CArgoTestsLabVIEW 
    public:
    CArgoTestsLabVIEW();
    virtual ~CArgoTestsLabVIEW();
    // test modules called from parent DLL
    BOOL GetResult_LV(CString resultName, double *result);
    long TestVI_LV(CString serialNumber);
    private:
    TD1Hdl m_LVStringArray;
    CMapStringToString m_resultMap;
    InitMeasurementsArray();
    PopulateResultMap();
    The "m_LVStringArray" is intended to hold the 2D array of strings that
    the test modules spit out. The "m_resultMap" is just for accessing the
    measurements from the parent DLL via the "GetResult_LV" function.
    The implementation of TestVI_LV is:
    long CArgoTestsLabVIEW::TestVI_LV(CString serialNumber)
    long rc = 0;
    char errStr[BUFFERLEN];
    strcpy(errStr,"");
    rc = InitMeasurementsArray();
    if (rc == 0) {
    rc = TestVI(serialNumber.GetBuffer(serialNumber.GetLength()), &m_LVStringArray, errStr, BUFFERLEN);
    PopulateResultMap();
    return rc;
    The accessor functions InitMeasurementsArray and PopulateResultMap are:
    long CArgoTestsLabVIEW::InitMeasurementsArray()
    MgErr err;
    if (m_LVStringArray)
    DSDisposeHandle(m_LVStringArray);
    m_LVStringArray = (TD1Hdl)DSNewHandle(sizeof(TD1));
    // code to check for NULL
    // Set number of strings in array to 0
    (*m_LVStringArray)->dimSizes[0] = 0;
    (*m_LVStringArray)->dimSizes[1] = 0;
    // Set total size of array structure. For now it is only as big as the long variable.
    err = DSSetHandleSize((UHandle)m_LVStringArray, sizeof(long));
    // code to check for error
    return 0;
    void CArgoTestsLabVIEW::PopulateResultMap()
    int numberOfResults;
    int i;
    int charCnt;
    numberOfResults = (*m_LVStringArray)->dimSizes[0];
    if (numberOfResults == 0) {
    return;
    m_resultMap.RemoveAll();
    for (i = 0; i < numberOfResults; i++) {
    charCnt = (*((*m_LVStringArray)->String[i * 2]))->cnt;
    (*((*m_LVStringArray)->String[i * 2]))->str[charCnt] = '\0';
    charCnt = (*((*m_LVStringArray)->String[i * 2 + 1]))->cnt;
    (*((*m_LVStringArray)->String[i * 2 + 1]))->str[charCnt] = '\0';
    m_resultMap.SetAt((LPCTSTR) (*((*m_LVStringArray)->String[i * 2]))->str, (LPCTSTR) (*((*m_LVStringArray)->String[i * 2 + 1]))->str);
    The problem I have is that I eventually get an access violation from
    the run-time engine if I try to call the test VI in a loop. I'm
    obviously having a memory management problem, but it escapes me as to
    where the problem is. Anybody have any ideas?

    smercurio_fc wrote:
    The problem I have is that I eventually get an access violation from the run-time engine if I try to call the test VI in a loop. I'm obviously having a memory management problem, but it escapes me as to where the problem is. Anybody have any ideas?
    (*((*m_LVStringArray)->String[i * 2]))->str[charCnt] = '\0';
    Hi smercurio,
          Have you solved this?  I don't work with C much anymore, but it looks, here, as if the memory at str[charCnt] isn't yours to address/change.
    Is index "charCnt" one char past the end of the String-memory allocated by LabVIEW? 
    just an idea!
    Hmmm, maybe page 9 is a bit far back to fish in the unanswered posts.
    Message Edited by Dynamik on 03-03-2006 02:03 AM
    When they give imbeciles handicap-parking, I won't have so far to walk!

  • Building eveything from source with ABS

    Hi. Im amazed with the ABS system. It´s aewsome, since I love to build all the software in my system from source, and compiling it and make it a binary package is just genious. But I have some questions, here they go:
    1 - Im compiling everything using the ABS tree using makepkg -b, so it compiles and generates packages also for its dependencies and I edited makepkg.conf so all the generated packages go to a folder (i.e.  /packages) so I can install them later using pacman -U package. My question is: If I later install a given packages, that depends on another, will that package be automatically installed when it´s needed? And is there a way to automatically redo all the source compiling and package generation automatically upon a source update for the packages I previously generated (like syncing in pacman)?
    2- Im trying to build my desktop from source the ABS way the cleanest way possible, without all that kde programs, just the core of its window manager, so I would like to know what sources to compile. I guess it would be something like xorg -> kde -> nvidia drivers -> compiz-fusion (not supported by ABS) . Any directions, guys? Thanks in advance.
    Last edited by Arthanis (2008-01-28 00:32:24)

    Arthanis wrote:Sorry, it´s because i didn´t know how to move the post, I saw that if fit in another part of the forum
    Don't worry too much.  I suppose I was being mean given you are new here. It is just that help tends to be better when clustered in one place. 
    jacko wrote:I thought about doing this for myself at some point, there is a lot of things I just do not need that is compiled in by default which I could rid myself of but, is all the time worth it in the end? Would like to hear someone elses expertise on this issue.
    Well, you could also add in more optimization for your specific processor.  But I honestly don't think you need this for every package.  Perhaps the kernel, glic and a couple of other often used and big packages, but in the end it is barely noticeable given Arch is fairly optimized by default and can make you system less stable.
    The only real reason to recompile is to add/remove options.  If the option is easy to add and doesn't bloat the package. the devs will probably add it for you if you ask in the bug tracker anyway.  I think the only package I now recompile are mozilla ones because I want the branding.

  • How to build applications from LabVIEW with Diadem?

    Dear all,
    I got a question regarding a LabVIEW application with integrated DIADEM report VIs (DIADEM Report). My problem is that the computer, on which the application shall run, has no DIADEM installed.
    For LabVIEW it is clear to install the RUNTIME engine, which works on PCs without installed LabVIEW, but is there something similar for DIADEM available?
    Thanks for your help in advance.
    Best regards,
    RidderM
    Message Edited by RidderM on 01-09-2008 07:39 AM

    No, I don't think it is possible.
    The LabVIEW VIs call the Activex interface of DIADem, I was also exploring this and the best I could think of is to contact a computer that has DIADem installed to run the LabVIEW-DIADem connection there.
    However I didn't ask it to NI.
    Ton
    Free Code Capture Tool! Version 2.1.3 with comments, web-upload, back-save and snippets!
    Nederlandse LabVIEW user groep www.lvug.nl
    My LabVIEW Ideas
    LabVIEW, programming like it should be!

  • Error Building DLL, LabView 8.2

    Hello everybody,
    I'm building a
    CVI application. I need some functions of LabView (related to time
    series analysis), so I'm trying to build DLLs with the .VIs I need. I
    followed all the steps necesary and visited all the related topics at
    ni.com. I always get the following error:
    Visit the Request Support page at ni.com/ask to learn more about resolving this problem. +¡
    Use the following information as a reference:
    Error -2147221480 occurred at Building DLL stub.
    This can be caused by illegal function or parameter
    names. Please verify your names are legal C identifiers and do not
    conflict with LabVIEW headers
    This error code is undefined. No one has provided a
    description for this code, or you might have wired a number that is not
    an error code to the error code input.
    Once, I got a correct DLL with no errors, so it should be possible for others.
    This is an example of what I'm trying to compile:
    And this is what appears, only for a moment, at the end of the
    compiling (it didn't appear when I manage to build with no errors):
    I'm using: LabView 8.2, LabWindows CVI 8.5, NI-DAQ 8.5, Windows XP (SP2)
    Any suggestion is really appreciated.
    Maybe another way to use this functions in CVI (I need functions related to spectral estimation, ARMA; MUSIC,...)
    thank you!
    Eduardo Tamargo
    Spain

    Hi Tamargo,
         The following KnowledgeBases may help you find out what is happening:
    Creating and Calling LabVIEW DLLs with Various Data Types from Microsoft Visual C++
    What are the Differences Between "Array Data Pointer", "Array Handle", and "Array Handle Pointer"?
    Calling a LabVIEW DLL from C with an Array in a Cluster as a Parameter
         Have you tried developing a very simple VI with an array as an input parameter and checking if the same problem takes place when you build the DLL?
    Regards,
    David Oña

  • Building report from PL/SQL cursor

    Hello,
    is there any way to build APEX report using just PL/SQL cursor?
    I don't have grant to SELECT from views or tables, but I can use some functions returning row types and cursors. I know I can use them to build table from scratch with htp.p etc., but it’s not very nice. I want to do it using APEX reporting with filtering and pagination functionality.
    Is it possible?
    Regards,
    Przemek

    Apologies for the delay, I was out of the office.
    Below is a package serving as the basis for creating a view based on a pipelined function. The package is just a skeleton and will not compile in its current form, you will need to go through it filling in the blanks as described by the comments.
    If you want some control over what rows are returned by the view from a larger result set, use the set_parameters function in the WHERE clause, E.G.:
    select * from really_big_complicated_slow_view where 1 = view_pkg.set_parameters(something_that_reduces_the_view_result_set_size);
    Or, a more concrete example:
    select result_text from view_to_convert_to_csv where 1 = view_pkg.set_parameters(pi_table => 'my_table', pi_where = 'whatever');
    In the spirit of full disclosure, I got the idea for using the "set_parameters" function in the view WHERE clause from a post or blog somewhere a couple of years ago but have lost track of who actually deserves the credit for the good idea.
    -Tom
    create or replace package demo_vw as
    -- Package to serve as the basis for a view based on a function
    -- Customize this record so that it represents a row from this view...
    type row_type is record (
    -- record fields here
    type table_type is table of row_type;
    -- This function is used in the DDL to define the view, for example:
    -- create or replace view my_view (col1, col2, ..., colN) as
    -- select * from table(my_view_vw.get_view);
    function get_view
    return table_type
    pipelined;
    -- Customize this function header to accept the parameters for this view, if
    -- any. If this view does not require any parameters, the set_parameters
    -- function may be deleted.
    -- This function should always return 1 and is called as follows
    -- select <whatever>
    -- from my_view
    -- where 1 = my_view_vw.set_parameters(p1, p2, p3, ..., pN);
    function set_parameters (pi_whatever1 in whatever,
    pi_whateverN in whatever)
    return number;
    end demo_vw;
    show error package demo_vw
    create or replace package body demo_vw as
    -- Customize this list of private global variables to match the parameters
    -- required by the view. These variables are set, reset, and validated by
    -- set_parameters, reset_parameters, and valid_parameters respectively...
    g_var1 whatever;
    g_varN whatever;
    function set_parameters (pi_whatever1 in whatever,
    pi_whateverN in whatever)
    return number
    is
    -- Customize this function header to accept the parameters for this view, if
    -- any. If this view does not require any parameters, the set_parameters
    -- function may be deleted.
    -- This function should always return 1 and is called as follows
    -- select col1, col2, ..., colN
    -- from my_view
    -- where 1 = my_view_vw.set_parameters(p1, p2, p3, ..., pN);
    begin
    g_var1 := pi_whatever1;
    g_varN := pi_whateverN;
    return 1;
    end set_parameters;
    function valid_parameters
    return boolean
    is
    -- Customize...
    -- Assumes that set_parameters has been called to set the value of the view
    -- parameters.
    l_valid boolean := true;
    begin
    return l_valid;
    end valid_parameters;
    procedure reset_parameters
    is
    -- Customize...
    -- This is called at the end of the get_view function to reset the view
    -- parameters for the next caller.
    begin
    g_var1 := null;
    g_varN := null;
    end reset_parameters;
    function get_view
    return table_type
    pipelined
    is
    -- build and return each row for the view...
    l_row row_type;
    begin
    if valid_parameters then
    -- do your process to populate the l_row variable here...
    pipe row (l_row);
    end if;
    reset_parameters;
    exception
    when others then
    reset_parameters;
    raise;
    end get_view;
    end demo_vw;
    show error package body demo_vw
    create or replace view demo
    as
    select * from table(demo_vw.get_view);

  • How to create a dll in LabVIEW with a 2D array

    I'm attempting to create a dll in LabVIEW with the following parameters from Test DLL.vi:
    Inputs:
    IN1 - Word
    Buffer - 2D array of Unsigned Byte
    Output:
    OUT1 - Unsigned Byte
    The prototype is constructed as follows in the Build Specifications of the Project:
    uint8_t TestDLL(int16_t IN1, TD1Hdl *Buffer)
    The dll builds successfully but when I attempt to use it in another VI (using the Call Library Function block) the prototype appears but it does not look like what was defined from the Build Specifications.  Instead it looks like the following:
    void TestDll(void );
    I attached some screen shots of all the settings as described above.
    Attachments:
    Test DLL Front Panel.JPG ‏85 KB
    DLL Prototype Before.JPG ‏84 KB
    DLL Prototype After.JPG ‏54 KB

    The Test DLL.vi is what I used to create dll prototype with in the Build Specifications in the project.
    Note:  There is no logic implemented yet.
    Attachments:
    Test DLL.vi ‏7 KB

  • Create dll with arrays and call it

    I am trying to create dll with labview in order to pass a 2d array to the main program. The problem is that I don't really know how to create the function to call it (I don't know much about pointers)
    The function I have created to call the dll is void Untitled1(TD1Hdl *Array1) which is suposse to return the array created on it.
    For example, in the program attached, how should I do to pass the array to another program using dlls?
    Thanks a lot,
    Juanlu
    Attachments:
    Untitled 1.vi ‏7 KB

    The code you've provided doesn't do anything (just a control wired to an indicator) so I'm not sure what you're asking here.
    If I understand correctly, you want to build a DLL from your LabVIEW VI.  From what language will you call that DLL?  There is no standard way to pass a 2-D array.  If you can convert to a 1-D array, you can use a simple pointer.  With a 2-D array, you're stuck with LabVIEW's array representation (the TD1Hdl type), which means that whatever code calls that function will need to understand the LabVIEW data type and how to manipulate it.

  • I just installed LV2011 and one dll from my vi won't load with the error "application configuration is incorrect"

    I just installed LV2011 and one dll from my vi won't load with the error "application configuration is incorrect", which is Windows lingo for "missing package dependencies".  All the computers at my company with 2010 loaded seem to do OK.  When I do a Dependencies Walk I get missing Visual C debug dll's missing plus IEshims and wer which both have a whole tree of dependencies missing on my machine.  The Windows install is the same "Windows XP version 2002 Service Pack 3" on my PC and the working PC's. So I'm thinking I have to uninstall 2011 and go back to 2010.  Is this correct?  Those VC debug dll's were installed on the machines with 2010 in them but were not installed in mine.
    I've heard the advice to recompile the dll with debug turned off but I don't have access to the source code.
    Thanks in advance.

    u87 wrote:
    Thanks for the reply.  This at least tells me that going back to LV2010 is not likely to solve the problem.  The missing dll's are:
    MFC90D.dll
    MSVCR90D.dll
    IESHMS.dll
    WER.dll
    And, once again, IESHMS and WER have other dependencies.  So perhaps i need to install the Visual C++ development environment.
    IESHIMS.dll is an Internet Explorer DLL that gets usually delay loaded by shdocvw.dll. As delay load it can not cause DLL load errors but only runtime errors. Maybe your DLL has it as direct dependency but that is unlikely since it does not have a documented interface.
    WER.dll is Windows error reporting for Vista/Win7.
    MFC90D.dll is the Microsoft Foundation classes and MSVCR90D.dll is the MS C runtime library, both as debug variant.
    So all the DLLs you mention are actually MS DLLs! You haven't identified the DLL that you try to access in LabVIEW that causes these error messages. IESHIMS and WER are usually delay loaded by any component that needs it and should not likely be used by non MS code.
    What is the DLL you try to load into LabVIEW and by whom? Get the provider of that DLL to provide you a non Debug build of the DLL. Installing Visual C on all the machines just to make the DLL load is not a solution, besides that it is likely not legal since I doubt you have that many licenses.
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Creat a DLL from a set of VIs

    Hello,
    I've a board that cames with Labview VIs for each of its functions.
    As I'd like to use it from CVI, I need a DLL.
    NI support team gave me the procedure to make such a DLL, it works fine.
    But, the create DLL can't be used by 2 application in same time, as it was possible with the old fashion driver on WindowsXP, delivered by the board supplier.
    When I've an application launched using functions in the DLL, it is loaded and seems to be "privative" to this application: if an other one tries to load the DLL, there is an error frolm Labview wrapper.
    Is there an option to make such DLL "reopenable" or "reentrant"?
    Regards

    The DLL is written by Lavview tool to encapsulate VI and get them reachable from CVI: the board supplier no loger delivers a C-compatible DLL, only Labview driver and C# / .net / Java... modules, that implies heavy changes in our application to manage. NI support suggested to make this way a DLL from the set of VI delivered by supplier.
    In our case, on XP, the main application was using the board but it was possible in parallel to send commands from an other application.
    You're right it may be a question of locking resources by DLL / VIs functions: I'd like to know it there is a specific otpin when creating the DLL to make it reentrant and possibly get double access.
     

  • Building DLLs with Returntype as string

    Is it possible to pass strings to a function and get a return type as a string.
    Actually iam facing a issue ,
    I have built a VI with Input and output as strings,the VI is working correctly
    when the dll for that VI,
    Function prototype is always void and output is always passed as a reference parameter to the function.
    Attachments:
    Output return option..JPG ‏164 KB
    Return value option.JPG ‏157 KB

    Hi,
    Building DLLs in LabVIEW is described in this tutorial.  
    Mathscript can call shared libraries such as DLLs, however make sure
    that they are compliant with the supported data types as stated here in
    this help page.  All supported functions for calling/loading shared libraries is described here. 
    Note that these functions are not supported with the base package.  The
    details of the sytax of each function is described in their specific
    help page.
    Hope this helps!
    Regards,
    Nadim
    Applications Engineering
    National Instruments

  • Difficulty synchroniz​ing data from VISA resource with data from a physical channel

    Essentially what I'd like my program to do is control the electrical power going (sourcing either current or voltage) into a light and measure the intensity of the light at a given power level, and then do this automatically for ~1000 increments of the source voltage/current.
    One of my lab partners made a program a while back which does what we want("LIV Sweep Rev.vi" the first image in the link at the end of this post), but it's a bit sloppy: the program is able to interact with the power supply (connected directly to the computer via USB) and make it turn on, increase the voltage/current, and record the "IV" characteristics just fine. The program can also interact with the light detector (connected via NI-BNC 2110) and gather the photocurrent data. The problem, however, is that the data wouldn't be in sync. The photocurrent data for when the light was actually supplied with 1V would be improperly recorded in the cell for when 2V are applied to the light. To fix this problem my lab partner added in a time delay so that the detector will pause for ~0.35 sec (user-specified in front panel) before gathering data.
    The program works, but I figured there had to be a better way. The thing about the timing, however, is that it changes from run to run. Sometimes a delay of 0.45 s works well, and other times the power supply will have shut down while the detector is still gathering data (and thus we miss the low end of the sweep). Other times the detector will turn on too early, which will cut off the high end of the sweep.
    (Note: I have next to zero experience with LabVIEW, but I know a little bit of java, so I understand most programming jargon)
    I spent all day yesterday trying to find out how to synchronize two data aquisitions (my attempt is shown in the "LIV SweepSummerDuncanRev3.vi" in the link at the bottom, 2nd image) but I'm running into trouble when I try to trigger the sample clock using the VISA Resource Name for the power supply.
    The programs can be viewed here:
    http://imgur.com/a/Up3eS
    I'd really appreciate any and all advice that you folks have to offer!

    Change the code such that rather than using a ramp from your power supply, just output a single value. Then do your measurement and then step to the next value in your ramp.
    You can use a State Machine (SEarch if you do not know that term in LV).
    Some gear will allow specifying a ramp driven by an external clock. If you widget can handle an external clock/trigger that approach could run faster.
    Without hardware to syncronize the various sub-systems you would have to resort to using a RT OS and depending on the instruments, even that could be hit-n-miss.
    So re-code to step-measure-step-measure etc.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • I have used a 'for loop' to create an array of output data, however I want the each of the data sets from the array to be placed into a 1-D array. How do I concatenate the output of the for loop into a 1-D array?

    I am using this to create a data set that will be passed as an anolog output therefore it needs to have the correct array dimensions to go into the analog write vi.

    I'm updating my request... I've figured out how to do this by copying an example that uses a simple FOR loop (as seen in the attached current version of my VI). My question now becomes this: Is there a way to save the Y values corresponding to those X values into two more arrays? That is, just for argument's sake, let's say I took the first 100 elements from the X array, and found them to be positive. Then I would like to take the first 100 elements of the Y array and put them into a 'Y Values for X > 0' array. ...And likewise with the negative X values, they should have a separate array of corresponding 'Y values for X < 0' array.
    I can see that I should somehow save the indices of the positive X values from the large arrray wh
    en I sort them out, and use those indices to pick out the elements from the main Y array with the same indices.
    I just can't seem to set up the code necessary to do this. ...Can anyone help, please?
    Attachments:
    Poling_Data_Reader_5i.vi ‏79 KB
    30BLEND.txt ‏3 KB

Maybe you are looking for