Popular Post Daklu Posted March 25, 2012 Popular Post Report Share Posted March 25, 2012 The LapDog.Messaging framework has been updated to version 2.1. This release should be fully backwards compatible with version 2.0 while introducing a few new features to support unique developer needs. Improvements include: -Two new native message types supporting Double and Variant types. -A new companion library includes I32Array, DoubleArray, StringArray, 2dStringArray, PathArray, BooleanArray, and LVObjectArray messages. -A new type of queue, PrefixQueue, makes it easy to universally assign a prefix to all messages sent on a specific branch. This is useful when the message receiver needs to distinguish between identical messages from different senders. -The package includes a "Fundamentals" example illustrating some of the core concepts of the LD.M framework. (I have not prepared the example for the Example Finder yet, so use VIPM's info window to get to find it.) -VI documentation has been improved. All VIs on the palettes now include documentation. This package works with Labview 2009-2011. Go here to download the latest release and give it a try. -Dave 4 Quote Link to comment
jcarmody Posted March 28, 2012 Report Share Posted March 28, 2012 I downloaded it and got a zip file, not a vip. What do I do? Quote Link to comment
drjdpowell Posted March 28, 2012 Report Share Posted March 28, 2012 I got a vip file when I downloaded it. Quote Link to comment
Daklu Posted March 28, 2012 Author Report Share Posted March 28, 2012 I downloaded it and got a zip file, not a vip. What do I do? Short answer: Change the extension to vip. Long answer: It turns out vip files are stored in zip file format. You can open, browse, and unpack them using your favorite zip software. I'm guessing some software (recent versions of Internet Explorer in particular) recognizes the zip file format and changes the extension automatically. The file itself is still intact, so you can change it back to vip and it'll work. Quote Link to comment
AlexA Posted May 2, 2012 Report Share Posted May 2, 2012 Hey Daklu, I've bombed you with a series of messages, sorry about that! Anyway, in case you're more a forum guy than a PM guy, I'll repeat my questions here, along with another question I have. First, the most recent question (didn't send it to you via PM): I'm trying to deploy the messaging system to a real-time system. When I started placing the various VI's, it is asking to save (recompile) the NAtive Arrays and Native Types libraries, but when I tell it to accept and save, it says the library exists and I do not have permission to modify it, can you help me out with this? A Re-cap of PM questions (with the dumb ones sorted out): 1.) Is it ok to use the deprecated version of Priority queue? (I already know you have to manually create messages, which isn't a big deal). 2.) Are there plans to reinstate Priority Queue in future releases? If so, do you have an ETA on that? Kind regards and thanks for all your help! Quote Link to comment
Daklu Posted May 2, 2012 Author Report Share Posted May 2, 2012 I've bombed you with a series of messages, sorry about that! Anyway, in case you're more a forum guy than a PM guy, I'll repeat my questions here, along with another question I have. No worries about the PMs. I just didn't happen to be online when you sent them. Thanks for reposting your questions publicly. I prefer to make questions and answers available for searching. I'm trying to deploy the messaging system to a real-time system. When I started placing the various VI's, it is asking to save (recompile) the NAtive Arrays and Native Types libraries, but when I tell it to accept and save, it says the library exists and I do not have permission to modify it, can you help me out with this? I often make my reuse libraries read only. It helps prevent me from accidentally editing them and breaking other apps that depend on them. Labview automatically recompiles code when it is loaded (if it is necessary) so usually it is safe to discard recompiles. If you do want to save the recompiles, just go to the directory in vi.lib and change the file attributes to read/write. Note: I've only worked on a few real-time systems and I've never used LapDog on one. It's not designed with RT efficiency or determinism in mind. I think it will work fine on a RT system, but it may introduce jitter or other timing issues. 1.) Is it ok to use the deprecated version of Priority queue? (I already know you have to manually create messages, which isn't a big deal). Yeah, there's no problem using the deprecated version if you want. It will be included in all v2.x packages. I do plan on removing it from the v3 package, but it will not cause any problems with apps you have developed using v2. Changes that break backwards compatibility (like removing the priority queue) are released as a new package with a new namespace and a new install location. Breaking changes are indicated by incrementing the major version number. That means classes from LDM.v2 cannot be directly used with classes from LDM.v3. This is intentional. It does make it inconvenient to upgrade an application to a new major version, but it also allows users to have incompatible versions of the libraries to be installed and loaded simultaneously. Users can be reasonably confident they can install a updated version of a package without breaking any existing code. (Guaranteed compatibility is nearly impossible to achieve.) 2.) Are there plans to reinstate Priority Queue in future releases? If so, do you have an ETA on that? I'm undecided. My current thinking is a priority message queue is unnecessary because messages should be processed instantly. If messages are getting backed up to the extent a priority queue becomes desirable then the message receiver should be refactored to eliminate the bottleneck. That's my current line of thought anyway. There are valid use cases for a work queue, which programmers would intentionally keep backed up so the worker is always running. Message queues and work queues are different concepts and I'm not sure how to separate the ideas in the LDM api. A priority queue blurs the line between the two and--if my current thinking is correct--encourages tighter coupling between components. Regardless, I don't have any concrete plans for releasing v3. Major releases occur when I have to make a change breaking compatibility, and for the time being I don't see anything on the horizon requiring that. I might have to make some breaking changes if I submit LDM to the NI Tools network, but even then it would likely be a straight repackaging of v2 with a new namespace and install point. Does that answer your questions? Quote Link to comment
AlexA Posted May 2, 2012 Report Share Posted May 2, 2012 Hi Daklu, Thanks as always for the prompt answers! I did go have a look at the library in both explore (the windows directory) and in the project window. I couldn't find anything explicit in the project window to change the file privileges (I didn't look at it files view). In windows, it appeared to have modify privileges enabled, but I may have been looking at the wrong settings. I'm sure I can figure that out. The problem with trying to deploy to real-time is that you can't choose NOT to save it if you still want to deploy (while in the dev environment). The only options are save or cancel. I'm not using the messaging in any time critical applications so I'm not worried about potential for jitter, but thanks for the heads up! Yes, you have answered my questions very clearly. To expand on my intention for the priority queue, I think I am possibly using it in what you call a Work Queue. My UI update queue (the one that takes messages and sends info via network to my host code) is a Priority queue. The high priority queue is for important status updates, the lower priority queue is used to send image data. It's a fixed size, and enqueued in a lossy sense (I don't really care exactly what image the user sees, as long as it's updating at 30 FPS and correct in order). I perform important file IO on the real-time machine. The reason for this is that the connection can handle 30FPS without lagging (building up a backlog of image information), but I may want to run the camera a lot faster (potentially as high as 100Hz). The image data is pulled from FPGA in a sub-loop, then sent to the main message handling loop, and from there to the UI update loop (or simultaneously to file IO). I may be trying to step around the problem of rate limiting (down sampling) the UI update in kind of a brutal fashion, or it may be more elegant, I'm not sure..? Thank you very much! Quote Link to comment
Daklu Posted May 2, 2012 Author Report Share Posted May 2, 2012 Here's a link to changing the read/write attributes in Windows 7. Is this an accurate representation of your system? The camera may be taking images at any speed and you want to save all those images, but to avoid choking the connection you're only sending images up to the UI at a maximum of 30 Hz regardless of the image capture rate. If that's what you're intending, I don't think a priority queue would help you out. The priority queue as I implemented it has the same size for all priority levels. You can't set the internal priority 1 queue to a length of 100 and the internal priority 5 queue to a length of 1. You'd either have to set the length to a low number and risk losing high priority messages, or set it to a high number have the UI show the image the camera took 100 frames ago. (Since the most recent image will be put at the rear of the queue.) Quote Link to comment
Michael Aivaliotis Posted May 3, 2012 Report Share Posted May 3, 2012 I downloaded it and got a zip file, not a vip. What do I do? The reason this happens is probably more info than you really need. Just rename the file to VIP and you should be fine. The permanent quick fix: Goto your Internet Explorer>Internet Options>Security Tab Make sure the Internet zone is highlighted Under: Security level for this zone, change the slider bar from Medium-High to -> Medium Click OK This problem only happens in IE. The best solution is to stop using IE . Also, It might not be possible to switch the security level because of your IT dept. restrictions, but if you can, then this is the way to go. The super-long-term fix: Sourceforge needs to add the VIP MIME Type to their web server configuration. Quote Link to comment
AlexA Posted May 3, 2012 Report Share Posted May 3, 2012 Hey Daklu, Yeah you nailed it, it actually just struck me that since I don't care about losing specific frames to the UI, I can just fix the length of a single UI queue (not priority), and load the frame info into the queue with say 1-5ms timeout. If it timesout, no biggy that frame gets discarded. For more important UI messages, I'll double the timeout to say 10ms. Thanks for the link about the file permissions! Quote Link to comment
AlexA Posted May 8, 2012 Report Share Posted May 8, 2012 Just a quick question Daklu, why do the message types have an "xxxx message constant.vi"? Along with an associated type def? Quote Link to comment
Daklu Posted May 9, 2012 Author Report Share Posted May 9, 2012 I assume you're referring to class members like "Message Constant.vi" and "Message Control.ctl?" Message Constant.vi allows me to put the class constant on the block diagram palette. It doesn't have any terminals and is not intended to be used directly on block diagrams. Message Control.ctl allows me to put a class control on the front panel palette. Quote Link to comment
AlexA Posted May 10, 2012 Report Share Posted May 10, 2012 Ahh ok, makes sense! Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.