Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by jdunham

  1. That VI doesn't seem to find clones started by the Start Asynchronous Call function.
  2. Thanks for the link! I see in its code that it just attempts to open clones 1 to N where N defaults to 100. That seems like a real hole in the VI Server API, not to have a method to find all active processes. OK, I just read the whole thread, looks like there is awareness of the issue. Too bad there's no solution yet. Thanks again ShaunR for the pointer.
  3. Oh yeah, I was converting the name string to a path, since it seemed to want that, but I forgot that it accepts strings Thanks! So the App.AllVIs property doesn't include clones in the list, so I still haven't solved my actual problem of enumerating all the clones currently running as top-level VIs in my current app instance. Is that doable?
  4. The App.AllVIs property gives a list of VIs in memory. I want to open VI references to all of them, but I need their paths. Is there a way to go from lib:vi name to path to its reference? Actually what I want is to find all Vis executing at top level, including clones. Is there another way to get that?
  5. I knew about the event, but I wasn't sure it would process Windows messages generated from outside of LabVIEW. I ended up building a test anyway to make sure that it still worked as claimed when running as a service. But since I Googled something like "labview application close external event", and got very little useful information (and nothing dated later than 2008), I figured a Lava post was in order, and it was certainly helpful.
  6. Thanks for the replies. I checked out the Windows Message Queue example (thanks, ned) and it works fine. In my case, we are our LabVIEW executable as a service (with FireDaemon), and I think it will be enough to monitor the Application Instance Close? event and filter it and then do a graceful shutdown.
  7. I'm trying to catch the external application close event and shut down cleanly. This forum post on the dark side links to an old LAVA thread: http://forums.lavag.org/WM-QUERYENDSESSION-t1285.html but in the new world order, that link no longer works. But I care more about the right answer than the link. Can I catch the an OS-initiated application close/shutdown message from inside of labview?
  8. I can pile on here. One reason not to over-comment is that then it makes it harder to figure out which comments are important. Sometimes less is more. Admittedly more often code suffers from a dearth of comments than from a surplus.
  9. Right, I think I said as much, albeit a lot less clearly. The real issue is that ni.com can't really prevent you from posting infringing code. It would be a violation and I'm sure they would take it down if duly notified by the copyright owner, but in the meantime if someone else downloaded the offending code and reused it, they could still be liable to the copyright holder.
  10. Well I'm not a lawyer. It seems like a site has no authority to assert that donated code is public domain or any other license, unless the copyright holder (almost always the original author or in some cases her employer) has explicitly assigned the copyright to the site. It certainly could not do that retroactively, but it could make terms of use for the site which include some stipulation about the licensing of posted code. I think most sites are unwilling to do that since it's much harder legally than just saying "we have no control over what you choose to post, but copyright violations are forbidden to be posted". Another consideration is that the USA has the "Fair Use" doctrine, which is legally vague, but which could be used to defend against using copyrighted work which was posted with the intent of it being reused. Another consideration of copyright law is that the penalty for infringement is related to the economic damages, and I think it would be difficult for the copyright holder to claim damages if the code were posted by the author on a public web site.
  11. +1 to Chris for removing a spam link -1 to Chris for replying to a question from Barack Obama's first term in the Senate.
  12. Is the problem just the label? You have to type that in yourself. If it's not showing a waveform that looks like a spectrum, then you have a wiring problem and you should post your VI.
  13. Is there any easy way to add a new method VI to an existing hierarchy of inherited classes? Right now I make the VI in the base class, and then save as... to make a copy in each child class, and then I have to change the input and output class terminals, add it to the correct class, and re-import the icon glyph. I guess that's not too bad, but it is pretty tedious.
  14. jdunham

    Dirty Dots

    Have you checked that the VI's path in the stored in the lvclass file matches the actual VI path?
  15. If you have 100 listeners, you would need 100 queues to send the same message to all of them simultaneously. It's much easier with a single notifier. Our software detects events which must be handled by a variety of subsystems all able to run in parallel, and a notifier makes short work of it.
  16. The basic difference of course is that a Notifier is a broadcast mechanism. If you have ten threads waiting on (listening to) the queue, and enqueue an item, then only one will stop waiting. I think it will be the one that started waiting first but I don't know whether that is guaranteed. If you have ten or ten thousand threads waiting on a notifier, they will all stop waiting and take the update. With a single element queue, you can't put any more into the queue until the first item is taken out, but with a notifier, you can put as many in as you want, and if the receiving thread or threads don't finish looping in time, they can miss notifications. There is no way for the sender to know if any or all of the recipients have received a particular notification.
  17. If you just use the Application property node without any refnum wired in, it will give you the current app, which it looks like you were trying to dig out with all that code. You can also change the "This VI" refnum constant into a "This Application", but that's the same as not wiring in the refnum at all. Jason
  18. I am not a lawyer either, but one essential protection is that any software you release should be marked "AS-IS" and that there is no warranty on operation or on "fitness for purpose" and you want to make sure you assume no liability consequential damages. You should have a clause that basically says "we don't accept liability for anything, but in any case, our liability is also limited to the price of the software. Of course all of that stuff is fodder for the courts no matter what you say in your contracts and licenses, but if that's on your software and on your terms and conditions, then you'd hope that was some protection. If you search those terms and the agreements of other software products you own, you should find some acceptable boilerplate language. My understanding is also that when you see stuff in capital letters, you have to keep it that way, probably because some court somewhere decided those clauses weren't obvious enough and somebody lost a case about it. There are other important clauses that seem irrelevant, like severability, so don't cut anything out without using a lawyer, which you should do anyway. The importance of those clauses is that you have to make it the customer's responsibility, such that when they accept the software and make the payment, that means they are satisfied with the software's functionality and fitness for purpose. If the machine ends up not working or hurting somebody it should have been agreed upon upfront that this was their responsibility to spec the project to consider all the safety-related requirements and to test that those worked after taking delivery and before deployment. Of course there is always room for disagreement and lawsuits so insurance is a good idea, but I've done projects without any. I don't think this ends up in court too much at the typical labview scale, because the customers (i.e. a factory) have plenty of insurance. Their insurance carrier is probably not going to bother coming after you even if the defect can be tied to your work. The aforementioned examples of Toyota or Microsoft are consumer applications, and the class-action lawsuit is its own beast, but you're not likely to run into that until you have millions of customers.
  19. Yes the building build spec runs in a different application instance. Maybe you can get your prebuild action to spit out a ref to its own application.
  20. Sounds like a good setup. First you will want to hook up the camera and acquire the images automatically using the NI Vision Examples. If you are having trouble, NI tech support should be able to get you to that point. How do you plan to select the ROI automatically. That seems like the difficult part, but I'm sure it's possible.
  21. Is it just one file? If you are loading a hierarchy, you can load the subvis first and try to isolate which one is not opening correctly. You might be able to revert just that one to a backup version.
  22. Thanks Kurt, this helped me out today Jason
  23. You should contact your local NI sales rep. His or her job is to help you get into LabVIEW. Or you could buy a new computer to get a new eval (or maybe install a virtual machine within your OS, that might work too). Jason
  24. My bad, I hardly ever sign my posts. Jason
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.