Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by Stagg54

  1. Maybe it would be worth writing an xcontrol with a string indicator and have the xcontrol monitor the parent vi (not sure if that is the right terminology) and whenever the user hovers over a control, the xcontrol would display the help description of the control (that is being hovered over). It seems like you ought to be able to do that. Although that seems like a lot of work. Also the other way that context help breaks down is with subpanels. When you hover over a control inside the subpanel, LV only displays the context help for the subpanel itself, not for the control within the subpanel vi that you are hovering over. Hope that description makes sense. What I've done to compensate is just write a simple vi that runs in parallel and knows what vi is loaded and has a reference to the subpanel control and then whenever you hover over a control in that vi (detected using dynamic events), it updates the description (and possibly caption) of the subpanel control (using VI server), effectively "fooling" LV. LV is still displaying the description (and caption) for the subpanel control, the description is just changing on the fly to match which control the user is hovering over. Hope that all makes sense. That seems to work for us.
  2. Typically we just use the context help. If you enter a description for a control/indicator, that will show up in the context help window. You can programmatically show/hide that. So you just have a help button that pops it up. Then when they hover over a control/indicator the description shows up in the context help window.
  3. When i first read your post I immediately had the same idea. Yair beat me to it.
  4. I agree with Jack. I think it is a feature that should not have been implemented. From the point of human performance and error prevention it is horrible.
  5. Why not just have a seperate TCP/IP process (call it a moderator) running as a seperate app? Have all your logic in there. When each of your seperate apps startsup they checking to see if the moderator is running (by attempting to open a connection to it). If not, then it can spin one off.
  6. Second this idea. You could definitely make an xcontrol do what you want. Xcontrols are usually a pain, but if you've got that many of them... The first thing I would ask myself is how important is this "feature"? My inclination would be for the end user to just deal with it and ok maybe it's not that intuitive, but it's a lot easier than writing an xcontrol. Then again if they want it bad enough and are willing to pay for it...
  7. There are nodes that let you drop Matlab code directly into LabVIEW (with a limited function set). However I believe they require more than the trial version of LV (not sure what version you need - check the NI website). Note this also requires a Matlab license which I am assuming you already have.
  8. Sounds like something for the idea exchange.
  9. to add to Rolf's post: for an abortable wait loop, I just use a notifier as the loop timer. I set the timeout so that it will time out at the correct point in time. Then I can abort it early by sending a notification. I'm sure other people have other ways of doing this, but I've found it works for me and seems fairly clean to me. YMMV
  10. Perhaps I should have explained more, but I figured if someone had to ask what the heap peak window was, then they wouldn't know the answer to my question.
  11. I'm trying to use the Heap Peak to get rid of some insane objects. However I am having problems with the F button. I've highlighted the appropriate entry in the right window, but for some reason clicking the F button does nothing. Now this vi has several tabs. It is possible its on a hidden tab and that's why it is not showing up? Anyone have any experience with this? I am using 2011 SP1 F1 if that helps.
  12. I should have read Darren's article first, because that is exactly what he suggested.
  13. My suggestion is similar to Tons. I just use an array of cluster, where each cluster contains just an array.
  14. Just took the CLA-R last week and I can tell you definitely want to at least read the book and take the practice exam before you take the CLA-R. I'm sure its possible to pass without doing that, but it would be very difficult.
  15. That must be fairly recent, because three or four years ago when I took the course it was based on Endevo's course and it was horrible. I sure the course you've designed is much better. I work with several people who have many years of experience and still write crap code. You don't need a certificate to write good code, but having a certificate proves that you've written good code at least once. I would rather have someone with a small amount of experience writing good code, than a lot of experience writing bad code.
  16. It was my first experience with a service request and it went quite well. Luckily I was able to upgrade to LV2011 for this project, otherwise I probably would have been much more upset.
  17. I was able to upgrade to LV2011 SP1 and the problem went away. Not exactly what I was looking for, but it did work. I did not try the force recompile. At some point I may go back and do that just to see what happens. Thanks for all the advice and help. And thanks for NI for pointing me in the right direction.
  18. I did try recreating the class and that did not work. I have not tried the forced recompile. How does that differ from a mass compile?
  19. So I filed a service request on this and NI has been helpful but I haven't managed to resolve it yet, so I'll post what I know here and maybe someone will have an answer. It appears from talking to NI that this may have been resolved in 2011. Currently I am using 2010 SP1, 32bit on Windows 7. Upgrading to 2011 may not be option. I'm looking into that. Here is how I noticed the issue: I was trying to deploy and run some code on an RT target. When I deployed the code it asked me to save a particular lvclass file. I hadn't changed the class, so I'm not sure why it wanted to save it. I clicked ok to save and got into this endless loop where it kept asking me to save it. Clicking cancel got me out of the loop, but then I couldn't deploy the app. I thought maybe the class was corrupted so I tried to mass compile it and I got the following error: Fatal Internal Error at OMUDclasslinker.cpp line 4161. I tried running the same code not on RT but within the regular LabVIEW environment and it ran fine. I also noticed that: The save-all button is always enabled and everytime I click it and click on the show details button, it says that there have been changes to this particular class as well as its parent, even though I haven't changed anything. When I click save, this time I get no error, but afterwards the saveall button is still enabled. And the next time I click it the same thing happens. Anyone have any thoughts?
  20. That was what I was thinking. I guess I'll have to look a little closer at my design. to jgcode: It's not really causing problems so much as it seems odd to me that to load and work on a low-level component I have to load essentially the whole project. I think goes back to what Daklu said about dependencies. I think I need to readjust my paradigm to "let high level components depend on low level components, but not the oher way around."
  21. My recommendation would be to start small. The actor framework to me seems like a rather advanced OOP concept. Although I really do like it.
  22. I'm just curious how many use libraries in your day to day development (I'm assuming a fair amount of you do). I'd like to know how and why you use them, especially if you are using multiple libraries in the same project. I'm running into this problem and I'm not sure its inherant in using libraries or if I'm just misusing them or not using them as intended. I have this project and every major component is in its own library. I have a config library. I have a notification library. I have a synchornization library. I have a file writing library. I have a TCP/IP communication library etc. However what I find is when I want work on one small component it ends up loading almost every library in the project. For example in my notification library, if I load any vi in that library it loads the whole notification library. There is a vi somewhere in the notification library that sends out a TCP/IP message. Because it uses a vi in the TCP/IP communication library to get a queue ref, now it loads the TCP/IP library. And also somewhere in the notification library it writes something to a file, so it loads the file library which happens so use a semaphore to control access to the file which loads the synchronization library, which somewhere has config file entry which determines the size of some queue which no requires loading the configuration library. And it goes on and on. So now to edit a single low-level vi I end up loading multiple libraries into LabVIEW. Anyone else run into this problem? How do you handle it? How do you determine what to put in libraries and what not to? This problem gets even worse, because I have 2 applications. One is an HMI app running on Windows and the other is an RT app. For communication I send objects over TCP/IP and have a command pattern that runs on the recieving end. When I do that however then I up loading half the HMI app into memory on the RT target, just because one of the messages references a library on the HMI. Now I have all this code loaded in RT that is intended for the HMI and will never run in the RT app. Did I explain my problem well enough? thoughts?
  23. for what it is worth, I passed the CLA with an LVOOP implementation. unfortunately I can't post it (for obvious reasons)
  24. Try grabbing the Y array and just rotate it. If I understand what you are trying to do correctly then that should work.
  • Create New...

Important Information

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