-
Posts
3,446 -
Joined
-
Last visited
-
Days Won
293
Content Type
Profiles
Forums
Downloads
Gallery
Posts posted by hooovahh
-
-
9 hours ago, Vandy_Gan said:
Hi David Koch,
thanks for your reply, I have a question that how to make the glyphs to place center in cells?
David has posted to LAVA 1 time, and it was 10 years ago. I don't think he's going to respond. You cannot control the position of the glyph with the built in function. The only solution I know of is a pretty time consuming one, where you put a transparent picture control on top of the tree, and then you can do whatever you want. I've applied this to a sequence editor. The left and right are tree controls (as noticed by the collapsing icon). The tree on the right has two centered columns. This has two picture controls that position themselves to look like it is part of the tree. There's a decent amount of work on the back end to handle things like window resizing, collapsing the tree, and other random behaviors. But the end result is something I have full control of.
Also in a related topic here is an idea exchange to support larger glyphs. There is a linked example on how to fake it in a fairly convincing way.
-
This still works.
This is still a MCLB not a tree. I'm unsure if the feature exists for trees.
-
You've probably already found some stuff but here is an old thread that talks a bit about it. It is an unofficial feature that NI seemingly never finished, or never documented.
INI keys can help you, or I think you can copy a MCLB that has the feature enabled. Another solution I've done in the past is to have a 2D picture box on top of the control, then having that be an image that you can set. This gets way more complicated with scrolling, and resizing windows, but it allows you to have glyphs that aren't the default size which is also what I wanted.
-
11 hours ago, ShaunR said:
Just be aware that the Caption property is often used for translations.
Oh yes great point. I've always been in the world of English applications, but a Label would probably be a safer choice. I'm just thinking about situations where at runtime connecting to things could be changed for a more dynamic UI. It has been done before different ways of course.
-
On 9/30/2025 at 8:44 AM, Rolf Kalbermatter said:
I assume that support for the old *.cdf NI-Max format for installation onto pre LabVIEW 2020 RT targets is not a topic anymore and you guys rather expect *.ipk files?
Maybe add a download feed to the OpenG Github project for this? 🙂
I've been manually installing it myself. I copy the liblvzlib.so to the controller, then I SSH in with Putty, and sudo copy to /usr/local/lib/liblvzlib.so, then restart the controller. I was happy using the old CDF format custom install for as long as I could.
-
Very neat looking. I like the concept. I do think people might not like the unprotected nature of being able to read and write to tags from anywhere. Imagine I have a sensor that keeps flipping back to NaN. I suspect trouble shooting where the tag is getting written from, or debugging this type of wireless program can be a challenge. If tools are made for tracking this type of thing it might make it easier.
This also would make something like dynamic UIs easier. You can have a set of controls that can be inserted into subpanels, and then to read/write data you just need the controls named something specific. Oh that gets me thinking, can the tag be based on the Caption of the control not the label? That way it can change at runtime.
Also I think the video should have been a youtube link. Watching such a long gif is a weird experience without pause, or playback controls.
-
I am also rocking version 4.2.0b1-1 for the same reasons.
-
1
-
-
As mentioned in the crosspost, NI has a special license for allowing XNode creation through the Project Explorer. To get around this I developed the XNode Editor.
-
4 hours ago, ShaunR said:
Just download VIPM today and activate a 30day trial to try out VIPC files.
Pretty sure it is a pro feature. You may be able to use VIPC files in the Community version but I'm sure you can't create them without the pro version. Maybe it's changed since I last looked though.
Here is the Community Edition announcement. https://www.jki.net/blog/news/vipm-2020-community-edition
-
On 8/28/2025 at 9:07 AM, ShaunR said:
If you are just looking at toolkits installed with the JKI Package Manager then the full version can create super packages where you can create a list of toolkits to install. you could then walk from PC to PC with that package and install them with the package manager.
This feature is the VI Package Configuration (VIPC) and is free and included in the community version of VIPM. The VIPC can contain a list of packages to install, or it can contain the list, along with the actual packages. This is quite handy since you can have a single VIPC file that you double click, and all those packages and their dependencies are installed offline (NIPM should take notes).
-
I sent Michael a message.
-
I posted a demo set of VIs here which can pop up a window, centered on whatever monitor the mouse is on. There's also settings to have the window center on the mouse wherever it is, but saying on the same monitor. And yes this uses the All Screens, Working Area properties.
-
1
-
-
15 hours ago, Mads said:
You should have used Grok...
It was equally as bad as Gemini in my work with Task Scheduler. It is far too much to paste in here but I created a Task with the command line, and provided it then said: This all works but I'd like to turn off the feature Stop the task if it runs longer than 3 days, and turn off the Start the task only if computer is on AC Power. What command line switches do I need for this?
Gemini made up switches, and I had to keep pasting back the error I got over and over with Google eventually telling me it isn't possible.
I just hit the limit on free Grok messages and it had similar behavior. I'd run the command it gave with a paragraph explaining how it should work. I'd reply back with the error. It would tell me why the error existed and what command to use. That would generate a new error which I would tell it, and it would do the same. Over and over until I can't chat with it anymore.
I use AI primarily for writing assistance, but coding or technical assistance on the surface looks great. But in practice is lacking.
-
I am unaware of a time limit on editing your own posts. You are welcome to use the report to moderator to make fixes. I realize small things are just easier to ignore than making a report.
-
6 minutes ago, ShaunR said:
Do you see the unresponsiveness in dadreamer's example?
The newest version of LabVIEW I have installed is 2022 Q3. I had 2024, but my main project was a huge slow down in development so I rolled back. I think I have some circular library dependencies, that need to get resolved. But still same code, way slower. In 2022 Q3 I opened the example here and it locked up LabVIEW for about 60 seconds. But once opened creating a constant was also on the order of 1 or 2 seconds. QuickDrop on create controls on a node (CTRL+D) takes about 8 seconds, undo from this operation takes about 6. Basically any drop, wire, or delete operation is 1 to 2 seconds. Very painful. If you gave this to NI they'd likely say you should refactor the VI so it has smaller chunks instead of one big VI. But the point is I've seen this type of behavior to a lesser extent on lots of code.
-
22 minutes ago, ShaunR said:
There was a time when on some machines the editing operations would result in long busy cursors of the order of 10-20 secs - especially after LabVIEW 2011. Not necessarily XNodes either (although XNodes were the suspect). I don't think anyone ever got to the bottom of it and I don't think NI could replicate it.
It has gotten worst in later versions of LabVIEW. I certainly think the code influences this laggy, unresponsiveness, but the same code seems to be worst the later I go.
-
In the past I have used the IMAQ drivers for getting the image, which on its own does not require any additional runtime license. It is one of those lesser known secrets that acquiring and saving the image is free, but any of the useful tools have a development, and deployment license associated with it. I've also had mild success with leveraging VLC. Here is the library I used in the past, and here is another one I haven't used but looks promising. With these you can have a live stream of a camera as long as VLC can talk to it, and then pretty easily save snapshots.
EDIT: The NI software for getting images through IMAQ for free is called "NI Vision Common Resources". This LAVA thread is where I first learned about it.
-
2
-
-
38 minutes ago, dadreamer said:
In addition to the LV native method, there are options with .NET and command prompt: Get Recently Modified Files.
If you are in a Windows environment, and have many files to process, this is probably going to be faster. There probably are several factors in determining when doing this in .NET is the better solution.
-
3 hours ago, Neil Pate said:
Done some simple testing.
On a directory containing 838 files it took 60 ms.
That's how I'd do it. Then combine that with the Foreign Key Sort from my Array package, putting the Time Stamps into the Keys, then paths into the Arrays, and it will sort the paths from oldest to newest. Reverse the array and index at 0, or use Delete From Array to get the last element, which would be the newest file.
-
1
-
-
3 hours ago, ShaunR said:
Have you played with scripting event prototypes and handlers from JSON strings?
No but that is a great suggestion to think about for future improvements. At the moment I could do the reverse though. Given the Request/Reply type defs, generate the JSON strings describing the prototypes. Then replacing the Network Streams with HTTP, or TCP could mean other applications could more easily control these remote systems.
-
Yeah I tried making it as elegant as possible, but as you said there are limitations, especially with data type propagation. I was hoping to use XNodes, or VIMs to help with this, but in practice it just made things overly difficult. I do occasionally get variant to data conversion issues, if say the prototype of a request changes, but it didn't get updated on the remote system. But since I only work in LabVIEW, and since I control the release of all the builds, it is fairly manageable. Sometimes to avoid this I will make a new event entirely, to not break backwards compatibility with older systems, or I may write version mutation code, but this has performance hits that I'd rather not have. Like you said, not always elegant.
-
12 minutes ago, ShaunR said:
IC. so you have created a cloning mechanism of User Events - reconstruct pre-defined User Event primitives locally with the data sent over the stream?
Yes. The transport mechanism could have been anything, and as I mentioned I probably should have gone with pure TCP but it was the quickest way to get it working.
-
3 hours ago, ShaunR said:
Yes. It is the "send user event" that I'm having difficulty with. User events are always local and require a prototype so how do you serialise a user event to send it over a stream?
Variants and type defs. There is a type def for the request, and a type def for the reply, along with the 3 VIs for performing the request, converting the request, and sending the response. All generated with scripting along with the case to handle it. Because all User Events are the same data type, they can be registered in an array at once, like a publisher/subscriber model. Very useful for debugging since a single location can register for all events and you can see what the traffic is. There is a state in a state machine for receiving each request for work to be done, and in there is the scripted VI for handling the conversion from variant back to the type def, and then type def back to variant for the reply.
When you perform a remote request, instead of sending the user event to the Power Supply actor, it gets sent to the Network Streams actor. This will get the User Event, then send the data as a network stream, along with some other house keeping data to the remote system. The remote system has its Network Stream actor running and will get it, then it will pull out the data, and send the User Event, to its own Power Supply actor. That actor will do work, then send a user event back as the reply. The remote Network Stream actor gets this, then sends the data back to the host using a Network Stream. Now my local Network Stream actor gets it, and generates the user event as the reply. The reason for the complicated nature, is it makes using it very simple.
-
3 hours ago, ShaunR said:
How does this work?
I have a network stream actor (not NI's actor but whatever) that sits and handles the back and forth. When you want work to happen like "Set PSU Output" you can state which instance you are asking it to (because the actor is reentrant), and which network location you want. The same VI is called, and can send the user event to the local instance, or will send a user event to the Network Stream loop, which will send the request for a user event to be ran on the remote system, and then reverse it to send the reply back if there is one. I like the flexibility of having the "Set PSU Output" being the same VI I call if I am running locally, or sending the request to be done remotely. So when I talked about running a sequence, it is the same VIs called, just having its destination settings set appropriately.

Greetings and Salutations
in LAVA Lounge
Posted
My HA install is running on bare metal computer, which is an 8th gen I3 embedded PC, 8GB of RAM 250GB SSD. Here is the install instructions. I wanted a bit more performance, and a company was throwing these computers away. Besides this can give me more head room to do other things if I ever want to.
There's even an option to install HA on windows, but it mentions it in a VM specifically.Nevermind, this is explaining how to have it on Windows, which involves having a Linux VM.