Actor framework strictly typed message queues?

I'm just getting to grasps with the Actor framework.  I have implemented "similar" stuff in the past but I've approached it differently.
One thing I noticed was how easy it is to send a message to an incompatible actor core which results in a nasty run-time "to more specific class" error.
In the example project included with LV 2012, if I make the change shown below (OK, I am purposely senidng a wrong message on the given queue) I get no feedback from the IDE that an incompatible message is being sent ont he queue.  I think this has to do with the Message queues being for the base actor class.
Is there no way to have the actual queues more strictly typed so that we can say that Launching Actor Beta will result in a Queue reference which is only compatible with Beta (or children) objects or does this ruin the entire concept?  If possible, it would prevent the ability oto send incompatible messages completely which IMHO would be an enormous benefit.
The presentations on the Actor framework have shown huge benefits in strict typing of state machines (I'm referring to a couple of videos I've seen ont he NI website) but this element of things seems to be just a pokey as a string flatten and unflatten.  Send the wrong message to the wrong receiver and >bang< run-time error.
Just thinking out loud.
Shane.
Say hello to my little friend.
RFC 2323 FHE-Compliant

So two days and no reply...
I'm referring in essense to this part of the actor framework white paper as included with the template in LV 2012.
Messages from Callee to Caller
When a caller wants to send a message to the callee, the caller knows the type of the actor that it launched, so caller can easily choose the right type of message to send. But when an actor wants to send a message to its caller, the actor does not necessarily know what type of caller it has, so it does not know what type of message to send. Ideally, actors should be usable by many different callers. That maximizes code reuse. But making the actor truly independent of the caller requires more effort than is warranted for the situation. There are three techniques for defining messages that an actor sends to its caller
The High Coupling Solution—In this solution, the callee actor is written specifically for one type of caller, and can never be used with any other type of caller. In this case, the callee knows details about the caller's interface, so it may simply call the Send Message VI of the appropriate message. The message type is thus hardcoded into the actor.
The Low Coupling Solution—This solution works best when you have a known inheritance hierarchy of callers. In this solution, you create a matching hierarchy of callee actors. So suppose you have callers Hard Drive, Air Conditioner, and Fire Suppression, each of which needs to launch a Fan actor. You would create the Fan class, and then inherit from it Fan For Hard Drive, Fan For Air Conditioner, and Fan For Fire Suppression. Each caller launches its specific callee actor. All of the main Fan class' code is shared, but when it comes time to send messages, the Fan class has a dynamic dispatch method for doing the sending, and each of the children overrides that method to send the message appropriate for its caller. Each callee is still coupled to a specific caller, but the system as a whole is flexible to accommodate new caller types.
The Zero Coupling Solution—In order to make the callee actor independent from the caller, the caller must tell the callee what types of messages to send so the callee avoids picking a type itself. The best implementation of this solution has the caller record a message into the callee at the time the callee is launched. The callee provides a Set <Type> Message.vi method, where <Type> is the particular event that will trigger the message to be sent. The caller sets the exact message it wants to receive when this event occurs. When the event happens, the callee sends the chosen message, without any knowledge of what kind of caller is receiving that message.
Often the callee will define an abstract Message class that it uses as the input type for Set <Type> Message.vi. Callers create their own specific child of this abstract class. This setup gives the callee a way to set data into the message through the API defined by the abstract class, and gives the message a way to deliver that data in a form the caller can consume through the various overload and extension VIs.
Would it be possible to get some examples of the three different approaches to typing of the messages?  I'm aiming for the high coupling solution (with the option of slipping to option 2 through common ancestors) in order to provide the ability to detect wrong messages on wrong queues at edit time.
Shane
Say hello to my little friend.
RFC 2323 FHE-Compliant

Similar Messages

  • Actor Framework Message Maker Icons

    I’d like to suggest a small change to the way the actor framework message maker works.
    At present - regardless of the icon of the method for which the message class is being produced - the following VI icons are created:
    Do.vi
    Send <Method>.vi
    <Method> Msg.ctl
    How about if instead the message class takes its VI icons from the method (with the existing glyphs layered on top). So if the method icon is:
    The following icons will be produced:
    Do.vi
    Send <Method>.vi                           
    <Method> Msg.ctl
    OK, its not gorgous and may need a bit of tweeking but I think this might make the Actor Framework quicker and more intuitive to use. 
    Dan
    Dan
    CLA

    Might be useful to bring it to the attention of the Actor Framework enthusiasts: ni.com/actorframework
    - Cheers, Ed

  • Best way to transfer large datasets between actors (Actor framework)

    Hi everyone
    I am in the planning / design phase of a larger application for which I wish to use the Actor Framework. It seems like a good "design pattern", easy for multiple developers to work on, easy to expand and easy to maintain.
    In this application I need to transfer data betweeen actors/modules at a considerable rate. The data is the continous measurements from a DAQ device (or multiple devices) sampling at 200kHz. That's 200 kHz * 8 byte = 1.5 Mb/s per device.
    There is no way this is done using the messages of the actor framework - those messages are designed to signal start, stop, select tasks etc. within the application. So how to transfer that amount of data between actors?
    I've thought about using TCP/IP on localhost - this could also easily be expanded to allow different parts of the program to run on different machines on a network. I've even tested it and it works quite well. But I would like to hear some opinions or alternatives before I decide to go with this solution. Any thoughts or alternatives?
    Thanks
    Jonas

    JonasCJ wrote:
    Could this be done without TCP/IP and just a LABVIEW queue? Passing the queue in a message from one actor to another?
    If it's in the same process then yes, and it would be more efficient, because with TCP you have to create a copy when converting the data to a string, another copy when receiving and a third one when converting back. Unless you really are planning on distribtuing it, I would suggest avoiding that. Sidebar - AQ has been talking about networked actors and I believe there should even be an experimental branch in the AF group in the community area. You might want to check that out.
    Incidentally, if you are planning on splitting it and don't actually need the real time processing, you might consider saving the data to a network drive and then simply having the other side loading the data from the file. It should be simpler.
    Try to take over the world!

  • Using actor framework 2014

    I've used earlier versions of the actor framework just fine. Then I installed LabVIEW 2014, and I do not know how the new framework is supposed to function. Is there some example of how nested actors are supposed to work? I've been looking around but actor examples are strangely absent.
    Lars Melander
    Uppsala Database Laboratory, Uppsala University

    > You don't need to call two extra VIs to launch an actor.
    Sorry, I don't see how the number of VIs changes.
    > Launching becomes easier to understand, because the concept now is that each actor creates its own queue and nested actors have implicit access to their caller's queue. The naming of the enqueuer terminals on the subVI also confused some people (including me) about which enqueuer belongs to which actor and this solves that.
    Unfortunately, it seriously mucks up my design. I have a network of actors, and that does not translate to the new VIs. It's not obvious in any case.
    > In general, if you want AF discussions, the AF group is the best place, as that also includes the NI people working on it. Here's one example thread also requesting an example - https://decibel.ni.com/content/message/94190#94190
    I will look there, thank you.
    Lars Melander
    Uppsala Database Laboratory, Uppsala University

  • Clearing JAVA Message Queue in PI 7.1

    Hi Experts
    I am working on a file to File Scenario, and file has been picked up on the sender CC and mesaages have been sent to JAVA queues, But the messages are stuck on the JAVA queues,
    Java Queue name: File_http://sap.com/xi/XI/SystemRecv
    How can I clear the JAVA message queue in PI 7.1
    Thanks
    PR

    If the messages are on the queue, usually one of the actions must be performed: a) Fix the related scenario and restart the messages or b) Manually cancel the messages. This is also advised on the note below under item "3. Troubleshooting Archiving / Deletion in the Adapter Framework"
    [Note 872388 - Troubleshooting Archiving and Deletion in PI|https://service.sap.com/sap/support/notes/872388]
    If you are having performance problems, please check if the messages are taking long time in TBDL/Holding status. Let us know if this is the case.

  • Message Queue Blocking / MSGMNI Setting

    Hi All,
    Firstly, many thanks to all that can assists. I am currently getting Message Queue
    Blocking messages in my ULOG files in my Tuxedo Application. (Tux ver 7.1 in Unix).
    I am not sure what is causing this, but started to look into the Tux Config (UBB.MP)
    and System message queue setting. Detailed as follows:
    1)
    Listed below is the system message queue setting:
    set msgsys:msginfo_msgmni=2000          
    set msgsys:msginfo_msgmax=128000     
    set msgsys:msginfo_msgmnb=100000     
    set msgsys:msginfo_msgssz=256          
    set msgsys:msginfo_msgseg=25088          
    set msgsys:msginfo_msgtql=1550          
    set msgsys:msginfo_msgmap=1000     
    According to the BEA site, the MSGMNI is determined by this formula:
    MSGMNI = MAXACCESSERS + 7 + (no. of servers with REPLYQ) + (no. MSSQ sets) - (no.
    of servers with MSSQ sets)
    The following is my current Tux. Config (UBB.MP) is set as :
    - MAXACCESSERS = 2300
    - Each servers (4 types in total) has its own REPLYQ and RQADDR.
    - The same type of servers are set the same across 4 application servers.
    Hence, my MSGMNI should be a minimum 2339 (ie. MSGMNI = 2300 + 16 + 16 - 0 = 2339).
    But my current MSGMNI is 2000.
    Would this contribute to my Message Queue Blocking?
    Is my understanding correct and is this something I should change to avoid Message
    Queue Blocking? Any helps and advice is much appreciated.

    Malcolm,
    Your information and explanations behind these error messages are very useful.
    It allow me to further understand Tuxedo internal processing and at the same time
    give me a chance to start analysing these fields.
    I am reluctant to ask further questions at the mean time. I will use your suggestions
    as a starting point.
    I will certainly keep you posted of the outcome when I have made the changes in
    my UBB config and machine parameters.
    Many thanks with your help/explanations Malcolm. It helps alot!
    Cheers.
    David.
    "Malcolm Freeman" <[email protected]> wrote:
    >
    Hi David,
    The MSGTQL reference you give (Solution S-00488) refers to the BEA MessageQ
    product
    and is not relevant to Tuxedo.
    The error messages indicate that the queue buildup is probably due to
    a restartable
    server failing. What happens is this:
    When a restartable server fails its IPC queue remains in place and continues
    to
    receive messages (which will be processed when the server restarts).
    Depending
    on the time taken to restart, the queue could become full and unable
    to receive
    any more messages, and this is probably why you got the message CMDTUX_CAT:1380
    indicating that the BRIDGE process was unable to put a message on the
    server's
    queue.
    A server is only restarted when the BBL does a SANITYSCAN check. If,
    for example,
    your SANITYSCAN interval is 300 seconds and your server fails immediately
    after
    the previous scan, then there will be a delay of almost 5 minutes before
    the failure
    is detected and the server restarted - plenty of time for the queue to
    fill up.
    There are a few things you could do:
    The key thing would be to find out why the server is failing, and fix
    the problem.
    If this is not possible immediately, consider some of the other ideas
    below.
    Have several servers form an MSSQ to service this queue; then if one
    fails the
    others will continue processing the messages while the failed server
    restarts
    (this assumes, of course, that your application does not require the
    messages
    to be processed in strict order through the server).
    Reduce the SANITYSCAN interval (but don't make it too small). This would
    reduce
    the average time taken to restart the server.
    Increase the size of the IPC queue (MSGMNB) so that it can hold more
    messages.
    I'm not sure why you got a LIBTUX_CAT:1485 message, but this could be
    due to a
    BRIDGE failure as a result of the congestion.
    The NETLOAD parameter would reduce the number of messages going to the
    remote
    machine, but only if the local machine offers the same service. If the
    remote
    machine is the only source of the service then NETLOAD will have no effect.
    I
    recommend you do a search of this newsgroup for postings on "load balancing"
    there's some good stuff which will explain how load balancing works.
    Depending how things go, it might not be a bad idea to open a case with
    BEA Support
    and ask for guidance (remember to submit your ubbconfig (or preferably
    do a tmunloadcf)
    together with the complete ULOGs from both the master and the slave machine).
    Hope this helps some.
    Regards,
    Malcolm.
    "Dave" <[email protected]> wrote:
    Hi Malcolm,
    Thank you for your reply. Interesting point you have made about theMSGTQL
    value.
    Based on your suggestion I went hunting around the BEA site and found
    the following
    snipplet:
    "- The MSGTQL parameter must be set to a value greater than or
    equal to the MSGMNI setting."
    (http://support.bea.com/application?namespace=askbea&origin=ask_bea_answer.jsp&event=link.view_answer_page_solution&answerpage=solution&page=msq/S-00488.htm)
    If the above point is valid, then my MSGTQL is definitely way too low.
    IF this
    be the case, would you know of a method to work out what my MSGTQL bytes
    value
    should be?
    Additionally, I have looked at other parameters which I could tune,and
    would
    adding a NETLOAD parameter in the *MACHINES section will reduce remote
    servers
    call? Which potentially, maybe reduce message queue blocking?
    FYI:
    The error messages I am seeing in my ULOG file are:
    "LIBTUX_CAT: 1477 : ERROR .SysServerDied
    LIBTUX_CAT: 1476 : ERROR: .SysServerRestarting"
    Which then leads to message queue blocking
    "CMDTUX_CAT: 1380 : ERROR: Message queue blocking prevented delivery,
    Qaddr=..."
    and potentially "LIBTUX_CAT: 1485 .SysNetworkDropped."
    Many Thanks. Hope to hear from you (Malcolm) or other parties out there
    that can
    assists.
    Thanks.
    David

  • Where do I find 'MQ Cluster Monitor' and 'Message Queue Universal Client' ?

    This video on mq.dev.java.net uses two utilities called the 'MQ Cluster Monitor' and the 'Message Queue Universal Client'. The narrator says that these are 'shipped with the Message Queue product'.
    I dont see the utilities in my Open MQ installation. What am I missing ?
    - Hemant Bedekar
    RedSeal Solutions

    Cluster Monitor can be launched by typing these commands -
         cd /MessageQueue/mq/examples/jmx
         java -classpath /MessageQueue/mq/lib/imqjmx.jar:. MQClusterMonitor
    Universal Client can be launched by typing these commands -
         cd /MessageQueue/mq/examples/applications/uclient
         java -classpath /MessageQueue/mq/lib/imqjmx.jar:. UniversalClient
    - Hemant Bedekar
    RedSeal Solutions

  • App Builder produces "Not Executable" error with Strictly Typed VI Refs

    There is a very frustrating problem with the app builder in LV 8.0.1.  Certain VIs compile and run fine in labview, but the app builder
    refuses to make them into applications.
    The error message is very long and ends with something like "The VI is not
    executable".  Standard advice for this problem is to force LV to recompile
    everything you're building by either mass compiling or ctrl-shift clicking the
    run arrow, but this hasn't worked for me in two separate cases (completely
    different projects).
    It seems that this problem is caused by wiring a strictly typed VI reference to
    an invoke node with the FP.open method selected.  In both cases I resolved
    the issue by changing the Static VI Reference to be weakly typed (right-click
    the static vi reference and make sure "Strictly Typed VI Reference"
    is unchecked). After that, the project build successfully.
    This is very hard for a user to track down for several reasons:
     - The error message in the application builder does not give any
    indication as to what the real problem is
     - The app builder reports that the top-level VI is broken, even when the
    strictly typed reference and invoke node may occur in a sub VI
     - Nothing (that I can
    find at least) in the documentation suggests that strictly typed references
    won't work with the Open.FP method. 
    There is a page that says "some of the properties and methods do
    not work when you configure this function to output a strictly typed VI
    reference," but no indication is given of which methods fail
    Note that in one case I was also able to make the project
    build by deleting an instance of "IMAQ Create.vi" from the top-level
    VI.  I 
    have no explanation for this.
    Hopefully this post will save some other users the trouble
    of tracking this down and maybe even get NI to correct the issue for future
    versions.
    Adam Brewster

    Hello Adam,
    Thank you for sharing your experience and insight.  Your post was well thought-out and offered a
    good description of the problem as well as some possible workarounds.  I believe that the issue has been filed and
    is under investigation (3TU8T8V9).  Feel
    free to post back after the next LabVIEW release and inquire as to its status.
    Thanks again,  
    Travis M
    LabVIEW R&D
    National Instruments

  • Correct use of the actor framework?

    Hi all,
    I was hoping for some advice before I start developing an application.  I want to try using the actor framework so I thought I would give it a go for this project.
    It is a relatively simple application:
    Update rates are at 1Khz max so the cRIO is in scan mode.  The cRIO will communicate with the host using 2 network streams.  One for sending and one for receiving data.
    I want to use actor because there will be 3 screens used.  One to display the digital inputs, one to display the analogue inputs and one to set the digital outputs.  I thought this would be a good chance to have a go at using the framework because I could have 3 IO actors with one on each screen..  My initial ideas are as follows.
    Host Application
    Handle all the communication to the cRIO
    Send any data it receives from the cRIO to the:
    Digital out actor as a message
    analogue out actor as a message
    Input Data Logger actor as a message
    Send any data it receives from the digital out actor to the:
    cRIO
    Ouput Data Logger actor as a message
    I have attached the project file I am working with.  I have knocked something up using tabs which gives an idea of how the UI will look for each screen.
    I’m really not sure if this is even remotely close to the way to do it.  Help please.
    Lewis Gear CLD
    Check out my LabVIEW UAV
    Attachments:
    Working Code.zip ‏93 KB

    I'm not sure you need to split all of the outputs into separate actors. You could potentially wrap those up into one actor and create a method or small set of methods for each output type. Or, you could create a "Physical I/O" actor, and have that talk to the AO, DO, AI, and DI...then your top level application only needs to send messages like "DO : True" to the Physical I/O actor. Essentially, it abstracts it one more level, and might make things easier in the future if you decided to add other physical I/O (other cards, USB devices, etc.). This way, the Phsical I/O actor could handle the changes, and your top level application remains intact.
    Wes P
    Certified LabVIEW Developer

  • Selecting VI Server.Strictly Typed VIs in Class Browser crashes LabView

    Hi!
    My LabView 8.0 Pro on WinXP crashes in the following way:
    0. Opening Blank VI.
    1. Placing VI ref num on the front panel.
    2. Going to "Select VI Server Class -> Strictly Typed VIs -> Browse..."
    3. Loading any VI (say, "myVI").
    4. Then going to menu: View -> Class Browser
    5. Selecting Object Library: VI Server.
    6. Selecting Class: Strictly Typed VIs - "myVI" icon.
    Result: LabView crashes saying that there's error and application will be closed.
    Besides there's a little question:
    Did I get it right that if I change myVI connector layout or pins it's not refreshed in my
    VI ref num and I have to load VI again (see step 2)?
    Thanks in advance for any help.
    Rashid.Message Edited by Rashid on 02-22-2006 11:17 AM

    Hello,
    I have reproduced this, but I think the menu navigation you indicated in step 2 has a mistake.  I reproduce it with the following steps, and have filed a corrective action request to R&D on the matter:
    0. Open a Blank VI.
    1. Place a VI Refnum on the front panel.
    2. Right-click on the VI Refnum and choose: Select VI Server Class -> Browse...
    3. Select any VI (say MyVI.vi).
    4. In LabVIEW click: View -> Class Browser
    5. Select Object Library: VI Server.
    6. Select Class: Strictly Typed VIs -> MyVI.vi connector pane icon.
    Sorry for any inconvenience - the problem should be addressed in a future version of LabVIEW.
    For your question, "Did I get it right that if I change myVI connector layout or pins it's not refreshed in my VI ref num and I have to load VI again (see step 2)?" - yes, I see the same behavior - you should save the VI and then select it again in the VI Refnum.
    Best Regards,
    JLS
    Best,
    JLS
    Sixclear

  • GUI - Actor Framework - Decisions

    "Hi there,
    I think I am pretty clear about how to use the Actor framwork's and I would like to
    have some guidance about to use the framework in my project.
    This VI is a very simplified version of the actual layout.
    Basically, there is only one hardware performing different types of measurements, send TX and RX messages through CAN and LIN.
    My development strategy is
    I intend to create an actor for everything related to the hardware measurements that I consider as the measurement bench.
    This hardware will have to perform some asynchronous operations and will eventually send some messages / commands to others actors.
    Those commands will contain for instance, the stuff (value type of course, I'm not willing to message everything with references) related to the information do display to the end-user in different VI.
    The other actors representing different VI in some containers will send commands to this actors
    In short, I was thinking about creating about 10 actors and more:
    1) The most important one: the Bench (containing the settings and parameters in the class cluster) and performing the actions related to the hardware, inputs  and outputs and inform other actors about what it just (if doing performing actions synchronously) or what is available (if some things are asynchronously in a  loop). [Not sure if splitting the concerns of the Bench purposes into additional actions is really wise or not (especially since it will embed a VISA reference), it  will probably require to additional lock accros the different Bench related actors with something like below:
        - Bench Master Actor (to send and receive message to the enduser actors and dispatch the work with the two other Bench related actors)
        - Bench Synchronous Actions Actor
        - Bench Asyncrhonous Actions Actor
        It's also in charge of receiving orders to start, stop, notify, performing actions asynchronously and / or synchronously.
    2) Actor (especially the core as): VI ML
    3) Same strategy for VI BRC
    4) Same strategy for VI TRC
    5) Same strategy for VI 1
    6) Same strategy for VI 2
    7) Same strategy for VI 3
    8) Same strategy for VI 4
    9) Optional: VI TM ... not really necessary I guess except to go with full actor everywhere..
    Thank you."
    Attachments:
    GUI Actor Framwork.jpg ‏137 KB
    GUI Actor Framwork(2012).vi ‏21 KB
    Actor Architecture.jpg ‏83 KB

    I would post this question to Actor Framework community rather than here, as active Actor Framework users are likely to be subscribed for discussions happening there.
    https://decibel.ni.com/content/groups/actor-framework-2011
    I am also interested in what people say about it. 
    TailOfGon
    Certified LabVIEW Architect 2013

  • Actor framework

    Hi
    Where can i se the version of Actor Framework that I have on my PC?
    regards Bjarne
    Solved!
    Go to Solution.

    Hi Manu
    First I will really encourage you to post you questions in a new thread. By doing that you will post your question to the hole forum and not only to the few people that actually attended here. Very few people will monitor the post when it is marked as resolved.
    As for you question I looked over you code. Seems like you get your issue here:
    In Gamma Actor -> Messages for Gamma -> Do.vi 
    You convert you Gamma Actor to a Type of Beta. Where you should have converted it to type Gamma.
    If you look at the do message for alpha and beta that should show you how it is done correctly.
    It could also be that you think Gamma Actor is a child of Beta actor and you therefor would like to convert it to the Type of Beta Actor (which is allowed), if this is what you want then the inheritance hirachi should state that Gamma Actor inherits from Beta Actor and not from Actor.
    Both things could be valid depending on what you actually want. Right now you are trying to convert a car to a banana and that is what LabVIEW tells you is wrong.
    Best Regards
    Anders Rohde | CLD | Platinum Applications Engineer | National Instruments Denmark 

  • Actor Framework auto generate actor

    Hello,
    I'm starting to use the actor framework for a large application. I am wondering if there is a way to auto generate a new Actor?
    I understand I can auto generate messages for an actor using Tools -> Actor Framework Message Maker...
    I make an Actor by making a new Labview class say:
    Test Actor.lvclass
    Then set the inheritance of this class to Actor.lvclass
    Make the Actor Core.vi Method
    Make a Write waveform method
    Set the scope of Actor core to protected, and other methods to public (just like the Simple Actor example) and make actor core reentrant
    I am making the structure EXACTLY like the Simple Actor example, but I get the following errors in my new Actor Core.vi:
    "This VI doesn't match other VIs in the method, Connector Pane Terminal(s) are different. All VIs that implement a method of a LabVIEW class must match Connector Panes. To correct this, compare Connector Pane of both this VI and the VI of an ancestor class that implements this method."
    and
    "The owning VI is not a dynamic member VI of a LabVIEW class. The Call Parent Method node should only be used in a dynamic member VI of a LabVIEW class."
    I tried to read into this message, but it appears my connector pane is the name. I'm not sure whats going on.
    (1) Can someone show me what I am doing wrong here?
    (2) Is there a way to auto generate the Actor?
    Every time I try to construct an actor from scratch I get the above errors. I have attached my project (LV2012).
    Any help is greatly appreciated!
    Solved!
    Go to Solution.
    Attachments:
    Simple Actor Example Mod.zip ‏179 KB

    I know this is old, but just to update this thread with info to others that are starting with Actor Framework and LabVIEW 2013.
    The GOOP Development Suite is free now, free to download from NI's website.
    With this you can make an actor. It is described here how to use GOOP to do it.

  • Using Microsoft Message Queues (MSMQ) with LabVIEW

    I want to use the Microsoft Message Queue to communicate between applications on different machines. Does anybody have experience in using the MSMQ with Labview (in the .NET framework)? How do I send messages? The MessageQueue.Send method requires an object, and I don't know how to create this object format.
    This question was asked several years ago on this forum and no answer was given.
    I would appreciate any examples of Create a Queue, Delete a Queue,  Send a Message, and Read a Message in LabVIEW 7 or earlier.
    Thanks,

    P.C.
    I'm a little confused by what you mean.  I thought you were sending messages through the MSMQ, but the code there would receive a message, get the body, then display the body of the message.  The Object that the invoke node refers to is the Body of the Message, which has no properties, but has a few methods like ToString that you can use to get the string from the Body. 
    You need to wire up the references into the invoke and property nodes to get the selection of the methods or properties that are available.  Do they just not appear when you are using the invoke node with a reference to the body?
    Message Edited by Coal Man on 06-04-2007 01:56 PM
    Brian Coalson
    Software Engineer
    National Instruments
    Attachments:
    msmq.Jpg ‏40 KB

  • Cast generic VI to strictly typed VI

    Is there a way of casting a generic VI to a strictly typed VI through something other than from the Open VI icon?  I'm trying to make a generic VI to handle the open and cast it where I need it.
    Thanks,
    Adrian
    PS.  I should mention that I am using LV 7.0 and have tried to use the "To More Specific Class" icon without success.
    Message Edited by Been bitten by LabVIEW on 10-10-2007 03:18 PM

    Yes, but it won't do you much good. You can't use a type cast (that's not
    allowed), but you can use flatten to string and unflatten to string. That
    way, you basically have what you've asked for.
    All normal properties will work (only tried Panel Open). But the only reason
    to do this, is so you can call the Call By Reference Node. And that will
    fail. The node says something about the vi not being reserved. If you put
    this code inside a sub vi, LabVIEW (8.2.1) will crash (R6025 - pure virtual
    function call). This is not something that you'd want to use.
    There are probably other ways to solve your problem, but you have to explain
    what your higher goal is.
    Regards,
    Wiebe.

Maybe you are looking for

  • Getting the Request Object in the EJB published as a Web Service

    Hi experts, I have a Portal Service that call a BAPI in a back-end system with the Connector Framework. I have a Portal Component that calls the Portal Service, passing the Locale (request.getLocale()) and the User (request.getUser()) object. It's wo

  • Why wont my phone sync?

    whenever i plug my phone into my computer it says this iphone cannot be used because the apple moble device is not started. what does that mean?

  • 13" MacBook Pro - Where to store the remote?

    Well, On my old black MacBook, there were magnets around the top frame around the screen and when I was at my desk, I would store my Apple Remote on the top corner of my screen. It was great because it would just "stick" there. On the new 13" MacBook

  • Syncing photos to phone

    Why when I sync photos to my phone, do I get two albums with the same photos??

  • Perfomance on column select

    Hello May be basic question but not sure, I have table with 20 column, In plsql i an using in for loop. 1. for x in (select * from tab) -- all 20 column 2. for x in (select col1,col2,col3...col10 from tab) ---10 column out of 20 Which one ine better