Message queued, case/default message handler?

Hello

I started to implement the QMH design for my application model:

  • Producer
    A state machine that implements my algorithm:
    Move actuators, send commands to a camera, settings etc.
  • Consumer
    A state machine that sends low level commands to devices according to the task at hand

But now I have a problem:

I would constantly check and show the positions of the actuators, as a case of default/message. Positions, different measures should be taken. If I were using a structure of the event into the loop of producer, I could use his timeout feature, but in my state machine, I can't do that.

Example in the loop of producer:

  1. State "actuator move to position"-> mobile actuator
  2. Check the position every 100 ms until the goal reached<---- this="" would="" be="" my="" default="">
  3. After that position is reached, take a picture
  4. Output

I admit, I still have a bit of trouble differentiating between the States and transitions. Currently my status in the producer State machine loop where to send the command 'move' and the positions of the target, is called now "move to xy. It runs only once. It might be preferable to have a State "now in motion" which reads the position and going on to the next State (for example "stopped") once the target is reached?

Any thoughts on this please?

Thank you!

But now I have a problem:

I would constantly check and show the positions of the actuators, as a case of default/message. Positions, different measures should be taken. If I were using a structure of the event into the loop of producer, I could use his timeout feature, but in my state machine, I can't do that.

Why not? You can set the dequeue time-out so that if no message is received, it goes to a case of "timeout" of your QMH which is where you can check positions etc.

Tags: NI Software

Similar Questions

  • The best way to separate the user interface in the model LV 2012 queued Message Handler?

    If you create a new "queued Message Handler" new model 2012 LV, you will see a blue box in the case of "Update view" that says the following:

    Code Recommended - If you wish to decouple the Message Handling Loop from your user interface, consider creating User Events (like the "Stop" event in this VI) to message the Event Handling Loop whenever the user interface needs updating.
    

    I would like to give a suggestion, but I am struggling to find the best way to do this and still keep code modular.  The template creates a user - Stop.lvlib "event with a create/Destroy/fire Subvi.  I would like to create a library of "User event - Update UI.lvlib" similar with similar Create/Destroy/fire Subvi keep this new modular and separate user event.  The problem, I am struck, is that there may be only two hydrants in case Structure dynamic event so, how I modularlize creating user events in separate SubVIs and always maintain this dynamic event terminals?

    As a follow-up on the issue, it would be preferable to have a library of user by indicator events that must be updated or that a single UI update of the user and then event pass a cluster as the message that contains the name of the control for the update (to use with a structure of matter), then the data to go with it?

    Thank you!

    Instead of having the events to record in the 'create' methods, you could be part outside your 'create' SubVIs and then simply bundle them. Then, you create your individual event of the user management. See excerpt where I created a vi 'Create user event - Update' in front of the stop.

  • IPMI message handler: BMC returned an incorrect answer

    Hello

    I need help to solve this problem, which has occurred on one of the five hosts a few months ago:

    On the Console, after pressing Alt - F1 for a connection, the following messages are displayed:

    IPMI message handler: 5 25, BMC returned incorrect, cmd netfn expected answer had 5 35 netfn cmd

    IPMI message handler: BMC returned incorrect answer, cmd netfn expected 5 27, got netfn 5 cmd 35

    The first message may appear up to 7 - 10 times, the second only once. Hit entry gives me the login prompt.

    After searching the Web, oriented BMC firmware problems, I've updated the U2 to U4 driver with all the latest patches using VUM & answers updated BIOS and firmware with new versions of HP.

    We have 5 host, 4 HP ProLiant DL580 G4 and an HP ProLiant DL580 G5 server. I only arises on the G5. Any host connected to the Clarion SAN.

    System:

    HP ProLiant DL580 G5, System ROM d61 23/09/2008, iLO 2 Firmware Version 1.77 23/04/2009, 4 x Intel Xeon 7220 2, 93 Ghz, 64 GB RAM, 2 x LPe1150 4 Gb FC, 1 x HP Smart Array P400, 2xOnboard Broadcom NetXtreme II BCM5708 1000Base-T, 1xQuad 82571EB Ethernet Gigabit controller

    ESX 3.5.0 (U4) build-184236 (vCenter poster build 176894)

    vCenter 2.5.0 (U3) build-119598

    Thanks in advance!

    Best regards, Per Kristian

    Hi, I just had the exact message, on both of my hosts. It no longer responds and DRS was not to migrate the host to another...! After a reboot, everything is ok, new HP DL 585 G2s, is not sure the firmware revision and hp does not management agents.

    ESX 3.5.0 (U4) build-184236 (vCenter poster build 176894)

    I think this may have something to do with the ILO?

    Clues?

  • CAN message handling

    Hi all

    I'm new to LabView and I find it extremely difficult, mainly because of data types.

    First of all I need my project to record all of the CAN messages.

    Second, I need to inspect the ArbitationID and act accordingly on this (some with the result one CAN write)

    So I need to deposit the data accordingly and display data on the GUI

    Usign the single read I can convert CAN Inc. timestamp in a message string and save it but if I try and convert it to a cluster for manipulatuion all I get is the 8 bytes of data

    If I use the multi CAN read I can't break the 5 elements in a cluster within a Bay down to save the message

    Any thoughts?

    I saw many more code, but you make several mistakes that I think make things more difficult.

    When you playback your output is an array of frames.  Each image is a group of 5 things, timestamp, ArbID, IsRemote length data and data.  The table of the service Cluster that you are using is not one you should use.  Who's going to take a picture and turn it into clusters, but you must set the size and applies by default to 9, then what happens if you get 10 frames in a reading?  The last of them is lost forever.  All the reading that read more then 9 frames will lose one after 9.  In addition, what happens if you have no frames?  Well it converts it to 9 frames that are empty, but you go and connect those who anyway.

    What you really need to do, is to process each image one at a time, by looking at the output and then decide what to do.  This can easily be done in a loop For.  A loop For will be pull each image one at a time and let you do things with it and handle it in a way that makes sense or conditionally to save different data in different files.

    It is a modified version that will process each image and according to the ArbID wrote to one of the 3 files attached.  If the ArbID is between 0 and 0 x 12, it goes to a single file, 0 x 13 by 0x200 he goes to the other, and all other executives go drop a 3rd.  I have also updated the format in the file a bit cleaner and I think that it will contain the same information in a tab delimeted file.  Of course, this is an example, I have no idea of what you really need your program to do.

  • Call the message Handler wishes

    I have a client who wishes to change the prompt from the system when you have a call handler a message. It is a system of 4.0 (5) of the unit.

    The message is one that says please leave a message after the tone. When you are finished Please hang up or hold for more options.

    The call handler is set to hang up after the message and they would like to remove the hold it please for more party options.

    Is there a replacement for that command prompt? Or can I modify the wav for the guest?

    I know that an upgrade replaces the command prompt, but it is not that big of a deal.

    Thank you

    Check out this thread:

    http://forums.Cisco.com/eForum/servlet/NetProf?page=NetProf&type=bookmarks&CommCmd=MB?cmd=pass_through&location=outline@^[email protected]/0#selected_message

    He speaks on the guests are used to this - this isn't TAC supported, of course, but you can replace this guest with everything you want. and Yes, that get replaced on an upgrade.

  • I have message handler Firefox is already running but is not responding. To open a new window, you must first close the existing Firefox process, or restart your system. It is NOT open I onlly have a computer

    I installed FF on my new computer, Windows 7 Toshiba, I get the message Firefox is already running but is not responding. To open a new window, you must first close the existing Firefox process, or restart your system. It is NOT open I have only one computer.
    I had a computer scientist to try everything, and we cannot on it to open it.

    Search the firefox process firefox.exe and kill him with for example the Task Manager. It is also worth watching for the plugincontainer.exe.

    The problem and the solutions are explained in the articles:

  • If I have floating values such as 6.3 6.7, 6.9, 7.1, 7.2, how can I write a case statement to handle this

    How can I write a case statement if I want a case for x< 1.5;  ="" a="" case="" for="" 1.5=""><= x=""><= 3.7; ="" case="" for ="" 3.7="">< x="">< 7.2.....etc.  ="" my="" input="" is="" a="" floating="">

    Thank you.

    You don't seem to have set rules on inclusion, but I often use the function in the range and Coerce in these cases.

  • Default call handler

    I have a multi-site centralized deployment of Cisco Unity and I have a few problems with calls to remote stores ending upward on the host site.

    I created handlers call as backups for each remote site provider in a situation of Busy / NA. He then acts as the main greeting for backup for the main auto attendant and the hours, after hours.

    If the AA takes the call and the appellant between a sequence of numbers which is not understood by the unit or is not a DN is valid in the data base of the unit the unit automatically by default is the default initial value of call, which is the site of the main host AA greeting. Needless to say that customers are getting upset when they evoke a branch and end in a totally different store and must then be transferred to new.

    Is it possible to keep call local for this remote store regardless of the numbers entered by a caller?

    Any help is greatly appreciated. I don't lack detail.

    Yes, you can change this behavior. What you see is what is hidden "wishes of error" the default greeting call manager opening created by the installation program. The best way to deal with this is to use BulkEdit to change the greeting behavior 'loop back to itself' error for all call handlers and subscribers in your system - it will then replay just the greeting that the user did when they fat-fingers an option.

    You can read more about the greeting of the error and other issues, you could meet in a deployment of several sites in the book 'audiotext applications in unity' on the Documents page of the www.CiscoUnityTools.com.

  • Change default PDF handler

    I downloaded a demo of Adobe Acrobat... don't buy it.  Have Acrobat Reader, but the default value is now Adobe Acrobat.  How can I change so I can download to/with Adobe Reader?

    In an application, choose the command Edition > Preferences > General > Manager PDF select by default.

  • How to stop a task in the message Manager model pending

    I use the base Manager messages queued to separate my event handler and tasks.  An event on the front (button) Panel puts a message in the queue.  When the queue handles this message, it performs a task.  However, I will now add a button to the Panel before which put an immediate end to this task at any point of the task.

    For example: pressing start on the front panel causes the message handling loop count of 10000.  Pressing stop on the Board before you must cause the counting stop.

    How can I implement this?

    Thank you!

    In general, you don't want to run a task in a single frame of your MHL which will take a long time. You have two options:

    1 have the MHL himself to increment the number of messages. This way you can enqueue message 'stop' priority on the queue if you want to stop while it is happening.

    2. do you have a parallel loop that is incrementing the number and that MHL sends messages to this loop to start and stop it. Take a look at the continuous measurement and a recording project for an example of e-mail between the loops.

  • Change default handler calls for unity

    In 4.0.4 SR1 unit, how to change the default call handler, under the heading "Call Routing"? The default call manager section is grayed out and there is no way to change opening greeting, another manager of appeal.

    The predefined rules are gray because they are not intended to be changed. They are rules "rescue" which must be in place and valid at all times, otherwise it is possible that calls will not be managed properly.

    You can override default emergency rule basically call manager by simply adding a new rule above him, with the same criteria as the Default rule call Handler, but different ' send the call to the "destination. However, be sure tp change the order of the rule such that your new rule is just above the default rule call manager, but under the rule of Sign-In attempt. If it is above the rule of attempt to Sign-In, then the subscriber access simple message will not work. Whenever you make changes to the range tables you want to run tests to ensure that they wanted affect on different types of incoming calls.

    For more information on routing rules, see here:

    http://www.Cisco.com/en/us/products/SW/voicesw/ps2237/products_administration_guide_chapter09186a008022cb4e.html

  • type of message delivery on B2B Server JMS configuration

    Hello

    I have configured my B2B Server to use the JMS delivery to the host partner channel by setting the attribute 'Use JMS queue as default' true. Now my query is how to configure the jms message type. Default DC the jms message is get sent as message byte. I want to change the type of jms in the text message. Is there a way to configure that?

    Kind regards
    BP

    Please tick the correct answer so that others will also get benefited.

  • Limitation of the bytes on a single replication message

    Hi experts,

    I have a question on the amount of a single replication message.
    In the BDB document (worm 4.7.25), DB_ENV-> rep_set_limit() describes how to limit the amount of data.
    But he explained that "the limit is not a strict limit, and the record that exceeds the limit is the last to send.

    Anyone could explain the exact meaning of this term?
    For example, if I set the limit to 1 MB, which is the maximum possible?
    In this case, the replication message might exceed the limit?

    Thanks in advance!

    Jinsoo.

    Hi Jinsoo,

    Here's some additional background information in response to your
    issue. It is not nearly as detailed as Sue's response, but it can be
    useful to understand the idea behind this method rep_set_limit().

    There are a couple of different types of situations where replication
    sends a message. Perhaps the most obvious situation is when the
    master has executed a new update transaction, and he "pushes", some
    messages from customers. Customers don't know when to expect
    These messages; they only passively receive them.

    Another type of situation is when a customer decides she needs some
    specific group of information. In this case it actively sends a
    message from request to another site and that the site responds to the
    the request by sending the information. (We could call this 'pull'
    treatment.)

    The answer may be generally several messages. For example,.
    the customer can ask for all pages in the database 'x '. If database
    'x' has 1000 pages, the full answer to the claim consists of 1000
    messages. Maybe it's a lot of data, and it may be sufficient to
    submerge a part of the communications infrastructure.

    For example, the rep_set_limit() method is provided as a means to limit the
    amount of "response to a request" which is sent at the same time. If a
    response is larger than the limit, then break us into pieces.
    (By analogy, just as when you search for something on Google, you)
    do not get all the 32,000,000 results at a time; you get only the first web
    page results 1 to 10, then you can request the next page,
    etc.)

    The parameter of the rep_set_limit() method only affects this 'pull '.
    the treatment. It does not affect the messages generated by the 'push '.
    messages which I have described above. The key to the first sentence
    sentence of the manual page is "... in response to a single message.
    handled by the rep_process_message method. »

    I hope this helps.

    Alan Bram
    Oracle

  • Why the continuous measurement and Logging in LabVIEW 2012 Project uses strings instead of Enums and orders from the queue?

    Hello!

    I noticed that the continuous measurement and a project in LabVIEW 2012 Logging using chains instead of enums and orders from the queue. I wonder if there is a good reason for it?

    Kind regards

    Anguel

    First, string vs enum debate is probably the version of LabVIEW vim vs emacs. There are good arguments on both sides, and I doubt that there is always a "winner".

    A brief summary of our reasoning for the current state of the project examples:

    1. We used enums for the state machine because it is self-contained. A state machine will never tell himself to enter a State, he does not know. Knowing (as the programmer) all possible States with the help of an enum allows you to enlist the compiler in order to help us avoid mistakes to change the time (because you can't quite out an enum and LabVIEW can be said if you are not covering all cases to a structure of the case, etc..).

      Enums provide greater protection and rigidity by ensuring all withdrew at the time of publishing. This is often the 'default' recommendation that we do.

    2. We used strings for messages in queue manager because the producer of message and the message handler could be independent processes that are reused or traded. Channels avoid the need for the compiler to be able to connect the orders and push this responsibility to the programmer. This allows you to develop some sub-components independently as long as you agree to a series of channel commands that you can manage - you need not to share a file 'messages.ctl' or 'states.ctl '. It is conceivable a loop of message management a message it does not, how you can decide to either silently ignore it or will trigger an error (as we do in the model). The strings make it also easier if you want to swap the queues of LabVIEW outside by a TCP implementation for network vacilitate or intra-Processuse communication where the other end may or may not be written in LabVIEW.

      Channels to provide more flexibility (that is, you can add new commands to an existing via plugins system, you can pass parameters as part of the string, etc.) at the expense of pushing her potential errors at run time and to put more responsibility on the programmer.

    3. The actor's gifts frame a 3rd option - using classes such as messages. For me, it combines many of the advantages of these two enumerations (strictly typed, change errors) and strings (flexible and scalable), but with the disadvantage of being somewhat less transparent (you understand OO, be comfortable to navigate through a multitude of screws, legacy of understanding, etc.).

    I don't know there are other reasons, others to the breast OR had or seen as we validated models and examples of projects in-house, but here are my reasons. We know that we can not design for each situation there - our goal is to get useful models against new users to make them aware of what well thought LabVIEW programs are similar to experienced users know their applications better and I hope they do not hesitate to change what we provide or create their own designs, when they feel it's necessary. (On a side note, please share what you come up with - a community of experts sharing models would be really useful to us all LabVIEW users).

    Best regards

    Simon

  • Queues do not work in my object-oriented design

    I'm developing an application in real time, and I'm using an object-oriented approach. The design model is similar to the framework of the actor, but made to measure. The class structure is configured to support several different subsystems, with the highest class being a class 'subsystem '. Currently, I only have one motion in class just to check the legacy, but my problem is with the subsystem class.

    Each subsystem object has a few parameters, one of them being a "execution queue. This is a queue of strings 1 d arrays that dictates what to do on the next trigger subsystem. Each subsystem is started in a similar way as part of the actor (I used "Launch actor Core.vi" as a guide, so that means using an asynchronous call by reference (CGRA).) I simplified it for my purposes and also wound up the reference which the actor vi does not (I had problems even when left open reference), see image below.

    VI "SETUP", you see in the picture, is where the queue is initialized, I don't understand the code, because it is quite simple. I checked that the queue is created correctly. None of my code below launch modifies the queue, it accesses the queue. When I try to perform an operation any on the queue after the launch of VI, I get the following: «Get the status of the queue in Subsystem.lvclass:Message Handler.vi:640018-> Subsystem.lvclass:Controller.vi:4750017-> Subsystem.lvclass:Controller.vi.ACBRProxyCaller.A84000DB»

    I get similar messages to queue operations that I try to do. I also checked - for operations where I get an error - I have the same reference that was created during installation where my queue operations successfully. The only difference between VI and VI my problem Setup is that the problem VI VI I call through the CGRA.

    Any help that you could provide to me about what I'm doing wrong or if I'm trying to do something that cannot be done would be greatly appreciated!

    Thank you

    Ben

    If you actually tried to imitate the framework of the actor, you would have seen a comment explaining why the actor launched must create the queue.  Bascially, as soon as this launch VI hierarchy is complete, it is removed from memory.  This includes references, he has created.  So when the launch is completed, your queue reference becomes invalid.  Simple solution: make the actor called the queue as part of its initialization.  Then the queue will be valid as long as the actor is active.

Maybe you are looking for