-
Posts
3,432 -
Joined
-
Last visited
-
Days Won
289
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by hooovahh
-
Dynamically generate installer UpgradeCode
hooovahh replied to Benjamin R's topic in LabVIEW General
I don't know of a utility for doing this. But the Upgrade Code can be found as a string property in the .lvproj file. Just open it is a text editor and you can search for it. I think it is called the "MSI_upgradeCode". -
Yeah I like getting crafty with a 2D picture control. The demo I showed earlier has 4. One at the bottom for the progress of editing, one for the arrows that are representing the go to statements, and one for each column of the green or red checks. The columns can be click with one column toggling, and the other slides over another window for editing the step limits. The go to arrow representation has the ability to drag and drop to move around where it will go to. Clicking a step highlights it with a different color, and there can be all kinds of nested arrows which all get assigned unique colors, and does its best to not over lap while becoming larger if needed.
-
Oh a couple of others I forgot about. Here is a Circular Graph Demo which allowed for selecting signals from a list, allowed for different scales, multiple windows, coloring, current value, pause, resume and a few other random features. And over on Reddit someone asked for an Android like interface with sliding menus.
-
I have a few UIs and UXs that I'm proud of, but I don't know of many that I can share readily. Tabs are fine, but don't scale well. Often times when I want a tab I will end up replacing it with something else. An easy change that scales better is a single column listbox which inserts a VI into a subpanel instead. The listbox and subpanel can be in their own pane, and set to fit to the pane, and scale with it. I posted a few UI tools over the years like the Ribbon Interface toolkit, that can contribute to a nice UI. I have a sequence editor with drag and drop, looping, conditionals, go to's, that works pretty well. And I have used a set of images at the bottom as a tab replacement that shows icons along a process of setting things up. There is a back and forward button on the bottom that goes to the next step, or you can click on the icons at the bottom and it goes to that step in the process. This is a 2D picture control that can be updated easily with a new VI to be inserted in the subpanel. This sequence runs on real-time so no TestStand, and has other normal shortcut features like copy, paste, delete, save, and select all. It also has file extensions so double clicking on a file opens it in the editor, and dragging and dropping a file to this window will work, prompting for unsaved changes if there are any.
-
Outlook doesn't have a Stop button, so I say a LabVIEW program shouldn't need one. Close yes, Stop no. The only reason I can see is for touch screens that are harder to navigate. Close can go through all the clean up stuff that it should. The main application does also have a toolbar with File >> Exit. In my config dialogs, I do have an Apply, Okay, and Cancel buttons and allow for a close which operates the same way as the Cancel would. I feel like the majority of configuration dialogs I've seen behave similarly, some with only Save and Cancel.
-
Also does anyone else think there isn't enough color choices for the amount of data types there are? Maybe it is my eyes getting worst, or maybe it is the higher resolution monitors, and higher DPI, but I think at a glance the difference between some wire colors is too close. I'm sure another color or visual style would be needed, but a purple (or basically any other color) is going to look pretty similar to others. Someone pointed me to this video on Rebar from GDevCon, and while this is the now defunct NXG, I couldn't help but notice how similar the style is for a string. Even more similar would be having this next to an array of string, a DVR of a string, or a set and map of a string. I can tell the difference but maybe not very quickly. Maybe I should try turning on the Alternative Block Diagram Data Type Colors from the config and see if it is any better.
-
That reminds me of a joke. "Polygamy is wrong! It is either multiamory, or polyphilia, but mixing Greek and Latin roots is wrong." It sure sounds like several complications, likely adding to the work NI needs to do if LabVIEW is ever going to have official proper unicode.
-
Well the real answer is probably going to depend on what works for you. The setup you have now is obviously easier than re-writing it to use a DMA FIFO. But if you are worried about precision of the waveform you can put a scope on it and look at some transitions to see how different the waveform is from the expected output. Years ago I did develop some code that allows for a table of times and voltages to be sent to the FPGA, and then in my case it would linear interpolate between the points, sending out the data timed by the FPGA. The code could be improved a lot, but it might give you an idea of what is possible, and how to do some timing of a table output. My situation was with a non repeating waveform that could be many hours long. I initially tried doing this with DAQmx hardware, adding to a finite buffer as time went on. But this became difficult to manage, and there were memory issues. My wave also was discrete points, and not a sine wave.
-
Yeah when using the FPGA and CAN neither NI-CAN or XNet is used. It feels a bit bolted on and an after thought. When I did it back in the day there was just a DMA stream set up that sent frames down to the FPGA to be sent, and another stream for frames to be send to the host. I'm guessing there is logic that could have been put down on the FPGA but at the time dealing with a stream of bytes from hardware seemed difficult and so all the parsing and conversion was done on the host and the FPGA was just there to send raw frames. Not sure if things have changed since the 8.x era with FPGA CAN devices. Oh and even if you aren't using XNet you should install some of the tools. They have database parsing stuff that doesn't require XNet hardware that makes things easier to visualize and understand when it comes to frames and signal conversions.
-
labview web publish need help!
hooovahh replied to 홍두진's topic in Remote Control, Monitoring and the Internet
There are several options for controlling a VI from a web browser mentioned in this post here: In addition to that NI has the G Web Development Software toolkit which I haven't tried but it is basically the WebVI functionality that was in NXG before development of that stopped. -
Well the good news is you can actually find J1939 support in NI hardware and software. I've never used it but the NI-XNet hardware specifically supports J1939 under the Application Protocol selection when creating the database for the API to use. And there are several resources for CANOpen such as this document. That being said that specific document might not be very helpful in your case since it uses the NI-Industrial Communications toolkit which I don't think supports FPGA CAN devices. I do remember seeing some G based CAN Open stuff from NI before that toolkit was made and it is possible you could adapt it to work in your setup. Here appears to be a G based J1939 protocol that might shows an FPGA example. But using CAN on an FPGA device adds another layer of difficulty. I'd almost just suggest you buy a USB 8502 which is an XNet device, then seeing if you can get that to work with the latest NI tools. Maybe even using a trial of a toolkit if needed. Then if you get that working sniff the bus and figure out how to replicate the functions you are trying to get to work.
-
At one point I heard NXG called "Better LabVIEW" and someone else suggested the real name was "Beta LabVIEW". I've also heard of it called to as LabVIEW 20xx, or Current Gen (CG). I like Lab-deja-VIEW.
-
Oh yeah I forgot about miles of wire. I've (finally) started saying no to it. Most would be some weird exotic thing someone thought we needed. They'd buy a ton of it, use it once, then it would sit on the wire rack for years taking up space. People would quit, or get promoted, programs moved on, and then someone tries to clean the lab and can't figure out why we would ever have it. I've got some CAT-5 and CAT-5E spools, since IT has only uses CAT-6A now. I've been very critical of IT here for making bad decisions, then implementing them in the worst way. But I had to send out personal "thank you" messages to the IT team, and management involved in the last purge. They sent out an email telling people where it would be, and what hours they would be there to help people. They dedicated an IT guy for 6 hours a day for 3 days just to take down asset tags of things people wanted, and to help with hard drive removal. Adding to my electronics pile at home is fine, but I specifically called out the reduction in e-waste for their efforts, especially since we have a land fill very close buy that it would be thrown into.
-
Yeah most of the tech I got was old, with a few exceptions. The FPGA card I have was last supported in LabVIEW 2016. So not sure what I'll be doing with it. I mean I can program it and have it just do its thing, but can't really connect to any LabVIEW project. PSU and frequency generator is probably from the 80s, but works fine for hobby stuff. The GPUs had SLI and could be combined, but even combined had less graphical capability than most integrated graphics do today. Some of the stuff needed to be fixed. I had to rewire a mouse, and I had to fix the feet on some office chairs.
-
Well some of it I gave away for favors. I had no use for the engine hoist but I had a friend of mine that was thrilled to have it, and in returned helped rescue me with a tow when I was stranded. A good amount of it is in my office at the moment. I saw overhead office lights go to people putting them in their garage. And there was some larger desk furniture and electronic benches I said no to because I didn't have the space.
-
It seems like one of the perks of working for large companies, is that regularly hardware is just cleaned out. 5S is a process that I've seen a couple of companies follow. One of the steps basically means that old junk needs to get tagged, and if no one claims it after so long, then it should be disposed of since it is taking up valuable space. As a result I've been at companies that just want stuff gone and don't care how. This got me wondering, what is some of the best loot you've gotten from work for free? Here are some of my favorites. Solidering hardware (Irons, solider, solider suckers) PSUs (20V, 4A, analog controls) Frequency generator (analog controls) Engine hoist (brand new) Laptops (newest one I got was a 10th gen I5) Cell phones (newest one I got was a Samsung S7) Rack mount routers Rack mount PCs PC components (fans, power supplies, cases) Old NI Hardware (USB hardware, old FPGA card) Monitors and TVs Cables (USB, Power, Monitor) Hard drives (often on the smaller side, largest was 1TB) GPUs (very old ones) Keyboards and mice Voltage adapters (as if I needed more) That last one was fun. We bought 10 USB serializes that had 8 RS-232 on each. Well each of our 10 devices came with a voltage adapter for the US. But it also came with 4 other voltage adapters for other countries hard mounted. They all accepted 110-220VAC at 50/60hz but had the wrong plug for US. So I took all 40 extra for other small projects.
-
I like resizable UIs, and that often means custom code to handle some of the operations in the UI. One such feature I like is a vertical array, that shows more rows, as the window size gets larger and can show more. I've used code like this a few times and figured the community might like it too. When doing this there are times when I want a user to be able to add more rows, and some times that it needs to either be static, or set by some other outside variable. So in this demo is also a way to link a vertical scrollbar that is a separate control, and have it move, and get set, so that it looks like it is linked to the array control. But this will coerce, and not allow more rows to be seen, than the number of elements in the array. At the moment this only supports 1D arrays, and only in the vertical direction. Code is saved in 2020. Array Resize and Scrollbar Link.zip
-
- 3
-
-
-
Separating "installer" development from code development
hooovahh replied to infinitenothing's topic in Source Code Control
VMs to the rescue! Well sorta. I'll create a VM set up the OS the what I want, then take a snapshot. Then copy over an installer with none of those things selected and install it. Then run all the features of my program I can think of. If it is broken, or things seem missing I go back and try to make a new installer with something checked that I think it needs based on what didn't work. The VM allows me to roll back to a snapshot of when nothing was installed quickly. But yeah for the most part, this only reduces the run-time engine size a little, and while I don't like unnecessary services, spending the time to reduce them doesn't feel worth it to me. In the past I'd spend time reducing it and making it as small as possible. And then I'd use some feature of something like the Math Kernel, make a new build, and now things aren't working and I need to go back and update the installer. When previously I'd just not worry about it and include everything. -
Is it ever conceivable that there will be more than two Queues to monitor? If so then the last one would scale up better. That being said it isn't the one I'd find myself using, just because the other two are much more readable. I'd probably go with the first one. Swap values is pretty handy when you actually need to swap two values. Here you aren't really using one of the values. From a memory or speed perspective I bet you can't measure the small amount of difference (if any) that is taking place.
-
Yup, thanks for reporting. I saw the post but didn't look close enough at it.
-
Create pictures with different opacity levels
hooovahh replied to GregPayne's topic in Machine Vision and Imaging
I've seen this a few times, and you probably already realize the simple solution is to just Select All >> Copy >> New VI >> Paste. This loses the VI description and icon which can be manually added. Still I agree it is weird that some VIs are harder to back save for some reason. -
Create pictures with different opacity levels
hooovahh replied to GregPayne's topic in Machine Vision and Imaging
Super cool! I've often used a very hacky solution for this usually involving lots of extra .Net and PictureBox functions, then saving to memory buffers, that I'd then said to LabVIEW to get pushed to a 2D Picture control. This makes this much, much easier. And I was surprised it handled multiple transparent images on top of each other well. I'd love to see this on the palette maybe even along with some other PNG related functions like: Add LV Image to PNG Data.vi and PNG Data to LV Image.vi Both of these found under C:\Program Files (x86)\National Instruments\LabVIEW 2020\vi.lib\wsapi\VIs\ Add Create Mask By Alpha.vi Found here but might not be as important if Draw Flattened Blended gets added C:\Program Files (x86)\National Instruments\LabVIEW 2020\vi.lib\picture\picture.llb\Create Mask By Alpha.vi Expose the compression input to the LV Image to PNG Data -
The config I attached already takes care of this. You can make several profiles and the one I attached only gets applied if "LabVIEW.exe" is the active program. So when you are using something other than LabVIEW, the mouse acts like it normally does. I tried other methods of detecting when LabVIEW is active, and it was less reliable. I tried doing something like attaching to some system core process LabVIEW uses. One odd side effect I noticed, is if you open a help menu from within LabVIEW, then press the back button on the mouse, it doesn't work like it should. Still I'm not using back in the help documentation much. It does have a capture for tilting the mouse wheel and it might be possible to have it pan using that too.
-
Oh this is a great idea and something I was able to do pretty quickly in XMouse Control. So previously I had mine configured so that the middle click would invoke <CTRL><Space> so that I could middle click and bring up the quick drop. I also have it so that if you press the back and forward buttons on your mouse, it will cycle through the cases of an event structure, or case structure. But this was a pretty easy thing to change the middle mouse to perform a pan instead. Attached is my config but it personally won't be helpful for me since I am a non-auto tool guy, and it requires auto-tool to be on. Just go download the X Mouse utility and use this config which should only get enabled when LabVIEW.exe is the active application. And if you are interested in the Middle click invoking QuickDrop go checkout the config I posted on the dark side. EDIT: Oh another thing I noticed is this only works if you use the middle click when on blank space. If you try to pan on an object it will copy it. LabVIEW Pan and Case Turn.xmbcs
-
Network Streams Simplification Demos / 64 Bit Calling DLL Example
hooovahh replied to hooovahh's topic in Code In-Development
Right well this set of code wraps Network Streams, adding synchronous two way communication, and uses VIMs to allow for the Request and Response data types to be typed and more easily used. It also adds some periodic reconnect, and connection status feature that I find helpful. Maybe XNodes would be better but VIMs are just so much easier to make, especially for a first release. It is true that Network Streams are themselves wrappers around TCP technology. And for those that don't know the intricacies of TCP this is a pretty easy way to setup two way communication between two pieces of LabVIEW code running on the same machine, on a different machine, or on different targets, just by specifying a Host and Client identifier, and specifying the Client IP address (if on a remote system). I'm certain that any example I give for Network Streams, you could make better with TCP. (EDIT: This comment wasn't meant to be sarcastic in anyway. I haven't done any real TCP development and am sure you are more familiar with it than me)