Jump to content

hooovahh

Moderators
  • Posts

    3,432
  • Joined

  • Last visited

  • Days Won

    289

Everything posted by hooovahh

  1. I've wanted a scroll wheel mouse event since the event structure existed (7.0? 6.1?). NI some times takes time catching up with implementing out futuristic ideas. At least they give you the tools to be able to come up with your own solutions/work arounds until it is a native feature.
  2. I can't speak for the "Team LAVA" because I was not involved, but I know for a fact that Mark is still very active and personally goes through each submission to the CR when something is submitted.
  3. An easier thing to do (in 2013 only of course) is you can set the size of the queue that is used for an event. So in this case you would set the queue size to 1, and only one event will be in the queue to be handled. In the Edit Events window select the "Limit Maximum instances of this event in the event queue" and choose 1. My tests show that this seems to work correctly and the last event to handle is the last event fired.
  4. To be clear I don't think the toolkit is free (someone correct me if I'm wrong). What is free is the deployment of a EXE that uses a subset of the Vision toolkit components. So you pay for the Vision Toolkit, develop code in it, then build an EXE. If the toolkit VIs you used, included image processing functions, then you must pay for a run-time license on each machine that runs that EXE. If you only use the other functions of the toolkit then you can get away with making an EXE and not need to pay per seat by using what was linked to.
  5. If a VI is being called once, it can benefit from inlineing (assuming it can be inlined and be made reentrant without a functional change) Maybe that's why I am inlineing so much, I am not familiar with what inlining means in other languages. Is it just taking text files and basically inserting them into one big file? If you had 3000 text files (like 3000 vis) would a text based language have a difficulty time using it? EDIT: The link I posted to earlier mentions this. Many OpenG VIs are small subVIs, that could be called within a loop, likely has unwired outputs, and you may call it once.
  6. I don't have a lot of tight/fast loops running using OpenG code but I do call OpenG code quite often (Arrays, File I/O, Application Control, LabVIEW Data, String, Time), and inlineing a VI is a quick and simple way to get some extra performance (little or not). It's not a magic bullet by any means but I made a point when working on our internal reuse library to inline VIs that can be inlined. There was also a tool NI made for 2012 that measured performance and detected when VIs may benefit from an inlineing operation.
  7. This is likely a discussion that is similar to many others that OpenG has had to discuss but I'm bringing it up anyway. There are improvements to LabVIEW that could make OpenG better, but OpenG likely wants to keep support for older versions of LabVIEW. One such improvement is the ability to Inline VIs. I think that many OpenG VIs should be inlined, this would make them more like primatives where they are reentrant, and at compile time will be inlined into the calling VI reducing the overhead in calling a sub VI. The issue is that Inlineing was added to LabVIEW in 2010, and I believe the minimum version OpenG supports with the newest release is 2009. OpenG dropped support in the newest build of packages, for 8.6 and older, over 2 years ago. Thoughts? Objections? Obviously OpenG will still support older versions of LabVIEW (OpenG version 2.0 goes back to LabVIEW 6.0) this will just mean that any new features/bug fixes would only be applied to LabVIEW 2010 and newer.
  8. Awesome now my prayers are answered. Next step will be to update my Right Hand Quick Drop Shortcuts to use the OpenG functions that I couldn't before.
  9. Awesome idea. I don't use DVRs much (or OO) so maybe that's why my mind didn't go there, but I much prefer how the DVR implementation works.
  10. I was talking with a coworker of mine and they had an issue where they were creating clones of a reentrant VI. But in this VI is a functional global VI. Now normally this VI is non-reentrant so there will only be one copy of this VI in memory, and any clone writing to will likely overwrite the data there. Then all kinds of race conditions happen, and then there is the issue of this being a blocking call to other clones too. So I wanted to see if I could make a reentrant global, that only really was used in one of the clone VIs made. Attached is my attempt at it. Not much in line of error handling but I think all references are closed as they should be. Run the Main.vi and it will create 3 clone VIs with a graph control where you can add data and clear data to the graph. The data the graph loads is from the reentrant global, but only one clone should use one global clone. Keeping track of all these global clones is yet another global (this was a poor test but I wanted to just see if it would work). Now my main can have access to all the globals too for what ever reason I may want. Has anyone done anything like this? Does anyone find this useful? Would a shift register in the Clone be alot easier? (probably) Reentrant Global Test.zip
  11. Very neat I never knew that existed. So you develop using the Vision Toolkit, and if you don't use any image processing functions, then you can deploy to PCs without needing a license of the Vision Run-Time Engine. I would need to test to see what functions do and don't work without a license. EDIT: Looks like there is a page describing the functions that are included. http://digital.ni.com/public.nsf/allkb/5476BD570E87E0BA8625797D0071263C
  12. No I don't have any tool like that in my back pocket. But I would love to see it implemented with a picture control. I've done some stuff like that in the past and it was quite rewarding/time consuming. I think that some .Net could come into play for image resizing (I'm in love with the GDI resize) so your drop down selection fits to the control size. If I were to do this I would have a sub VI be the thing that is shown when you click. It is called and moved into location to look like the drop down. The VI would then contain a picture box on the left, a single column listbox for the text, and a vertical scrollbar. Very do-able just time to get mouse clicking to index (with scrollbar) and mouse move on the controls to highlight the row by drawing some box around it. Sounds like fun.
  13. Looking at the help on that invoke node method in 2012 it states that it does work in the Run-Time engine. So I wanted to to test it and make an EXE. I don't have 2010 but I do have 2011 so I started there. The problem is in 2011 this invoke node method is private (and I assume 2010 as well) which means that it was probably just a test case and not fully implemented. I would recommend staying away from private methods, especially if it is in an EXE. That being said the work around is you can use other methods to get access to the image. Here is one http://lavag.org/files/file/30-get-data-from-clipboard/ The other one by RolfK I like better but can't seem to find a link to it at the moment. EDIT: Sorry the clipboard code posted above uses the same Get Image function. RolfK's does not but as I said I can't find a link.
  14. hooovahh

    arduino

    Ok so an Arduino is a microcontroller. Not all microcontrollers are Arduinos, but all Arduinos are microcontrollers. Arduino hardware and software is open source and has nothing to do with NI. People can make their own Arduinos that meet their specific needs but there are several official Arduino types like the Mega and Uno. The software used to program an Arduino is a custom build IDE which is basically C++ (correct me if I'm wrong). Once you program the Arduino it can run without a PC, it will just do what it was told to. Here is where LabVIEW comes in. NI developed a toolkit which has a set of code that is put on the Arduino so that it can communicate back to a PC running LabVIEW. This set of code allows you to do a whole bunch of stuff without needing to write any text programming because NI already has done the work for you. This removes some of the low level features of an Arduino but for most people it is a way to add cheap hardware to LabVIEW. The Arduino does not run LabVIEW code, and you cannot compile a VI to be put on the Arduino. The toolkit is just a set of functions that allow you to control the Arduino from LabVIEW. I don't know what you mean by worldwide standards, an Arduino Uno is the same anywhere in the world.
  15. The LabVIEW code to perform a color quantization sounds complicated. There are a few command line utilities that could work for that you could call from LabVIEW, but I admit I couldn't get them to do what I wanted. All the files I tried them on became corrupt and actually grew in size. http://pngnq.sourceforge.net/index.html http://www.cs.berkeley.edu/~dcoetzee/downloads/scolorq/ http://pngquant.org/
  16. Wow this thread is full of win. So much useful information. When I right click and do a replace I had no idea why some time it would give a useful category and some times it wouldn't. I had no idea what methods it used to try to get the palette it came from.
  17. I have licensed servers for NI product activation. For this reason I haven't seen a license in over a year. Now I still know what the format is, but it is not unreasonable to say someone on this forum may not.
  18. I don't remember seeing this thread but I can see why some would oppose it. We are all here to help others (as well as learn) and setting the bar (even a low one) may hinder others from finding useful information, or from teaching others. In the end I guess I wouldn't be against adding some CLAD level question.
  19. According to the the help, the "/c" adds the following "Carries out the command specified by string and then terminates". If I run cmd, then type in "Copy ab.txt cd.txt" it will perform the copy and the command prompt window will remain open. By performing a "cmd /c" it will cause the "cmd.exe" to close after the operation is complete.
  20. If you perform the steps needed to print to PDF without using LabVIEW do you get the same result? If so then this is a problem with the program doing the conversion, not with LabVIEW which is just calling the conversion to happen. There are multiple print to PDF programs, I would try one that works on its own before trying to automate it with LabVIEW.
  21. Oh I just thought of one. Lets say I have three case structures aligned vertically. Why is there not a "Minimum Size" or "Maximum Size" like there is for front panel objects? I have these 3 case structures, all doing similar work in parallel, and I want them to align left, space equally vertically, and have the same size. The only satisfying thing to do, is to set one the way I like then copy and paste it so all 3 are the same size.
  22. Very neat but my CTRL+W is reserved for something else that I've been using and loving, which may one day become part of LabVIEW. https://decibel.ni.com/content/docs/DOC-29452
  23. I've done that on the front panel. Say I have a hidden tab that I programatically change, but when it changes I want the controls that are between tabs to be in the same location so the change from one tab to the next looks seamless. Never on a BD.
  24. You don't triple click? I do it quite often. I colleagues of mine once told me a story of trying to help his neighbor get some files off of a USB stick. This guy didn't have a lot of experience with computers. So he went over and plugged in the stick and showed him the files and how to navigate Windows Explorer. He then said you right click the file an choose Copy. The neighbor quickly snapped back "Oh I don't right click, is there another way?". He told me this story as if it was the guys religious preference or something that it would go against his moral code to right click. Accept the new doctrine of triple click my friend.
  25. The other alternative I noticed (thanks Darren for looking into this by the way) is to change the OpenG VI Window Title name to be "Wait (ms) OpenG". It appears Quick Drop will find the VI name, but use the Window Title as the text to find it if one exists. This is why "Wait (ms)" for OpenG comes up, but the primitive "Wait (ms)" (with no .vi file extension because it is a primitive)
×
×
  • Create New...

Important Information

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