Programati​cally updating a cluster in a cluster

I have a cluster that contains several arrays and a cluster of controls.  I am trying to create a method for a user to select one of the controls in the inner cluster and update the value.  I am trying to populate a ring control with a list of the control names to allow selection of the desired control.  The select param sub VI allows selection of the arrays or cluster, but when I use this index to select the reference for the cluster, the following property node doesn't offer the choice of selecting the controls[] property for the cluster.  Is this possible?
Jim
LV 2013
Attachments:
cluster.vi ‏138 KB
SelectParameter.vi ‏22 KB

You might want to look at the vcluster library from the "OpenG LabVIEW data tools". That allows dealing with cluster elements by name.
If you don't have OpenG here are some installation instructions.
http://forums.jkisoft.com/index.php?showtopic=233
Things can get complicated if you need to handle multiple data types, and more than one level in the hierarchy.
The variant probe on lavag is a good example of a very generalized read only version, but it requires LV 8.5.
I attached a quick prototype that should open on LV 8+ with the openg library. Be aware it's lacking error checking.
Instead of a menu ring I would use a multicolumn listbox with the name in the first column and the value in the second, to make it easier to see what the current values are. If you wanted to get extra fancy you could try to use Type Sensitive Popups from lavag.
Attachments:
cluster 2.vi ‏86 KB

Similar Messages

  • Programati​cally update the Report Option dialog in NI Test Stand 4.2.1

    Hello,
    I would like to know, what is the procedure to modify Customise the Report Option dialog window with custom default value before displaying the window to user.
    We are writing our own process model to customise report options, Database option and User Management module of Test Stand. I am unable to update the Dialog window with modified settings.
    Please help me.
    I followed the instructions mentioned in link http://forums.ni.com/t5/NI-TestStand/Programmatica​lly-change-station-option-in-TestStand-2-0-1/td-p/​...
    But this is customization for the single sequence and also this is not updating the Report Options Dialog window. Please find the screenshot which i want to customize.
    Solved!
    Go to Solution.
    Attachments:
    ReportOptionWindow.JPG ‏64 KB

    Hi
    The screenshoot you have posted is done my CVI- modelsupport2.dll with funcion DisplayReportOptionsDialogEx.
    in side is code there is ReadReportOptionDefaultsEx (this function will be also used in model sequence "Get Report Options")
    it will read "TestStandModelReportOptions.ini" .
    So there were 2 solutions.
    1. ) Changing ReadReportOptionDefaultsEx (Not recommend because changing stuff from NI is bad, by chaninging you are in charge off)
    2.) Just change the ini File for your needs.
    Hope this helps
    Juergen
    =s=i=g=n=a=t=u=r=e= Click on the Star and see what happens :-) =s=i=g=n=a=t=u=r=e=

  • How do I update a cluster that is in an array?

    I have an array composed of six clusters called "Station". I'm getting values that I would like to store in each of the six clusters in the "WO" and "SN" strings from a subvi that outputs an array of six values of WO and SN. How do I do this?
    Thank you.
    Solved!
    Go to Solution.
    Attachments:
    Untitled 2.vi ‏16 KB

    If the size is always size, and you get six elements each from the subVI, the easiest would be the following.
    (Of course th input cluster needs to have six elements. If you don't get it from a input connector, make at least sure that the default array control contains six elements. In this example, all input elements remain the same, except for the update fields.
    (I haven't looked at your zip file yet)
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    ModifyArrayOfClusters.png ‏5 KB

  • Problem : controls & indicators not updated when programati​cally open Front Panel

    Hi,
    I have a strange problem when I want to progamatically open the front panel of a sub-vi: for some sub-vis the controls and indicatores are correctly updated while for others they are not (ie the controls show outdated values).
    I have created an example here that illustrate this. The 2 sub-vis are *exactly* the same, but only one shows updated controls when I open it (with the sub-vi previously closed of course).
    How is that possible?
    What do I have to do to have the controls updated to the last value of the *last call* when I open the sub-vi?
    Solved!
    Go to Solution.
    Attachments:
    Front panel problem.zip ‏35 KB

    titi_nicolas wrote:
    mhmmm,....no that is NOT the reason... Have you tried the VI???
    Honnestly, I would not bother people on this forum for such a stupid mistake.
    And I also expect people to know how to run a VI....
    And to play in your game, you forgot -3) Turn on the PC, -2) log in windows, -1) open labview...
    Well, I DID run your VI and everything worked just fine, however I no longer have LabVIEW 7.1 so maybe your observation no longer applies to newer versions. It could also be because they were just upgraded as Ben noted. I did not study it in detail.
    And Yes, as Ben noted, invisible VIs don't get updated for performance reasons (and not to waste extra data copies for the controls and indicators). LabVIEW is typically smart enought to update when needed, e.g. if the subVI tries to print its panel, etc.
    I guess you haven't been in this forum for too long, but since controls can easily be operated in edit mode is is absolutely important to mention at which step you run the VI. (try to operate your controls with the computer turned off and you will see that it is not that easy ). Also if you have been programming for any length of time, you should know that stupid mistakes happen all the time (at least to me and Ben ). It is much easier to weed out the stupid mistakes with a quick question&answer than to spend hours searching for a deep and complex solution.
    LabVIEW Champion . Do more with less code and in less time .

  • Can you update a cluster of macs to tiger through ARD

    I work for an IT department at a college. Is it possible to update the OS to tiger from panther throught the ARD? Or do you have to do them manually? Also, is it possible to install Adobe Creative Suite 2 through ARD?
    Thank You

    No sorry. You must install the OS manually.
    Adobe CS does not install with a Package installer, so in order to install CS2 you'd have to create a custom install package containing all of the the files that make up CS2...not an easy task.

  • Lost updates in cluster environment known problem?

              we are running weblogic clustered. We have an entity bean that is set to read-write
              (which means that in clustering no caching will be used as per your docs). We
              are hitting this entity bean from both servers at the same time, an update by
              one, and a read by the other. What is happening is that the update appears to
              get lost for lack of a better term. We have the update in a method that requires
              a transaction, and after this method is finished (which means the trasaction/db
              commit has completed) we have a finder method that returns the updated record.
              Then, we shut down the servers and look in the db, the row has NOT been updated.
              We found something in your docs about "lost updates". It said to set the isModified
              method in the ejb to always return true, this also did not help.
              Okay, we found issues just like this in posts to the bea newsgroups from 2000.
              We tried what was recommended by Rob Woolen, and it worked. We set the <delay-updates-until-end-of-tx>false</delay-updates-until-end-of-tx>.
              This has stopped this from happening. Any thought? Is this really a true fix?
              Thanks all...
              

              We have db-is-shaed to true.
              Also, its not that one server is overwriting what the second server does, its
              that one server is doing multiple reads as the other server doing the update.
              Then the update never gets to the db, even after the servers are both brought
              down, its still not there, even though we do a find after the update tranaction
              completes, and it returns an updated row! Ugh...
              "Cameron Purdy" <[email protected]> wrote:
              >Transactional control does not stop lost updates. If the second server
              >overwrites the cahnges made by the first, then the update will be lost.
              >
              >The question is this: What behavior do you actually want? Do you want
              >the
              >update on one server to disallow the update on the other server? If so,
              >explain your reasoning.
              >
              >What you should have is a means to ensure data integrity, which is to
              >say
              >that your transactions should not be able to complete if another
              >transactionchanges necessary data during the course of the transaction.
              >That
              >is usually accomplished by employing version or timestamp columns.
              >
              >Peace,
              >
              >--
              >Cameron Purdy
              >Tangosol Inc.
              >Tangosol Coherence: Clustered Coherent Cache for J2EE
              >Information at http://www.tangosol.com/
              >
              >
              >"ralph" <[email protected]> wrote in message
              >news:[email protected]...
              >>
              >> we are running weblogic clustered. We have an entity bean that is set
              >to
              >read-write
              >> (which means that in clustering no caching will be used as per your
              >docs).
              >We
              >> are hitting this entity bean from both servers at the same time, an
              >update
              >by
              >> one, and a read by the other. What is happening is that the update
              >appears
              >to
              >> get lost for lack of a better term. We have the update in a method
              >that
              >requires
              >> a transaction, and after this method is finished (which means the
              >trasaction/db
              >> commit has completed) we have a finder method that returns the updated
              >record.
              >> Then, we shut down the servers and look in the db, the row has NOT
              >been
              >updated.
              >> We found something in your docs about "lost updates". It said to set
              >the
              >isModified
              >> method in the ejb to always return true, this also did not help.
              >>
              >> Okay, we found issues just like this in posts to the bea newsgroups
              >from
              >2000.
              >> We tried what was recommended by Rob Woolen, and it worked. We set
              >the
              ><delay-updates-until-end-of-tx>false</delay-updates-until-end-of-tx>.
              >> This has stopped this from happening. Any thought? Is this really a
              >true
              >fix?
              >>
              >> Thanks all...
              >>
              >
              >
              

  • VCS alarm - An unexpected software error was detected in clusterStatus.py: Received a URLError exception while trying to update the Cluster Status information

    Hi,
    Has anyone come across the alarm with their VCS Control? If so could you explain what would be causing the error and how to resolve the issue?
    VCS version x8.2.2
    Thanks

    Hi,
    May be of use
    1. Open the visual admin at <installdrive>:\usr\sap\J2E\JC00\j2ee\admin\go.bat
    2. Login is Administrator + admin-password you defined during installation.
    3. Under the Server 0... node select Services->Deploy
    4. Select the "Application" radio button at the bottom.
    5. Check if there exists an application sap.com/tcwdtools
    And the following applications are running
    sap.com/tcwdcorecomp
    sap.com/tcwddispwda
    sap.com/tcwdtools.
    Last thing was their any errors in the installation.
    Regards
    Ayyapparaj

  • How do you set the value of an enumeratio​n programati​cally

    I would like to be able to select (programatically) the value of an enumeration.  I don't seem to be able to find any reference to how to do that.
    Thanks.
    Solved!
    Go to Solution.

    True, True.  The original post wanted to know how to programmatically "select" the enum value.  To me, that means to either force the enum to display another value, or retrieve the current value.   I thought Ben was referring to the fact that you can't programmatically set or initiate new values into an enum.  Which as he said, can only be done with a Ring.
    "In your example you're not "getting" the value of the enum. You're converting it to a string. That's a different operation."
    I showed two ways to get the value,  one gets the current string value associated with the numeric value, and the other gets the current numeric value.  i went further in the attached vi, by demonstrating how to change the current (displayed) value of the enum by using a string.  (IFF you already know the string values in the enum.)   
    In my program, i use a typedef cluster with an enum in it.  At runtime, i need to "select" the active enum value based on which operation i'm performing.  I know from elsewhere in the program what operation i need, but it's string, and there's no easy way to change the value of an enum with a string, except with the backdoor methods i showed.  
    I wish my cohort woulda used a ring.  ;-)

  • Slow performanc​e to read/write shared variables programati​cally

    We are using datasocket read and write functions to read and write shared variables programatically (in the same machine) but we only achieve a performance of aprox. 200 reads/writes per second. We are using Labview 8.6 with DSC.
    Is possible to get better results? That performance is normal?
    Any help would be appreciated. Thank you in advance.

    Hi MMCDAT,
    I think this value can
    be normal as you can see in this link:
    http://zone.ni.com/devzone/cda/tut/p/id/5037
    As you can see, the
    limit for datasocket depends on your Ethernet limitations, even if you as using
    it just in one PC:
    http://digital.ni.com/public.nsf/websearch/6AC9E65​734E53F9A8625672400637ECC?OpenDocument
    You can improve the
    performance changing the update mode or Vis configurations:
    http://digital.ni.com/public.nsf/allkb/F8F7DE98856​B50588625672400648045?OpenDocument
    http://digital.ni.com/public.nsf/allkb/2D9C6D73A16​0537986256B290076456E?OpenDocument

  • How can I change the state of a runtime menu item programati​cally?

    Using LabView 6.1, I would like to change the state of the runtime menu item "Operate/Print at completion".
    The goal here is to print the VI front panel according to the operator choice (OK ->print, Cancel ->don't print)
    In a first release, I put a Stop function at the dialog output (activated by the cancel button) but this function stop the complete application and my idea where to stop only the VI in which the dialog is running.
    In a second release, I've tried to use the "Application
    control/Menu" but I receive every time an error:
    Error 88 occured at Cannot modify application menu item in the printtest.vi.
    Possible reasons: LabView, Runtime menu error...
    Any suggestion is appreciated.
    Re
    gards,
    phidu

    Instead of using the print at completion option, print the VI programatically if the user selects to print...open a reference to the VI you want to print and use an invoke node to print vi to printer.
    Alternatively create another VI with a layout optimized for printout, set it to print at completion and run and load the data into that VI if and only if the user OKs the print...
    Mads
    MTO

  • Programati​cally Assigning Step Type Properties

    I have developed several COM instrument drivers in Visual Basic 6.0 which I can call from TestStand using the ActiveX/COM adapter. However, I would like to be able to create a custom step type for each of these ActiveX servers. Each server provides several creatable classes and a number of interfaces. Ideally I'd like to create a custom step type that references the GUID of my server but have the ability to programatically assign the step properties such as Interface ID and CoClass ID to use the classes and interfaces of my server that I want need to access.
    I have noticed that it is possible to create a step type (IEngine.NewStepType method) and set the Automation Adpater. Then I can programatically access its hidden properties (e.g.TS.SData.Call.CoClass). However, I am unsure of how to save and/or access this newly created step type. Where is it stored and how can I insert steps using of the new step type?
    I have attached a sequence I've been working on. This has dependencies on a Station global and a server unique to my system but illustrates what I've been trying to do. Do you have any advice of what I need to do next or have any examples available where this sort of thing has been done in the past.
    Thanks.

    Hi David,
    Here is some steps for saving your Step types.
    You will need to create a type palette Ini file to hold your step types.
    Get a PropertyObjectFile reference by calling Engine.NewPropertyObjectFile(FileType_TypePaletteF​ile).
    Set the path of the ini file with PropertyObjectFile(Path).
    Get a TypeUserList reference by calling PropertyObjectFile.TypeUsageList().
    Get a count of the number of Types in the TypeUsageList by calling TypeUsageList.NumTypes().
    This point create your Step types (as you have done). You will need a PropertyObject reference to your steptypes for use with the TypeUsageList.InsertType().
    Using each steptype PorpertyObject reference.
    Insert the Type into the TypeUsageList by calling TypeUsageList.InsertType(step type propertyobject ref, index (which will be your count), typeCategoryParam = TypeCategory_StepType)
    Call the PropertyObjectFile.IncChangeCount() to indicate file changed.
    Increment the count and repeat Insert for each of your step types.
    save the ini file PropertyObjectFile.SaveFileIfModified(prompt = TRUE).
    Tidy up by releasing references etc.
    I know this works for TestStand 2.0.1f1 and hopefully it will work for 3.1. Unfortunately I haven't got 3.x installed on a PC to try it.
    Hope this gets you started.
    Regards
    Ray Farmer
    Regards
    Ray Farmer

  • Programati​cally change control focus to generate and Event.....​.

    I'm adding some user enhancement (anti-screw-it-up functions) to insure the desired process is executed.
    Primary question:  If I have an event that is handles by a value change in a text control, (event happens when you hit Enter or exit control with mouse) will the event also occur if you exit the control by programatically changing the focus to another control ?
    I'm going to try and set up a temp vi to test this but wanted to see if anyone had tried this and if it works or not.  My other option is to set up multiple event cases but I was hoping to use a single case to handle everything.
    A few details,  I have a test system that tests a product automatically when the product is placed in a cradle and the cradle is moved into position and activates a prox sensor.  At end of test, system waits for prox sensor to de-activate before resetting the system.
    If a unit fails, there are rework options and the unit can be retested.  When it fails, a label prints defining the failure modes and provides a failing serial number.  When the unit is retested, the failing serial number is entered into a text control. I want the re-test sequence (queued up in the Event) to occur when either 1, a failing serial number is entered or two a button is pressed (with mouse)  I'm pretty sure pressing a button would in turn automatically create the text control change event so my button can probably be a dummy button just for appearances.
    Where the hole is if the user enters a failed serial # and doesn't exit the control and then engages a pump to start the test.  I can use a 'Empty Path/String' function but the control will continue to show empty as if nothing was entered until the Enter key is pressed or the mouse is used to exit the control.
    If I can generate the event by changing the focus, then it will insure that if a failing s/n is entered, the re-test sequence occurs and if nothing exists in that field, it performs a first time test.
    A little long winded for sure but any thoughts are appreciated.
    Can't really post any simple code as this feature is in my top level vi and I have a really big app that doesn't warrant uploading.
    Doug
    Doug
    "My only wish is that I am capable of learning each and every day until my last breath."
    Solved!
    Go to Solution.

    Actually, changing the focus alone did not trigger the event but I was able to then utilize the Empty Path/String function to drive a Value(Signaling) node for the control.
    Doug
    "My only wish is that I am capable of learning each and every day until my last breath."
    Attachments:
    Event_Structure_Trials.vi ‏29 KB

  • Programati​cally delete a DAQ device

    I have created a system with hardware (a USB DAQ) and software that is to be installed on multiple computers overseas. I want to make the set-up as easy as possible because I don't think the people doing the setup will be very well trained, and I won't be there to fix any problems.  I have created an installer that includes all the hardware as well as software setup, but there is one issue left, and I'm not sure what the best way to solve it.  If the installer is run before the DAQ is connected, then the installer creates a virtual device. If the DAQ is then connected, it is named Dev1, which doesn't work with any of my tasks, of course. I have some code that runs, and verifies the hardware set-up each time the system is started, so I can see if the device with the proper name is virtual, and if so, I can rename the actual and virtual DAQ device to the right names, so my tasks operate properly. However, I now have a virtual device hanging out on my system doing nothing, which I would like to avoid, because there is an outside chance that I will end up on the phone trying to explain to people how to straighten out a system when it goes bad, and I want to keep it as simple as possible.  I have two questions:
    Is there some way to delete the virtual device programatically?
    Is there some better approach to accomplish what I am trying to do? I thought about not allowing the installer to proceed if there is no DAQ device plugged in, but I don't know if that is possible.

    Jeff·Þ·Bohrer wrote:
    Hmmmm...... There has got to be a way to script up the "Toss Tasks to MAX" and "include .nce" as part of a "Deploy" process. Wirebird, Jack?  any opinions on that?
    I would tend to agree with John_P1's quote below:
    John_P1 wrote:
    I honestly just build up my tasks programmatically.... You can do just about anything that you could do in MAX programmatically via the System Configuration API.
     And I would tend to shy away from:
    Jo-Jo wrote:
    ...I just find [that using MAX] really speed development, and help with maintanence because you can test out all of your tasks in MAX outside of any LabVIEW code. And debug and toubleshoot hardware without using any of your own software, so you know any problems are not software bugs.
     once going into production. MAX tends to be a good tool for getting your feet wet after unboxing the hardware, but something you gradually migrate away from after the prototyping phase -- yet occasionally return to, as you mention, if you need to back up to square one for new prototyping or as a sanity check.
    It's possible to deploy NCE hardware behavior configurations, but not necessarily desirable. For the same reason it's possible to deploy any arbitrary configuration (INI, XML, ....), yet it's likely more desirable to build this configuration programmatically -- perhaps persisting it to disk if it's a user-modify-able configuration, or if it's desirable to persist user settings between subsequent deployments -- else it might be most desirable to keep the "configuration" hard-coded as essential business logic (as DAQ tasks might tend to be).
    Though, it sounds like you have a solution, and that's far more valuable than more work! Keep a tally on whether the current deployment strategy keeps you and your end users happy, and if so, keep it! Else, consider John_P1's advice, which is more likely to scale with your application if things get hairy.
    a.lia-user-name-link[href="/t5/user/viewprofilepage/user-id/88938"] {color: black;} a.lia-user-name-link[href="/t5/user/viewprofilepage/user-id/88938"]:after {content: '';} .jrd-sig {height: 80px; overflow: visible;} .jrd-sig-deploy {float:left; opacity:0.2;} .jrd-sig-img {float:right; opacity:0.2;} .jrd-sig-img:hover {opacity:0.8;} .jrd-sig-deploy:hover {opacity:0.8;}

  • How to add a Parameter to a Module Specificat​ions, programati​cally

    There is a module (based on vi) which I would like to add an additional parameter.
    As a result of this, I would need to call all the program steps where this vi is specified, reload it, and place a value (or expression) for the new parameter.
    I wonder if anybody has a small utility that does this job programatically.
    Thanks
    Raf
    TS4.1

    Hi Rafi,
    I think you should visit this thread
    http://forums.ni.com/ni/board/message?board.id=330​&message.id=25825
    hope this helps
    Juergen
    =s=i=g=n=a=t=u=r=e= Click on the Star and see what happens :-) =s=i=g=n=a=t=u=r=e=

  • How to programati​cally set front panel objects (buttons) to enable, disabled, and disabled and gray

    I'm writing a program that when I am iterating through a loop, I want to have some buttons disabled and grayed. Once the loop is done, I want those buttons to now be enabled.
    But I have no clue how to programatically do this
    (aka enable and disable while the program is running, NOT before the program starts)
    Any help would be appreciated

    Create a property node, & select the 'Disabled' property.  Set it to 0 for enabled, 1 for disabled, & 2 for disabled & grayed.
    Paul Cardinale

Maybe you are looking for

  • How can I use a distribution list to send an email or an invitation

    I would like to know if I can have a distribution list (several people that belongs to a group) that at the moment that I would like to send them the same email or invitation, I just wnat to recall the name of my distribution list, as I do in Microso

  • How do I convert "PROTECTED" MPeg4 Files to MP3?

    Hello, I've reviewed the replies regarding converting Mpeg4 files to MP3. I downloaded 65 songs from the itunes store all of which are in the Mpeg4 format. After reading the responses to previous enquiries on this subject I followed this procedure: G

  • How do i move the Itunes application and all its content (songs) to a "new" user on the same laptop?

    my neice has a bad virus on her laptop that has affected her user profile. I have created a "new" computer Profile and want to move all her relevant documents and Itunes. After i move all the files i will then delete the Bad Computer profile. I am It

  • Dynamic in Designer but not in Workspace

    Hi all, I was wondering if anyone could point me in the right direction. I have a form with a few expanding tables and digital signatures that I created in Designer that works perfectly when i preview it. But when i use it in my process and render th

  • Bluethoot mouse laggs

    My apple bluethoot mouse and keyboard lags on my mac mini i5 when I use wireless network. It gets better when I switch to cable but its still really bad range on the bluethoot and if I start downloading it gets worse.. Any ideas what might cause this