Making an array of different user events refnums?

Hello all,
I have a question about dynamic user events. I have 6 different users events which I create, and would like to put into an array. (Such that I can use them in a For loop laters, taking off one event per loop and assigning it to a control of a vi) So far I haven't found a way of doing that since if I just wire the user events refnums to an array I get broken wires. (Similarly if I wire them to a build cluster structure.)
I think that you'll understand what I am trying to do if you look at my labview code in the attached vi.
In the vi I create some user events, and then wire them to the control of two vi's which will communicate to each other using these events. In the code you will see 6 Invoke Node structures where I use the "Ctrl Val.set" to pass the events to the two vi's. Obviously this is the wrong why of doing things. Since if instead of having 6 events I had 100, then I would need to put 100 Invoke Node structures on the block diagram (making it very large compared to the size of my computer screen!). 
So what I would like to do, is put the user events refnums into a array, then put the one Invoke node structure into a For loop, and index the array to assign the events to the vi's programmatically. 
Is there anyway of doing this? Or is there an alternative (/ better way) to what I have done?
(Baisically I have 2 vi's that run in parallel and communicate to each other using user events. I need to pass the events to both vi's, how do I do it in the minimum of mouse clicks, and minimum of screen space.)
Thank you!
Paul.
Solved!
Go to Solution.
Attachments:
CameraTempControllerRunner.vi ‏49 KB

I haven't created any new messages since the forum changed over, so I'm not sure.  But check on the menu under Options on the upper right.  I think there is a way to undo your choice and put it on another.
Kudo's have replaced the stars.  Anything that was 4 or 5 stars is now equivalent to a Kudo.  But with the old system, anything less than 5 stars was essentially a negative opinion in the ratings.  So to simplify the multiple shades of gray (1 through 4 stars essentially being some degree of a negative) and to just eliminate the negative aspect altogether, the Kudo system was born.
I don't know if the "Accepted Solution" designation does anything to help the person whose solution was accepted, but having that designation helps people searching the forum because they have the same problem find the answer quicker.
Message Edited by Ravens Fan on 10-06-2008 10:15 AM

Similar Messages

  • How to use postlv user event in labview

    Hi sir 
     I am sending data labwindow cvi dll call to labview,for that we need postlv user event.please any one knows to use postlv user evenet in labview.
    Below will  be the  structureand i need to update in labview .
    typedef struct
    unsigned
    uDSPIO,
    // uDAQMode,
    // bControllerActive,
    bShutDown,
    bPowerOn,
    bPowerHi,
    bPowerFault,
    bSGIdle,
    bSGHold,
    uBitsIn,
    uBitsOut,
    uCycleCount,
    uCycResidue,
    uBlockCount,
    uLogChannels,
    uCurrentMode,
    uAsigndPhysCh[LOG_CHANNELS];
    float
    fSetPoint,
    fDAQRate,
    fRange[LOG_CHANNELS],
    fReadout[LOG_CHANNELS],
    fMax[LOG_CHANNELS],
    fMin[LOG_CHANNELS];
    char
    sChID[LOG_CHANNELS][32],
    sChUnits[LOG_CHANNELS][16];
    CTRL_CHANNEL_STATUS;
    Attachments:
    GDSCallback.vi ‏12 KB

    AThe fixed size arrays in your structure are inlined byt the C compiler. This means they are not an array pointer (and definitely never a LabVIEW array handle) but rather LOG_CHANNELS amount of unsigned ints and floats directly embedded in the structure. In LabVIEW terms this is most easily represented as a cluster with LOG_CHANNELS elements inside the main cluster.
    So basically your uAsigndPhysCh needs to be a cluster with LOG_CHANNELS elements of unsigned ints and  fRange,  fReadout, fMax and fin are clusters with LOG_CHANNELS single precision float values, and then sChID is a cluster with 32 * LOG_CHANNELS chars and sChUnits one with 16 * LOG_CHANNELS chars.
    However I would personally rethink this strategy. This huge cluster monster is passed into PostLVUserEvent() each time and copied into the event data on every event, causing quite a bit of overhead that way. Is it really necessary to post all this data every time?
    Also you have commented out uDAQMode and bControllerActive in your C structure but included it in the LabVIEW cluster which will certainly throw off your data. Last but not least the b prefix would probably indicate that you are only using that element as a boolean value, so why not consider to use bit fields there? In LabVIEW you can easily seperate those bitfields by either translating the resulting uInt32 into a boolean array or even more efficiently use boolean logic to detect the bits.
    And in order to let LabVIEW react on a user event you have to create that user event with the correct datatype (your cluster monster) and then pass the user event refnum to your DLL. This DLL then calls PostLVUserEvent() with the user event refnum as first parameter and a pointer to a data structure that matches the LabVIEW user event datatype EXACTLY whenever it wants to post an event to LabVIEW. The user event is also registered in an event structure in LabVIEW which will then get triggered everytime your DLL posts an event by correctly calling PostLVUserEvent().
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • How to use "User Events" in different parts of an application

    Hi,
    "You programmatically can create and name your own events, called user events, to carry user-defined data. Like queues and notifiers, user events allow different parts of an application to communicate asynchronously. You can handle both user interface and programmatically generated user events in the same Event structure."
    What you read was part of labview 7.1 user manual ( Chapter 9 - pg.12 ). I've some problems with the underlined sentence. I hope someone can help me.
    When using Queues, the programmer may use a named queue everywhere in the application. there is no need to wire queue reference among VIs or using global variables to store queue reference. the name of the queue will be all that you need. I wonder if it is also possible with a event refnum that is the output of "Register for Event" node. As far as I've tested. the answer is Negative! I tried to copy-paste refnum in front panels and using the same name. but there is no connection between event refnums.
    LV User manual claims that user events can be used like queues, but it doesn't seem so.
    Does anybody have an idea?
    Best Regards.

    I didn't look at Damien Gray's presentation recently, but if I remember it correctly, it is on a much higher level than what I meant, because it refers to LARGE application. This is a very simple one.
    Using a functional global is not problematic CPU-wise, nor memory wise (unless you get into really big data structures, like hundreds of MBs), so you shouldn't be afraid to use it. I'm also not sure why you're afraid of the loop. The loop is only there to "hold" the USR. It only runs once. If you want, you can replace it with a for loop that runs once. I've recently learned that apparently, you can also get rid of the loop and use a local variable (look at the example called XY chart) instead of a USR. I don't think a local variable should have any more impact than a USR, but that needs to be tested. It can definitely be more convenient for some VIs where you don't have to wire the SR through the entire VI.
    Anyway, you will need to have an "obtain ref" VI which will hold a 1D array of names and a corresponding array of refs. Then, you search the array for the name, and if it finds the name, it extracts the correct reference. You will also need a way to input references and names into the array and possibly a way to empty the array. You may need to have 2 levels - the inner VI will be the LV2 VI and the parent will be the obtain ref\fill array\close VI. You will need some error handling as well - what happens if you search for a name and it can't be found and so on...
    Hope this helps.
    Try to take over the world!

  • HT1198 If I share an iPhoto library between multiple users, will the Faces, Events, and Places be automatically usable by all users, or will each user have to tag all the photos (e.g. if a user tags a face, will a different user have to do it in their own

    If I share an iPhoto library between multiple users, will the Faces, Events, and Places be automatically usable by all users, or will each user have to tag all the photos (e.g. if a user tags a face, will a different user have to do it in their own iPhoto application??

    Have you read this Apple document regarding sharing a library with multiple users: iPhoto: Sharing libraries among multiple users?
    OT

  • User event for array of waveforms with attribute

    I have been transferring data in a Producer/Consumer architecture via User Events.  The data consisted of an array of waveforms. When I added an attribute to the waveforms the code breaks with two errors about Create User Event: User event data type is unnamed or has elements with no names or duplicate names, and Contains unwired or bad terminal.
    From reading the help on user events it is not clear that arrays are even allowed: "user event data type is a cluster of elements or an individual element whose data type and label define the data type and name of the user event."
    From experimentation it seems that arrays of numerics and arrays of wavefroms without attributes work. A single waveform with an attribute can also be used. But an array of the same waveform with attribute leads to a broken run arrow. It also appears that I can put the array of waveforms with attributes inside a cluster and then create the user event.
    Is this a bug, an undocumented corner case, or some "feature" that I do not understand?
    Searching for User Event for Array of Waveforms generates some interesting, but mostly irrelevant results.
    Lynn

    tst wrote:
    Another option would be typecasting, but it looks like you can't typecast a waveform. Variant to Data or Coerce to Type might also work, but I haven't tried.
    I have also done the Flatten To String and Unflatten From String to send data around.  It would be preferable to not need to do that though.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Sharing files and iCal events between different users (accounts) on one Mac

    Hi,
    I have a new iMac with Leopard. I have two accounts on this machine: one for myself and one for my girlfriend. I want to share files with her such as iPhoto events (so I don't have to import photos twice), iCal events (so I don't have to send her an email to synch our calendars), music from iTunes and other files.
    Does anyone know how to easily do this? I have tried the drop folder for sharing but it only appears across a network if I am logged in and won't transfer to different users.
    Daniel

    thanks, zevoneer. apparently, I gave up too early in my own search. I'm trying it now - the copy process is taking some time. Well, I had hoped to narrow the access down to only one other account but at least this should provide the access that is needed.

  • User Events Generation - TicTacToe

    Hey everybody,
    In order to get a better understanding of how the event structures are used, I have been playing around with making a tic tac toe game (ironically, i did not know that was a coding challenge until I just started this thread). 
    Anyways, the way I'm doing it is by dynamically registering a mouse move event during mouse down on a boolean control (your game 'marker').  Then when the control is moved overtop of an activex container the boolean lights up.  Right now, however, it only works for one of the game pieces ('Dot 8').
    My question is this, can someone please show me how to create a user event?  I want to create an event where when any boolean control's position is within the bounds of the activex containers it will light up.  I could do this manually with a whole lot of logic (you'll get the idea if you check out the code) but that is rediculous and wouldn't help my learning exercise at all.
    Thanks so much for the help!
    Jonathan
    (Code is attached)
    Attachments:
    events.vi ‏107 KB

    If you want to look at the code of my interface posted HERE, See attached (LabVIEW 7.1). It uses simple mouse-down events on the array indicator to determine where to place the correct piece.
    Enjoy!
    (Disclaimer: The code is not fully tested and documented. There could be bugs There is also room for improvements)
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    TTT-Trainer3.zip ‏2139 KB

  • Responding to two user events with same name

    LV 2013, Win 7, & LVRT 2013, PharLap OS
    I have a situation where I create an ARRAY of User Events, one for each "domain" .  
    A "domain" is an area of DAQ: there is a SCXI domain, a CDAQ domain, an EtherCAT domain, several domains dealing with TCP instruments etc., about 25 domains all told. The name of the event is "New Channels This Domain".
    When a new configuration comes to the PXI from the host, I sort out the channels by their domain and generate a user event for whichever domains have channels that have changed: more channels, fewer channels, differences. If a domain has no channels that have changed, I do not generate an event for it.
    There is a handler for each domain: in that handler, I pick out the event for this domain from the array, and register to receive it.  I have an event structure that responds to the NEW CHANNELS THIS DOMAIN event.  Since it is an array, then no matter which domain I select, the name of the array is "New Channels This Domain".
    All this works fine.
    Now I have a situation where it makes sense to have one handler for TWO domains.
    I can pick out TWO elements of the array just fine, and register them both.   (See attached pic)  But now, in the EDIT EVENTS FOR THIS CASE list, I have TWO events called "New Channels This Domain".  I can select one for one case, and the other for the other case and it seems to work.
    --- Is there any heartache ahead with this scheme?  
    --- If I change the events in the clusters before, is it going to confuse LabVIEW?  
    --- Is there something I can do to change the name of the event after I pick it out of the array?  
    --- Is there something I SHOULD do at that point?
    Like I said, it seems to work, but I'm leery of it staying that way - I've had event structures disturbed before (LV2010) when changing cluster order.
    Steve Bird
    Culverson Software - Elegant software that is a pleasure to use.
    Culverson.com
    Blog for (mostly LabVIEW) programmers: Tips And Tricks

    CoastalMaineBird wrote:
    Thanks, Greg for that link.  I gave kudos to the idea of the COERCE TO TYPE function, and it seems like it would do the trick, but as of LV2014 it's still not on the palette.
    My question still remains: is it necessary?  Will the event structure remember that it's supposed to use the SECOND event named "X", through all edits and recompiles?  My guess is no, but I'll listen to alternative stories.
    I've been using the Coerce to type for this and enums in versions 2011 through 2014 since learning about it.  I've seen no issue using it in these cases.  I'm guessing it doesn't behave in an expected way for extreame uses which is why NI doesn't release it yet.
    As for would it always know to go to the second event if they are named the same?  My guess is yes.  They maybe named the same but they have different references.  I would think it would be just like having two controls with the same label.  You should never do this, but if you did, and made a local variables on one and wrote to it, it would always write to the correct control.  It would never write to the different control with the same name.  Now even if this is the case it could be confusing to a developer looking at the code, which is why I strongly suggest having unique names.  But if you don't I suspect every thing would work fine, just have a bold comment or something explaining what each case actually is handling.
    Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
    If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

  • User Event

    The Help surrounding User Event seems circuitous to me.  I can find out how to name an event, register an event, send a event, and act when an event occurs.  What I can't figure out is: what is the actual event in the examples shown? In the Programmatically Fire Events.vi example, I see a cluster of two integers attached to the Create User Event.  What "event" is represented by this?  A change in one integer, both?  How is this a "User" event?  What I need is a simple TEXT explanation that builds up a User Event step by step with numbered steps, starting with an explanation of what kinds of events can be used as User Events and building from there through the creation and registration of events to their actual use.  This is a fundamental tool for modern instrumentation programming and I don't feel I'm getting the help I need.

    I'm looking at Programmatically Fire Events.vi
    I see that the Create User Event has some constants attached which apparently "type" the event.
    I see the Register User Event  which I suppose adds to a database of accessible events.
    Inside an event called "Slider", I see a Generate User Event.
    I am confused because the Event used in the Event Structure Case 0 is "Slider" Value Change.  I can understand an event in that context:  the slider moves, values change.
    But then inside that event, a refnum connects to the Generate User Event this serves as a "name" but it is only code-readable so at this point, I have no idea what the name of the event within the event is.  
    Connected to Generate User Event is a bundle of "something" called NewVal and a 0.  I suspect this means the User Event is "generated" when position has a new value (presumably the value resulting from the slider value change) and delay is 0.
    The event is "generated" but I STILL don't know what that means.
    In Event Structure Case 1, triggered by event Repeat switch Value change, a Generate Event with the same refnum "name" as before occurs when some calculated values are reached.
    After the loop finishes, the refnum goes out and generates a new User Event with the same "name"
    when position is -1 and delay is 0.  
    I am primarily interested in events as triggers for Cases in Event Structures.  I thought User Event meant some kind of user-defined event that I could use for such a trigger.  Instead, I see in this example that some other event triggers the Event Structure Case in which the User Event is "generated" and I have NO idea what happens that "event".
    So, either the term "event" is used in some wildly differently context or I need more help.  I have now seen the same refnum generate an "event" based on three different inputs.  How is that not too confusing for a Help example?
    How can I tell what help I need?  This is the most confusing example I have encountered in my long history as an engineer.
    Where does the generated event go?  How do I use THAT event?
    I just can't tell from what is provided and I can't find a tutorial or a book that describes it.

  • User events from labview build dll

    Reference to pattern
    Previous discussion
    I had this pattern in place in a LV 7.1 application using a LabVIEW
    build DLL, but when migrating to LV 8.5 I found that User Events
    created in one application instance can not be fired by another
    application instance. It seems that since LV 8.x a LabVIEW build DLL
    are a different application instance. The generate user event function generates an error inside the DLL stating that it is not working because it is a reference from another application instance.
    Is the behaviour of a LV build DLL different than a C build DLL? Is the C build DLL part of the same application instance as the LV executable?
    Is there a way the get the LV build DLL to be a part of the same application instance as the LV build executable or development environment?
    Regards,
    André
    Using whatever version of LV the customer requires. (LV5.1-LV2012) (www.carya.nl)

    Forgot to tell that I rebuild the DLL in LV 8.5, before making that conclusion.
    Message Edited by andre.buurman@carya on 09-04-2008 01:12 PM
    Regards,
    André
    Using whatever version of LV the customer requires. (LV5.1-LV2012) (www.carya.nl)

  • Multiple iTunes 8 for 2 different user accounts on one Mac: Possible?

    Hi,
    My MacPro has 2 different user accounts on it. Mine and my wife's. I have all of the iTunes music, pod-casts and iPhone Apps set up in iTunes 8 on my user account. The problem is that I want to be able to sync our iPhone 3G which she uses in HER account so that I can sync and save her 3G address Books contacts and calendar events.
    I just updated my iPhone's firmware from V2.0 to V2.1 and I backed the phone up in iTunes 8 first. Much to my surprise ALL contact and calendar data was LOST. Am I correct in thinking that the only way of preventing this is by also having this data on my MacPro's iCal and Address Book?
    We only use this single iPhone.

    See if this support article provides what you need: iTunes: How to share music between different accounts on a single computer, http://support.apple.com/kb/HT1203

  • Sharing iMove Projects Libraries with different users on the same machine

    I was wonder how two different users on the same machine can
    share project libraries. Some Context:
    My daughter has some finished projects in her project library and
    I either want to import those project into my library or share them
    so both user accounts can access the projects (similar to how the
    event library is accessible)
    Note: I've already moving the project library to a shared disk (the one
    the event library is on) with no luck
    Using iMove 09
    tia...

    You need to move each project to the external drive from within iMovie. Be sure to use command-drag so you move, not copy.

  • Mass creation of common folders for different user groups

    Hello Experts,
    We are using Portal 7.0 SP12 and we have 10 different user groups created in Portal.
    Based on this group structure, we need to create two common folders in each of the user's personnel documents in KM.
    Is there is any way to achieve this kind of requirement ?
    Can we do mass creation of these two common folders which will be assigned to all of the groups. This needs to be done in user's personnel documents and not in Public documents.
    Any help in this context would be highly appreciated. points assured.
    Thanks in advance,
    Anil Kumar.

    For every user a folder is created in userhome. One approach is to capture this folder creation event and create the folder structure you need. You need to develop a portal service which will listen to events from userhome repository.
    1. Capture folder creation event for user home
    2. Create the folder structure you want in this event handler
    Check this documentation on how to do this.
    https://media.sdn.sap.com/html/submitted_docs/nw_kmc/howto/rf/client_api/rf_client_api.html
    Regards,
    Prasanna Krishnamurthy

  • Event Handler/Cr​eate User Event bug

    This is a problem I've run into a few times on my system (Win2k) so I finally went back and reproduced it step by step since it wasn't too hard. It causes LabVIEW to crash and exit without saving.
    - Create an Event Handler
    - Place 'Register Events', wire output to dynamic event terminal
    - Place 'Create User Event', wire output to 'Register Events'/User Event
    - Place an Empty String Constant [""], wire to input of 'Create User Event'
    - Set empty string property -> Visible Items > Label = True
    - Rename label from "Empty String Constant" to other such as "Event"
    OR
    - Create a cluster constant with something in it
    OR
    - Place a boolean constant
    - Set boolean property -> Visible Items > Label = True
    - Name label something su
    ch as "Event"
    - 'Add Event Case...' to the Event Handler, select Dynamic / : User Event
    - Delete the constant wired to 'Create User Event'.
    - Place a constant of a different data type and wire it to the input of 'Create User Event'
    LabVIEW immediately disappears (all changes are lost) and this error is displayed:
    ================================
    LabVIEW.exe has generated errors and will be closed by
    Windows. You wlil need to restart the program.
    An error log is being created.
    ================================
    If there is a more appropriate place to post things of this nature that don’t really add to the discussion group, but need to be brought to the attention of NI, please post a URL or submittal method. Thanks...

    Thanks for the detailed request. We are aware of this exact issue, and the problem was actually fixed for LabVIEW 7.0 for Mac/Unix. Unfortunately, it did not get fixed for the initial release of LabVIEW 7.0 for Windows, but we have plans to include the fix in the first LabVIEW patch for 7.0.
    Also, the Discussion Forum is great for notifications of this kind. For future reference, you also have the options of emailing NI engineers directly, or calling us with suspected bug fixes, if you would like more direct communication.
    Thanks again, and have a great day!
    Liz Fausak
    Applications Engineer
    National Instruments
    www.ni.com/support

  • Macbook pro - iPhoto keep prompting to update after Yosemite update. Error message when trying to update -This update is not available for this Apple ID either because it was bought by a different user or the item was cancelled

    macbook pro - iPhoto keep prompting to update after Yosemite update. Error message when trying to update -This update is not available for this Apple ID either because it was bought by a different user or the item was refunded or cancelled. 

    I only have 1 apple ID and the same was used to set up this early 2011 macbook pro and iPhoto app. I don't want to loose out on any photos. I tried logging out of app store and back in but no luck. PLEEAASEE HELPP!!!
    This problem has been reported by quite a few forum members, who skipped the update to iPhoto 9.5.1 while running Mavericks. In that case try to purchase iPhoto again instead of updating.
    After making your backup try the following:
    Uninstall iPhoto by deleting it from the applications folder, but do not empty the Trash.
    Launch the App Store, click the "Store" menu, and sign in with your AppleID.
    Open the main page of the App Store and search for iPhoto.
    If iPhoto is listed as "Free", click the "Free" button to buy it with your current AppleID.
    If it is not showing as free, there is no help but contacting the App Store Support, as Niel pointed out: http://www.apple.com/support/mac/app-store/contact/

Maybe you are looking for

  • Deployment adf application to internat

    hi am i able to deploy adf application to internat without the weblogic licence just for testing Edited by: Tshifhiwa on 2012/02/20 1:16 PM Edited by: Tshifhiwa on 2012/02/20 1:30 PM

  • CAN'T GET PAST STEP 8 SETUP CD

    I have a WRT54G router. After a couple of months I started having problems accessing the internet. I started all over again, installing the router rom scratch. However, I can't get past step 8 of the installation process. The setup program prompts me

  • Aperture library size vs iphoto

    My aperture library and iphoto library have the same photos in them. Photos seem to be the same size and quality (I imported all photos from aperture into iPhoto). iPhoto's library is 20GB, Aperture is nearly 60. I'm guessing that while Aperture migh

  • Adding an existing segment in data record of IDOC

    Hi All, I am using basic type ORDERS04 to send IDOC out of SAP system. Currently its not sending the segment E1EDP04 in the data record. What should be done to get this segment in the data record of IDOC? Also, can any one tell me the significance of

  • How Add DFF filed in Search Criteria

    HI All, I want to add a DFF in the Search Criteria region of the Advanced Search in the standard Cotract page of Sales Contracts Workbench User Responsibility please let me know how to add and search the contarcts with the DFF basis as well Thanks KK