Multiple CVI programs running concurrently

Hi,
I would like to know if I have 3 CVI programs which each program needs to be triggered at 25msec time interval to do the individual task and 5msec time interval to do same task of acessing read/write reflective memory. All 3 programs have their own GUI displays panels.
Is it possible to run these programs concurrently without affect their timming and software processes?
If is not possible, how can I achieve the tasks of the 3 programs in one machine?

Not necessarily.  If you are smart, and choose your iPhoto preferences carefully, you can set iPhoto to launch in an external editor for those photos you wish to edit.  Mind you, be careful not to edit your originals, and always make a duplicate photo for an image you wish to edit, in event you make a mistake.  You can always delete it later.

Similar Messages

  • Autostarting multiple terminal programs?

    Hi there,
    Is there any way I can start multiple terminal programs using Awesome WM?
    I'd like to start htop, alsamixer, cmatrix, irssi, moc and xfce-4 terminal. So essentially I'd like to start six alternate versions of xfce4-terminal on startup.

    Hi everyone.
    I now have multiple terminal programs running using urxvt -name, which works great. However, I can't get them to shift to different tags. I've tried quite a few different methods, but I can't seem to get it working.
    Using xprop I can determine that the window class is (using ranger as an example) is:
    WM_COMMAND(STRING) = { "urxvt", "-name", "RANGER", "-e", "ranger" }
    but in the rules section, I've tried multiple variations and nothing seems to work.
    --Autostart Programs
    awful.util.spawn_with_shell("urxvt -name HTOP -e htop")
    awful.util.spawn_with_shell("urxvt -name RANGER -e ranger")
    awful.util.spawn_with_shell("urxvt -name CMATRIX -e cmatrix")
    --awful.util.spawn_with_shell("urxvt")
    --awful.util.spawn_with_shell("")
    -- {{{ Rules
    awful.rules.rules = {
    -- All clients will match this rule.
    { rule = { },
    properties = { border_width = beautiful.border_width,
    border_color = beautiful.border_normal,
    focus = true,
    keys = clientkeys,
    buttons = clientbuttons } },
    { rule = { class = "HTOP" },
    properties = { tag = tags[1][4] } },
    { rule = { class = "urxvt -name RANGER -e ranger" },
    properties = { tag = tags[1][4] } },
    { rule = { class = "urxvt", "-name", "CMATRIX", "-e", "cmatrix" },
    properties = { tag = tags[1][4] } },
    Also, Trilby with Awesome WM tag essentially refers to a virtual desktop. With regards to the 2-D array, I believe the first digit refers to the monitor but the second refers to the tag you want to place it in.
    Edit:
    I think I will give Tmux a go. It does seem incredibly useful.
    Last edited by Gwynplaine (2014-11-14 20:15:51)

  • Can we run multiple sapinst programs in parallel?

    We are planning to upgrade our EP, XI and BW simultaneously. These SIDs all reside on the same server and same OS. Is it possible to run multiple sapinst programs in parallel? I know it may require specifying separate ports for the 2nd and 3rd instance of sapinst. For example: sapinst 1 gets default ports 21212, 21213. sapinst 2 will take 21214, 21215 and sapinst 3 takes 21216 and 21217.
    Has anyone attempted this sort of a thing before? Appreciate your thoughts.

    Never done that before, maybe it works .. however it could run into problems when the sapinst are trying to access the same paths / files.
    Regards,
    Siddhesh

  • Fatal Run-Time - Unknown Fault - on any CVI program close

    I have been trying to track down a few what seem like phantom Fatal Run Time Errors on my program closes.
    I am running LabWindows/CVI 2010 Full 10.0.1 (419)
    I originally posted here -> http://forums.ni.com/t5/LabWindows-CVI/EasyTab-ConvertFromCanvas-memory-leak/m-p/3084769#M69465
    As I thought this was related to tabs, where my resource tracker shows 'unclosed' resources.
    Now I am opening a different program and have found that even though I put my return 0; at the top of my main loop, I still get a fatal run time error.
    The error is exactly:
    FATAL RUN-TIMe ERROR
    Unknown source position, thread id 0x00001BB4 
    The program has caused a 'Unknown' fault at 0x748A4F11
    This occurs every time I run my program in the CVI IDE.
    There are no allocated resources in my resources window.
    Searching for either address in my map file brings no results.
    Thanks,
    Nick

    Hi ngay528,
    I have attached a link below to one of our discussion forums that walks through using the Resource Tracking feature of LabWindows/CVI. Again, sometimes this particular error is caused by leaving resources open at the end of an application, so this feature can help us identify those resources if that is the case. Please follow the steps listed in the solution of the thread (message number 4, marked in green). 
    FATAL RUN-TIME ERROR: Unknown source position, thread id 0x00000EB4: The program has caused a 'General Protection' fault at 0x00459B9D:
    http://forums.ni.com/t5/LabWindows-CVI/FATAL-RUN-TIME-ERROR-Unknown-source-position-thread-id/m-p/16...
    Thomas N.
    Applications Engineer
    National Instruments

  • Restrict number of concurrent programs running by one user.

    Hello,
    How can I restrict whole number of concurrent programs running by one user?

    Hi
    I am not sure if I understand the question correctly, but if you are asking what I think you are asking, then you can restrict the number of simultaneous concurrent jobs that a user is allowed to run with this profile option;
    "Concurrent:Active Request Limit"
    I recommend that you set this at the User level and not the Site level since this parameter has caused problems for me in the past (certain types of transactions submit a batch of concurrent jobs, and if all the jobs are not able to start at the same time then the concurrent jobs go into a pending state and never complete. I have not worked out why this happens, so I just stopped restricting the number of concurrent jobs that a user could run).
    Frank

  • ORACLE error 1847 in FDPSTP while running concurrent program

    When I try to run concurrent program getting below error
    ORACLE error 1847 in FDPSTP
    Cause: FDPSTP failed due to ORA-01847: day of month must be between 1 and last day of month
    ORA-06512: at line 1
    Parameters
    Org_id number
    Date select sysdate from dual;
    Executable
    PROCEDURE call_iptp15c (
    p_operating_unit_in IN ap_invoices_all.org_id%TYPE,
    p_start_date_in IN DATE,
    ERROR_BUF OUT VARCHAR2,
    RETCODE OUT VARCHAR2
    What would be the reason for this.

    Hi,
    Please mention the application release along with the database version and OS.
    Is this a custom or seeded concurrent program?
    Please make sure you use a valid date format -- Note: 19171.1 - OERR: ORA 1847 day of month must be between 1 and last day of month
    Thanks,
    Hussein

  • Running concurrent SAPEHPI on the same OS

    Hello
    We have to upgrade more then one SAP system running SAPEHPI, the SAP system are running on the same server.
    if running more then SAPEHPI on the same host for diffrent SAP system, tcp port will be busy (4239 and other)
    Do you know of a way to run SAPEHPI concurrent on the same server (change of http ports)
    TIA
    Erez

    Hi Erez,
    Kindly note that running concurrent EHPI's on the same system is a complicated process and unless very much required better not to use this.
    If you run several enhancement package installations in parallel on the
    same host, you have to use different port numbers for each. When you
    start the installation program, specify the port numbers as follows:
           o  httpport=<http port number>
           o  guiport=<GUI port number>
           o  -srvarg=/DSUService/abaptoolport=<port number for ABAP inst.
              tool>
    You can only run multiple SAP Enhancement Package Installer on ABAP only
    systems, not on dual stack or Java only systems.
    Do you use different port numbers? Are all ports accessible, especially
    on the frontend? (See port usage with netstat -a command)
    For configuring the different EHPI-Directories you can for instance
    use this: usr/sap/<SID>/EHPI
    where <SID> is the of the systems, where you execute the EHP
    installation.
    Please take care that the paths of the different EHPI-Directories
    that you will define are not very long!
    I hope this answers your query.
    Regards,
    Abhishek

  • Can multiple LabVIEW programs simultaneously access the same NI-DAQmx hardware?

    I am developing a test station system that, in essence, runs several
    seperate LabVIEW programs simultaneously on the same computer, each
    controlling a different set of I/O channels on one shared set of NI
    DAQ hardware (analog and digital I/O PCI boards with external signal
    conditioning).
    I have already gotten a system like this running almost flawlessly
    using LabVIEW 6.1, NI-DAQmx 7.1 with traditional channels, and older
    E-series DAQ hardware. So long as two programs do not try to write to
    the same output channel simultaneously, everything works exactly as
    expected--I can even read from the same (named) channel simultaneously
    from more than one program. The only issue I have had is that if
    one
    of the compiled applications is closed (not just stopped, but closed)
    while others are still running, Windows XP (SP1) will bluescreen on a
    driver error. This is undesireable, but acceptable (though if there's
    a fix/workaround, I'd love to hear it).
    I am now building a similar system using mostly the same software
    (with an upgrade to LabVIEW 7.1), and I've noticed that the new
    M-series DAQ hardware seems to offer much more bang for the buck than
    old E-series hardware and its kin.
    My question is this: It appears that I/O on M-series hardware must be
    performed with new mx channels, with traditional channels not being an
    option. I am therefore wondering if I will be able to do this kind of
    multiple simultaneous access with mx channels, or if I must purchase
    the classic hardware and use traditional channels for this somewhat
    unorthodox application.
    (Incidentally, the multiple simultaneous program thing is a
    requirement for this system, as it is the only clean way to run
    multiple
    identical copies of the same complete program that only
    operate on different I/O channels, and re-doing the program from
    scratch is not an option.)

    Dear Anonymous,
    Thank you for contacting National Instruments.
    To address your question, I don't know if multiple simultaneous access with mx channels is possible, but I do not see why it wouldn't be. The best way to find out would be to test it. I don't have your program or hardware, so I'm pointing you to some Compatibility VIs. These are VIs that look exactly like Traditional DAQ VIs except that underneath they call the DAQmx driver instead of the Traditional DAQ driver. If your device works when you substitute these Compatibility VIs in for the Traditional DAQ VIs, then you'll know the M Series boards will work for you.
    Here is the link for information about the Compatibility VIs:
    http://digital.ni.com/softlib.nsf/954feaeea92d90918625674b00658b
    83/9d67f671bcc6850586256e630059308b?OpenDocument
    Let me know if you have any further questions or if this does not resolve your issue.
    Thanks again and have a great day!
    Chad AE
    Applications Engineer - National Instruments

  • Creating dll, lib, fp's to be used in other CVI programs

    Disclaimer: I am a self-taught CVI (and C) programmer in which I learned from examples, NI forums, and google  
    Main question: What is the proper way to create a dll, lib, and fp to be used in other CVI programs?  What I am doing is creating a "wrapper class" called PowerSupplies (and other wrapper classes) that takes arguments from the user and call the correct functions based on the power supply model type.
    Inside my Power Supplies project, I have included each power supply's function panel.  In the C file, I have added my functions and include file.  for example, here's one
    int _VI_FUNC Supply_InitSupply (int devs, char *resourceName, int IDQuery, int resetDevice, int *instrumentID) {
    switch (devs) {
    case AG663XXA:
    return ag663xxa_init(resourceName,IDQuery,resetDevice,instrumentID);
    case HPE364XA:
    return hpe364xa_init (resourceName, IDQuery, resetDevice, instrumentID); //Has Voltage and Current
    return -1;
    and then of course at the bottom, there resides the DllMain and DllEntryPoint functions.  What the heck are these, and am I suppose to rename these?  I ask because I created another wrapper classes with DMM's and I get the Multiply Defined Symbol Error with these two functions when using together in a separate program.
    Additionally, I have created a header file, which can be included in other CVI programs to know what functions there are.  I noticed I could "Generate Prototypes" after the fact and wasn't sure if this was the correct way or not.  My header file is below:
    #ifndef __PowerSupplies_H__
    #define __PowerSupplies_H__
    #ifdef __cplusplus
    extern "C" {
    #endif
    //==============================================================================
    // Include files
    #include "cvidef.h"
    #include "ivi.h"
    //==============================================================================
    // Constants
    #define POWER_SUPPLY_ENUM_FACTOR 200
    typedef enum
    AG663XXA = 200,
    HPE364XA
    } power_supply_type;
    static IviStringValueTable power_supply_table =
    {AG663XXA, "AG-663##X"},
    {HPE364XA, "HP-E364#A"}
    //==============================================================================
    // Types
    /************** Static Function Declarations **************/
    /************** Global Variable Declarations **************/
    /************** Global Function Declarations **************/
    int _VI_FUNC Supply_InitSupply(int devs,char *resourceName, int IDQuery, int resetDevice,int *instrumentID);
    /*commented out long list of functions for this forum's sake*/
    int _VI_FUNC Supply_Close(int devs, int instrumentID);
    int __stdcall DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved);
    int __stdcall DllEntryPoint(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved);
    #ifdef __cplusplus
    #endif
    #endif /* ndef __PowerSupplies_H__ */
    I then have built it as a static library and dynamic link library.  I then generated a Function Panel from the header file with Prefix Supply_ and Qualifier as _VI_FUNC.
    All worked nice and dandy, copied files to appropriate places in the IVI directory.
    In my other CVI program in which uses these "wrapper classes", I have included the function panel's that I created.
    Well with the error i mentioned above about Multiple Defined Symbol, I have come here to figure out what went wrong.
    What are the DllMain and entry point functions?
    Is my c and h files created correctly with proper prefixs?  I tried extern once, and got errors I believe.
    Does the function panel use the .lib files? Am I going about this correctly or is there an easier/more efficient way?
    Any and all advice is greatly appreciated!!!
    Thanks!

    There's info in the CVI help on how to make DLL,s in CVI.
    There's quite a bit more to it than you might imagine at first.
    I've pasted a DllMain that I wrote.
    Some key issues:
    You can put a type library into your DLL, that way if you add the DLL as a reference in Visual Studio, VS will know the prototype without your having to bring in a header file or import library of any kind.
    CVI created DLL's are not "active" DLL's and should not be registered with regsvr32, this will just make a mess.
    You can tell CVI what you're exporting in a couple of different ways, I always use "symbols marked for exports"  and use the macros DLLEXPORT DLLSTDCALL, but NI says using a header file is preferable, I forget why.
    The DLL search path is a wonderful thing - it's easy to wind up using a different copy of the DLL than you intended due to the way windows searches for the DLL.  Different versions of windows have slightly different rules.  Some allow redirection to help you manage the search path.
    CVI will not automatically switch between debug and release versions of the import library - you have to call out the correct version in your project and link it to any executable using it. 
    You can do "dynamic" loading / linking of a CVI DLL without binding to an import library using GetProcAddress function, but it's easier to use the import library.
    A DllMain isn't necessary but is good practice.
    Good luck.
    /*== PRAGMAS =====================================================================================================*/
    #if defined (_CVI_) && (_CVI_ >= 850)
      #if defined _CVI_DEBUG_
        #pragma C99_extensions_on  
      #endif
    #endif
    /*== INCLUDE FILES ===============================================================================================*/
    #include <windows.h>
    #include <userint.h>
    #include <ansi_c.h>                                                                                     
    #include <cvirte.h>
    #include <stdio.h>
    #include <utility.h>
    #include <analysis.h>
    #include <toolbox.h>
    #include <formatio.h>      
    /*== MACROS ======================================================================================================*/
    #define MAX_STRING_SIZE 256   
    #define MAX_MESSAGE_SIZE 256
    #undef  MAX_LOG_MESSAGE_SIZE
    #define MAX_LOG_MESSAGE_SIZE 256                                                
    #undef  WriteFile   // To deconflict formatio (CVI) version of this function
    #undef  ReadFile    // To deconflict formatio (CVI) version of this function             
    /*== TYPEDEFS ====================================================================================================*/
    // Data type providing reference structure for thread local storage (TLS).
    typedef struct ThreadData {
      CHAR ErrorString[MAX_STRING_SIZE];
    } ThreadData, * LPTHREADDATA;
    /*== MODULE SCOPE VARIABLES ======================================================================================*/   
    static FILE * logFileStream;                      
    static HANDLE hModule = INVALID_HANDLE_VALUE;
    /*== GLOBAL (HEAP) VARIABLES =====================================================================================*/
    // TLS index
    DWORD g_dwTlsIndex;
    /*== PROTOTYPES ==================================================================================================*/    
    /*== CODE ========================================================================================================*/  
    * Function: DllMain
    * Description:
    *    DLL Main entry point.  Provides for DLL initialization.  
    * Limitations:
    * Parameters:  System defined.
    * Return Value:
    BOOL WINAPI DllMain (HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved) {
      LPTHREADDATA lpThreadData;      
      switch (fdwReason) {
        case DLL_PROCESS_ATTACH:
          // Allocate a TLS index.
          if ((g_dwTlsIndex = TlsAlloc ()) == 0xFFFFFFFF) return FALSE;
          hModule = hInstDLL; 
          // No break - fall through and initialize for main thread
        case DLL_THREAD_ATTACH:
          lpThreadData = (LPTHREADDATA) calloc (1, sizeof (ThreadData));
          if (lpThreadData != NULL) TlsSetValue (g_dwTlsIndex, lpThreadData);
          lpThreadData = TlsGetValue (g_dwTlsIndex);
          lpThreadData->ErrorString[0] = '\0';     
          break;
        case DLL_THREAD_DETACH:
          // Release the allocated memory for this thread.
          lpThreadData = TlsGetValue (g_dwTlsIndex);
          if (lpThreadData != NULL) free (lpThreadData);
          break;
        case DLL_PROCESS_DETACH:
          // Free the allocated memory for this thread (main thread).
          lpThreadData = TlsGetValue (g_dwTlsIndex);
          if (lpThreadData != NULL) free (lpThreadData);
          // Release the TLS index.
          TlsFree (g_dwTlsIndex);
          break;
      return TRUE;
    } // end, DllMain
    INT DLLSTDCALL DllEntryPoint (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
      // Included for compatibility with Borland
      return DllMain (hinstDLL, fdwReason, lpvReserved);
    } // end, DllEntryPoint
    implement dll functions like this:
    int DLLEXPORT DLLSTDCALL myFunc (int iParam) {
      return 1;

  • Unable to run Concurrent Request from Trigger

    Hi All
    Lots of Forums out there on this but I can't resolve it.
    Trigger as below does not run concurrent program.
    CREATE OR REPLACE TRIGGER APPS.XXGL_PNL_CONTROL_snapshot
    AFTER INSERT OR UPDATE
    ON XXOBI.XXGL_PNL_CONTROL
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    WHEN (
    NEW.STATUS ='APPROVED'
    declare
    l_errbuf varchar2(4000);
    l_retcode varchar2(4000);
    L_REQUEST_ID NUMBER;
    l_phase VARCHAR2 (240);
    l_status VARCHAR2 (240);
    l_dev_phase VARCHAR2 (240);
    l_dev_status VARCHAR2 (240);
    l_message VARCHAR2 (2000);
    l_call_status BOOLEAN;
    L_set_mode boolean;
    PRAGMA AUTONOMOUS_TRANSACTION;
    begin
    L_Set_mode := FND_Request.Set_Mode(TRUE);
    fnd_global.APPS_INITIALIZE (fnd_global.user_id,fnd_global.resp_id,fnd_global.resp_appl_id);
    l_request_id := fnd_request.submit_request(application => 'RMB GL',
    program => 'XXGLBSSNAP',
    argument1 => :NEW.CALENDAR_DATE,
    argument2 => :NEW.PNL_ROLLUP
    commit;
    end;
    If I remove the commit I get the following error
    active autonomous transaction detected and rolled back
    Cause: Before returning from an autonomous PL/SQL block, all autonomous transactions started within the block must be completed (either committed or rolled back). If not, the active autonomous transaction is implicitly rolled back and this error is raised.
    Action: Ensure that before returning from an autonomous PL/SQL block, any active autonomous transactions are explicitly committed or rolled back. ----------------------------------------------------------------------- 06520 through 06529 reserved for Foreign function errors
    Any help would be hugely appreciated
    Nicki

    after fnd_request.submit_request you must use - commit
    try change you code
    CREATE OR REPLACE TRIGGER APPS.XXGL_PNL_CONTROL_snapshot
    AFTER INSERT OR UPDATE
    begin
       cp_run(
                :NEW.CALENDAR_DATE...
    end;
    CREATE OR REPLACE PROCEDURE  cp_run (
           ... p_date indate ...
        IS
           PRAGMA AUTONOMOUS_TRANSACTION;
    l_request_id := fnd_request.submit_request(application => 'RMB GL',
    program => 'XXGLBSSNAP',
    argument1 => p_date
    commit;
    ...for example http://www.java2s.com/Tutorial/Oracle/0560__Trigger/MarktriggerwithPRAGMAAUTONOMOUSTRANSACTION.htm

  • While run "Program - Run Financial Statement Generator" occurs errors? why

    while running "Program - Run Financial Statement Generator" occurs errors?
    Program - Publish FSG Report
    output:
    The concurrent request ID of your FSG request is 309112.
    The concurrent request ID of your XML Report Publisher request is 309113.
    hawk_BS_IFRS PC by month (PL) (Financial Statement Generator)
    can output good format xml
    but
    Program - Run Financial Statement Generator
    the phase: Completed and
    the status: Error
    anybody can give me some sugguestion?

    hello, I have known why.
    because my xml publisher's version is 5.6.1. it's not afford it .
    you can refer to metalink.
    and it's not problem in 5.6

  • How to assign concurrent program to concurrent manager

    Hi:
    How to assign concurrent program to concurrent manager? or the other way around. It was an interview question. for R12 or 11i
    Thanks

    Srini Chavali wrote:
    All concurrent programs, by default, will be run thru the Standard Manager. If you need to have a specific manager run a program, you need to define specialization rules (in Concurrent > Manager > Define, "Specialization Rules" button) for that manager.
    http://docs.oracle.com/cd/E18727_01/doc.121/e12893/T174296T174302.htm#fndcpdcq.QUEUE_CONTENT
    And that's exactly what is mentioned in the docs referenced in my previous reply.
    Thanks,
    Hussein

  • Firefox 3.6.10 on WinXP spontaneously shuts down without warning after a certain time, whether or not the Internet is in active use, without disrupting or otherwise affecting any non-Internet programs running simultaneously.

    Ffox 3.6.10 on a Compaq Evo N8OOv began spontaneously shutting down w/o warning, closing all Internet applications w/ot affecting the operation of the computer, including non-Internet programs running simultaneously. Avira AntiVir Personal and with Spybot gave no hits suggesting infection.

    See:
    * http://kb.mozillazine.org/Firefox_crashes
    * [[Firefox crashes]]
    Your above posted system details show multiple Java Console extensions.
    You can uninstall (remove) the Java Console extensions and disable the Java Quick Starter extension as you do not need them to run Java applets.
    See http://kb.mozillazine.org/Java#Multiple_Java_Console_extensions
    See also http://www.java.com/en/download/help/quickstarter.xml - What is Java Quick Starter (JQS)? What is the benefit of running JQS? - 6.0
    Disable the Java Quick Starter extension: Tools -> Addons -> Extensions
    Control Panel -> Java -> Advanced tab -> Miscellaneous -> Java Quick Starter (disable)

  • Will the antispyware that downloaded with the Firefox upgrade interfere with my CA security suite? I've been told not to intstall multiple security programs.

    Will the antispyware that was downloaded with the Firefox upgrade interfere with my CA security program? I've been told not to install multiple security programs?

    Alternatively, though we're not sure how it got on your system, if you don't want it installed you should be able to remove it via Add/Remove programs in your Windows XP Control Panel.
    From the Microsoft documentation for XP, located here...
    http://support.microsoft.com/kb/307895
    How to remove an installed program
    To remove a program that is installed on your computer, follow these steps:
    1. Click Start, click Control Panel, and then double-click Add or Remove Programs.
    2. In the Currently installed programs box, click the program that you want to remove, and then click Remove.
    3. If you are prompted to confirm the removal of the program, click Yes.
    Some additional observations...
    You seem to be running Firefox 3.0, for which security support ended in March of 2010. You may wish to update your Firefox to the newer Firefox 3.6 in order to continue to receive security updates. I believe simply pressing Help in the menu bar of Firefox, and then "Check for Updates" will accomplish this.
    Lastly, your Adobe Flash player for Firefox is out of date, and contains a security vulnerability. It can be updated by following the below link and clicking Agree And Install Now and then running the downloaded file.
    http://get.adobe.com/flashplayer/

  • Book: LabWindows/CVI Programming for Beginners

    Has anyone read the followong book LabWindows/CVI Programming for Beginners LabWby Shahid F. Khalid ?
    This book in not in print anymore and  inpossible to find.
    Does anyone know of any similar source material?
    I have both LabWindows/CVI Basics I&II but the content is extremely limited and not enogh details.
    Does NI offer anything better than the embedded Help?
    A Programmers Reference would be nice.
    Thanks.

    Hello NI Nubie,
    I have that book, and also its "advanced" sequel by the same author.  They both went out of print a long time ago.  The books are OK, but they are only available on the secondary market for ridiculous prices now, and that is assuming that you can even find them.
    If I could pass on some advice that might be more helpful to you in learning CVI: pretend those books do not exist for now.  Instead, I think that for learning CVI, there is nothing better than looking at other people's CVI project-level code and really understanding it, inside and out, and then making your own modifications to it to enforce what you just learned from it.  There are several places to start looking for project-level CVI code, which I will list in (what I think) are the highest-to-lowest priority of your training.
    The first place I recommend is the examples that ship with CVI (located in the "samples" directory under the CVI installation directory).  I say this because these are supported by the NI developers and support crew.  In fact, back in 1995 when I was learning CVI 3.1, I dove into the "Icon Editor" application, for several reasons: it was a *complete* application (as opposed to the other, mostly point-solution "academic" examples under the samples directory), it showed how to segment your code into multiple source and header files, and it showed many advanced user interface features (menus, cut-and-paste).  There is now an "example finder" to help locate examples that "fit" to what you are currently trying to accomplish.  I also use the freeware "grep-like" tool called "Agent Ransack" (URL is below) to hunt down specific CVI functions and identifiers (such as certain EVENTS and how these examples use them).
    Agent Ransack on MythicSoft.com
    The second place I recommend is the other "support" locations on the NI web site.  There are knowledgebase articles, tutorials, submitted examples, community examples, and also extra "academic" examples from NI engineers that aren't the same as the ones that ship with CVI.  There are also whitepapers scattered in there as well, and a few that have hidden sample code that is embedded at the bottom of the article.  You really have to hunt for this stuff, and it would be great if the NI folks could try to index this a bit better somehow.  I sometimes even resort to using Google's search engine to find them on the NI web site, because the NI search engine may not find them.
    The third place I recommend are user-based web sites created by power-users of CVI who like to share their code.  Two that I found long ago that remain at the top of the list (in my opinion).  One is Guillaume Dargaud's site, where he has lots of CVI examples and freeware.  The other is Philippe Baucour's "Rebel" CVI site (but you will need to use an online translator if you don't speak French, though).
    Guillaume Dargaud's web site (drill down for CVI examples and freeware)
    Philippe Baucour's "Rebel" CVI web site
    Finally, you might find it interesting to know that there is a tremendous repository of C source code scattered all around the Internet, mostly as part of free and open-source software projects, many of which are supported on sites such as SourceForge.net, and many other locations.  Many of these places are filled with people (in forums or mailing list servers) who live in the C programming world on a full-time basis, and can help you through some of the advanced techniques.  Some of these projects might be targeted to Windows, some use cross-platform techniques, so they have a chance of being applied to your CVI efforts.  There is also an entire universe of programming "libraries" and capabilities that you can use to augment your CVI projects as well.  All of this because of the open-source revolution, riding on the back of GNU/Linux and the community and corporate entities that are backing it all.  Examples that come to mind are Cygwin and MinGW.  If you only have the time to just look up these two items on Wikipedia, you will see that this is just the tip of the iceberg of the possibilities that are available to you as a C and CVI programmer on Windows.
    I hope this was helpful to you.
    JB
    To whom it may concern: My alias is also my nickname, I've had it since I was a (very) skinny basketball-playing teen. OK, so I've got a 38 inch waist now, but my hometown friends haven't shaken that appellation for me. I trust that you will someday be OK with that alias, as I have been with that nickname.

Maybe you are looking for