Jump to content

hooovahh

Moderators
  • Posts

    3,364
  • Joined

  • Last visited

  • Days Won

    268

Everything posted by hooovahh

  1. I do have a very quick and dirty solution that I wrote many years ago without consulting the internet or what would be the right way to do this. That being said I just ran it on the Stack Overflow test and for: Robert, and Amy Robertson my code had a 44% match, and for Robert and Richard it had a 0% match. That being said if you can come up with anything better or more standard that would probably be better than this. Compare String Confidence.vi
  2. If the snap does work, but returns the exact same image, you might be able to detect a locked up camera by comparing the last two images and seeing that they are exactly the same. At that point I don't know if closing all references, and re-initing would help or not. I've had some success with this, depending on what caused the lock up. I've had other cameras that really seem defective and the only fix was to power off and on the camera. For that something like a relay could be used to kill the power and turn it back on. But in general I suggest using high quality ethernet based cameras because of some of these issues that I've seen in the past. Still ethernet cameras aren't without issues. I've seen firewall or antivirus software cause camera images to not acquire properly.
  3. I know this is quite old, but I recently sent a link to this when answering a question, and I realized I have added a couple of opcodes over the years that people might be interested in. Also Jing as a video recorder is old and I've been moving my videos away from it and hosting on Youtube instead. I've downloaded the two videos Norm and rehosted them there. Image Move.zip
  4. Is there a good reason that this is password protected? Other than it probably is a single call library node to some internal function?
  5. Historically support is something I've said NI and Microsoft both have been done well. Lately I'm having a harder time lately singing NI's praises for support. NI used to have all new hires work support first before going to other departments. This in general made support a bit green, and you'd need to escalate a couple of times before getting what you needed. My career started as a co-op and so being thrown into the deep end of the pool certainly helped me learn quickly. And I liked the idea of NI people all starting out having to quickly get familiar with NI's offerings, and being close to the customer issues. I suspect NI has gotten feedback over the years that this model for support didn't work well and I heard NI was changing this policy.
  6. Oh sorry, here is a VI I made a while ago for generating a GUID. It might need to be modified for the pattern you need. Generate GUID.vi
  7. Yes I too am only familiar with reading these file types but not writing. NI has the ECU Measurement and Calibration Toolkit which is a CAN toolkit for performing XCP and CCP functions. One of which is flashing new software to an ECU over CAN. In there is the start of some code that reads SREC and HEX files. Some of the file types were had poor performance and I made an attempt at improving them. This code can be found in the CAN File IO package here. But I admit that is a whole lot of code to install for some simple file reading stuff so I've attached the important bits here. This appears to support S0 through S9 types, and some kind of HEX files that start with a ":". Looking at the code I still see some room for improvement. Hooovahh SREC and HEX.zip
  8. 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".
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. 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.
  24. 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
  25. 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.
×
×
  • Create New...

Important Information

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