Jump to content

hooovahh

Moderators
  • Posts

    3,363
  • Joined

  • Last visited

  • Days Won

    268

hooovahh last won the day on March 14

hooovahh had the most liked content!

About hooovahh

Profile Information

  • Gender
    Male
  • Location
    Detroit MI

Contact Methods

LabVIEW Information

  • Version
    LabVIEW 2020
  • Since
    2004

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

hooovahh's Achievements

  1. Use the File Dialog express VI on the File IO >> Advanced palette. You can configure this to prompt the user for a file path then wire that into the open.
  2. I went to dig up my fast ping utility for Windows, but I see you were already in that thread. As for this thread. I rarely use the parallel for loop but when I do it is a more simple set of code. It has those caveats Shaun mentioned and I typically use it is very small cases, and where the number of iterations typically are small. In the past I did use it for accessing N serial ports in parallel to talk to N different devices sending the same series of commands and waiting for all of them to give the responses. And I have used it for cases when I want to spin up N of the same actor. Here there is other communications protocols to handle talking between processes. And again these are usually limited to some hardware resource like two DMMs that are independent. If it needs to be very scalable, and have large numbers of instances a parallel for loop probably isn't what you want.
  3. This is very true. But LabVIEW does a decent job with resizing panes with splitters. It isn't always an ideal solution but if you can known the supported UI layouts you can have subpanels, in subpanels to support what you want. Here is a demo I made. Just run the VI and resize the window. The youtube video isn't nearly as smooth. But this design only supports 20 images high, and 20 images wide. I should have probably implemented some kind of minimum size, and then have a scrollbar appear.
  4. I emailed the site admin to see if there is something broken. Welcome back.
  5. I use User Events as the transport mechanism between asynchronous processes. As a result I wish there were a feature where there was an event generated when a reference goes invalid. I made an Idea on the Idea Exchange here. Similarly the work around is to have a timeout where the reference is checked to be invalid. A better solution is to send a stop command as some kind of global user event, or in your case enqueue. But as you've seen there can be edge cases where things stop unexpectedly and I just want all the running children to go through their cleanup process. Stopping on the error, or invalid user event reference, is a fairly simple way to do that.
  6. Is there a reason you are doing this, instead of having a type def'd cluster? Then you can use the Bundle/Unbundle by name to get and set values within a single wire? Then probing is easier, and adding or updating data types can be done by updating that one cluster. Typically Variant Attributes are used in places where an architecture wants to abstract away some transport layer that can't be known at runtime. In your case we know the data type of all the individual elements. If you were doing some kind of flatten to a Variant, then sending over TCP, you'd want some standard way to unwrap everything once it got back. I've also seen it used where a single User Event handles many different events, by using the Variant as the data type. Then each specific User Event will have a Variant to Data to convert back to whatever that specific event wants. There isn't anything wrong with what you are doing, I'm just unsure if it is necessary.
  7. Have you tried uninstalling, then reinstalling the toolkit? Are the VIs in the vi.lib and just not on the palette?
  8. There's also a little known feature in the top method where you can right click the Wait On Asynchronous Call and can set a timeout. This will then wait some amount of time for the VI to finish and will generate an error if it isn't completed yet. There are better ways to handle knowing when the VI is done, but it is good for a quick and dirty solution to wait a few ms for it to finish, and if it isn't done, go service something like the UI and come back again later. I submitted that as an idea on the Idea Exchange, then AQ said why it was a bad idea. Only for years later it to be implemented anyway.
  9. XNode enthusiast here. I've never really minded the fact that the LUT needs to be generated on first run but maybe I'm using these CRCs often many times in a call so the first one being on the slow side doesn't bother me. If you did go down the XNode route, the Poly used could still be specified at edit time. It could be a dialog prompt, similar to something like the Set Cluster Size on the Array to Cluster function where the user specifies something like the Poly, and reflective settings used. Then the code generates the LUT and uses that. You could have it update the icon of the XNode to show the Poly and reflective settings used too. You could still have an option of specifying the value at run-time, which would then need to be generated on first call. Again I personally don't think I'd go this route, but if you do you can check out my presentation here. It references this XNode Editor I made.
  10. They said Unicode support was coming in the next 1 to 2 releases, two years ago. Priorities change, challenges happen, acquisitions go through, so I get that NI hasn't been as timely with their roadmap as they had hoped. Sarcasm aside I don't actually want to be too critical of NI and missing road map targets. They didn't have to publish it at all. I'm grateful they did publish it even if it is just to give an idea of what things they want to work on. Oh but I did look up the 2023 roadmap, and unicode support was changed to "Future Development".
  11. If you want to just plop a window inside another one you can do that using some Windows API calls. Here is an example I made putting notepad on the front panel of a VI. https://forums.ni.com/t5/LabVIEW/How-to-run-an-exe-as-a-window-inside-a-VI/m-p/3113729#M893102 Also there isn't any DAQmx runtime license cost. If you built your application then the EXE runs without anything extra. There is a NI Vision runtime license cost so maybe that is what you are thinking? If you have a camera stream you can also view it by using VLC. VLC can view a camera stream, and then you can use an ActiveX container to get VLC on your front panel. USB cameras are a bit trickier but if you can get the stream to work in VLC, you can get it to work in LabVIEW. Here is an example of that. https://forums.ni.com/t5/Example-Code/VLC-scripting-in-LabVIEW/ta-p/3515450
  12. Bots won't procrastinate as well as I can. It truly is what makes me human.
  13. Here is some info on what changes there are in the new release. https://www.ni.com/docs/en-US/bundle/upgrading-labview/page/labview-2024q1-changes.html This is not the major release of the year so there isn't too much to talk about. As for fixing the build issue I wouldn't hold your breath. I've already seen someone mention that the build for an lvlibp failed with error 1502. Cannot save a bad VI without its block diagram. But turning on debugging allowed it to build properly.
  14. Thanks Shaun but this doesn't quite work like I wanted. Maybe I didn't explain it well I can be long winded. Using your method this is what I get: In this case I actually want the somewhat blue looking color since that is what the boolean is in. The method suggested on NI's forums seems to work but is clunky but works. It hides the array element, label, caption, and index, then gets the image of the array control. Then gets the color of the pixel at the center of the image. With the element hidden it just shows the background which is the color blue in this case. As for why, I also ended up answering that on the NI forums. It is because I wanted to improve the web controlling VI code I uploaded a while ago here. Boolean Get Image Testing_sr.vi
  15. Crosspost Okay so I have a front panel, with some boolean controls on it. I want to get the image of that control, and I want to put that image on top of other images. The background color of the other images is controllable, so if I use the Get Image invoke node method on the control reference, and just set the background color to what the background is of the pane that the boolean is on, then it is convincing enough. But I am having issues when these boolean controls are in other controls. If it is in a Cluster for instance I need to get the image of the background of the cluster. Clusters can be transparent so I need to keep getting the owner controls until I find one that isn't transparent. For bonus points I can also use the Create Mask VI to mask out a color, and I can use the color of the background element to get an even cleaner image of my boolean control. This is all a pain but doable. The issue I have is when my boolean is in an array. My main goal is to just get the boolean control, with the alpha or specific colors masked out. But when it comes to having booleans in arrays that is an issue. Any suggestions? Attached is a demo of what I mean. Set the enum then run it. For the scalar we just get the pane color. For clusters we get the color, then if it is transparent, keep going up until we find a color, or find the pane. But how do I handle the array? Thanks. Boolean Get Image Testing.vi
×
×
  • Create New...

Important Information

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