Jump to content

Tomi Maila

Members
  • Posts

    849
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by Tomi Maila

  1. Works at least in LabVIEW 8.5 with the limitation that the references need to be of same class hierarchy. One cannot close a VI ref and and a control ref together but array of front panel objects can be closed at one go.
  2. QUOTE(hviewlabs @ Nov 28 2007, 10:27 PM) Oh. I thought it will only work in all supported platforms but not in a build app unless you used labview runtime instead of the executable. Well I guess Rolf is right here. He's such a guru in these things
  3. QUOTE(hviewlabs @ Nov 28 2007, 10:10 PM) Surely you can check it out. Add XNodeWizardMode=True into your LabVIEW.ini file, then right click on the XNode on a block diagram and select Generated Code from the what ever menu there is for debugging XNodes. Then simply check out the call specs... Tomi
  4. The online user list now seems to show almost all users reading always the same article. Although it could in theory be possible, it's statistically impossible. So I guess there is a bug...
  5. The online user list now seems to show almost all users reading always the same article. Although it could in theory be possible, it's statistically impossible. So I guess there is a bug...
  6. Hi, Have you ever wanted to know what's the pointer to a LabVIEW buffer? Well in LabVIEW 8.5 you can actually find it out. LabVIEW 8.5 supports calling a shared library with constant arguments. As the arguments passed to the shared library are considered constant, LabVIEW reuses an existing data buffer for the shared library call. It doesn't make a copy of the data to pass the copy to the shared library instead of the original data. This allows reading and modifying wires parallel to the shared library. If these wires share buffer with a constant, then the value of the constant can be read modified as well. So what's the trick? Well, to understand the trick we first need to understand how LabVIEW data is stored into memory. LabVIEW uses two kind of memory models for data. For fixed sized data such as numeric types, booleans, clusters and references LabVIEW users pointers to the data to pass the data around. Each buffer is therefore referenced with a pointer to the data. For variable sized data such as strings and arrays and apparently also LabVIEW classes, LabVIEW uses handles (pointers to pointers) to the data. I think this is enough of introduction. I don't want to spoil all the fun. Take a look by yourself how to find out the pointer to fixed sized buffers and the handle to variable sized buffers.
  7. Hi, Have you ever wanted to know what's the pointer to a LabVIEW buffer? Well in LabVIEW 8.5 you can actually find it out. LabVIEW 8.5 supports calling a shared library with constant arguments. As the arguments passed to the shared library are considered constant, LabVIEW reuses an existing data buffer for the shared library call. It doesn't make a copy of the data to pass the copy to the shared library instead of the original data. This allows reading and modifying wires parallel to the shared library. If these wires share buffer with a constant, then the value of the constant can be read modified as well. So what's the trick? Well, to understand the trick we first need to understand how LabVIEW data is stored into memory. LabVIEW uses two kind of memory models for data. For fixed sized data such as numeric types, booleans, clusters and references LabVIEW users pointers to the data to pass the data around. Each buffer is therefore referenced with a pointer to the data. For variable sized data such as strings and arrays and apparently also LabVIEW classes, LabVIEW uses handles (pointers to pointers) to the data. I think this is enough of introduction. I don't want to spoil all the fun. Take a look by yourself how to find out the pointer to fixed sized buffers and the handle to variable sized buffers.
  8. QUOTE(hviewlabs @ Nov 21 2007, 02:30 AM) Also interestingly LAVA interprets initstr.vi as a web address for a domain at US Virgin Islands...
  9. QUOTE(hviewlabs @ Nov 21 2007, 02:30 AM) Also interestingly LAVA interprets initstr.vi as a web address for a domain at US Virgin Islands...
  10. QUOTE(ned @ Nov 20 2007, 10:17 PM) Because if for loop is never executed (N=0), the reference is not passed trough the loop, but a default NULL reference is returned at the other end of the loop instead. Tomi
  11. QUOTE(ned @ Nov 20 2007, 10:17 PM) Because if for loop is never executed (N=0), the reference is not passed trough the loop, but a default NULL reference is returned at the other end of the loop instead. Tomi
  12. When wiring error into a loop, the most common use case is to have a shift register to pass the error from iteration to iteration. Hence shift registers should be the default terminal type for error clusters when wired to a loop.
  13. See the blog related to this as well.
  14. The link you provided didn't work. But I guess you are referring to Finnish folk music band Loituma (Wikipedia, MySpace) and especially the song Leva's Polka. Or some remix or video based on it like this or this. http://video.google.com/videoplay?docid=1738842995641330414
  15. QUOTE(neB @ Nov 17 2007, 05:34 PM) Actually, I've the same problem. Somebody is constantly yelling Girly man in my head. I even tried to use ethanol solvent to get rid of this infection but I think it's getting worse when I'm tired. Girly Man.... aaarrgghh!
  16. This is a song about Benny LAVA... I though I should post it and not only because of the name.
  17. Aitor, I'll reply to you privately. Sorry folks...
  18. Perhaps NI didn't pay much enough Tomi
  19. Hi Aitor, Thanks for the great scripting tool! As you already know I've written a similar tool for my private use. However your tool is more polished so I'm not wanting to push my tool forward to compete with your tool but rather help you to include the best of both worlds. I'd like to see a few features added into your tool. 1) Regular expression filtering of class hierarchy while typing into a search field (see Draw Hierarchy.vi and Filter Hierarchy.vi in my tool) 2) Regular expression filtering of methods and properties while typing into a search field (See Filter Items.vi in my tool) 3) Ability to automatically "reverse engineer" classes, properties and methods for new LabVIEW versions when the tool is started in a LabVIEW version for which there is not yet configuration files generated (I've not implemented this so...) You can also make the start-up faster by using VIs as configuration files. You know how to script a VI with certain default values on the front panel indicators. Such VIs can function as very fast and extensible configuration files. Simply either 1) open the VI and read the front panel controls or 2) open a reference to the VI and call it dynamically. The latter method is faster but requires a little more work if connector pane is changed as old connector pane formats need to be supported. Cheers, Tomi
  20. QUOTE(tcplomp @ Nov 10 2007, 09:46 PM) Did you already download it?
  21. The current LAVA statistics are pretty awesome! However I guess LAVA will have even brighter future! Keep up with the good work Mike
  22. QUOTE(tcplomp @ Nov 10 2007, 09:46 PM) It's 3.30 a.m. and I arrived from a bar a little more than half an hour ago. I'm feeling a little bit too drunk and eating some night snack. So what else would I do but to help you out from this horrible trouble... So here you go. The icon is not proper but the XNode functions the way you would expect. So perhaps you can fix the icon by yourself Tomi
  23. QUOTE(tcplomp @ Nov 10 2007, 05:50 PM) No, it's very simple even without XNode manager if you just no what you are doing. Are you asking me to do this? Tomi
×
×
  • Create New...

Important Information

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