-
Posts
3,431 -
Joined
-
Last visited
-
Days Won
289
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by hooovahh
-
The easiest way I've done this in the past is to have a transparent path control that takes up the whole front panel which is hidden. Then you look for the value change event on that path control which will indicate a drop took place. Here is a post with an example of this working. If you are looking to open a file type when double clicked in explorer, then you will need a second EXE to get called, and it can decide what to do. Like maybe open another instance, or detect if it is already running, and open it in that. I know this post is old but it is what I used to understand what was needed. Since then I've started using InnoSetup installers, and you can setup file association there as part of the install process.
-
Yeah it sure would be great if NI fixed that bug wouldn't it? Back in May I did open a service request with NI for a build issue related to VIMs. After some back and forth they did assign a bug number to it 2401803. The cause was a VIM with a VIM inside it, but no classes involved. Attached is the project which demonstrates the issue. For some reason the project takes a while to open, then once opened the VI runs fine, but the build to an EXE fails saying it isn't in memory. NI's advice was to use Disconnect Type Defs in the build. But in larger applications that causes different issues. NI has said this will be likely be fixed in 2024 Q1. When I filed that bug I told NI that I had users of my VIMs that would complain and that they should fix this. Because if I'm complaining, they are going to get others having the same issue. Also NI just posted LabVIEW 2023 Q3 Patch 1, which fixes a bug 2296528 related to VIMs. I haven't tested it yet but it is possible this fixes this build issue. Filter VIM Issue VI Not In Memory (1).zip
-
Okay new release 3.1.0.16 should fix the issues I mentioned.
-
Also great feedback thanks. Sorry about the type def input breaking. That was sort of needed. Previously you could wire any numeric to it and it would accept it as a VIM input, but I really did want to only allow that enum. So I made it a type def, then forced it inside to only allow that. I knew that would break things, but it is a simple fix and if I were someone like NI I could make the mutation automatic in previous versions. The filter not accepting references is not intentional. I added some performance improvement stuff, and I see how that this relies on the Search Sorted 1D Array, but some data types aren't supported in the sort function. In these cases the right answer is to not use that function, and fall back into the less performant method. Thanks for catching this it will be in the next update. Control references do work for filtering Scalar data types, just not filtering a 1D with a 1D. The filter only accepting an I32 is intentional, but yes I could see that any numeric should be accepted. I thought it would just coerce to the right type, just like the primitive index does. I'll remove the strict I32 input requirement.
-
Pretty weird right? I just noticed that recently. I've moved on to using the newer version with the Sort option, since it is better than the original. But I opened some legacy stuff and saw it was rotated like that. I had to relink some VIMs, and the whole purpose of leaving the old method was to preserve existing functionality, but now that is lost. Not sure how that happened. Thanks for letting me know. That being said I'm not sure I want to push out an update for such a small change. I'll see if I have any other Array stuff in my candidates folder and push out some other changes along with that in the future.
-
You're right that there are a few ways to do this. Having a separate library of Common Controls is one way to go about it. In this you only need to have Type Defs that are shared between two or more libraries. For me the overwhelming majority of the time a Type Def is only needed in one library. If I have a set of VIs that does some kind of thing and needs a cluster or enum I'll save it as a type def to go along with the library. Any library that needs to use that type def, is going to probably need it because it will be a constant, or a control, that calls a VI from the first library. And so in that case it doesn't really matter that the second library depends on the first because of the control, because it is going to call the subVI so that dependency requirement is going to be there anyway. So I'll just have one type def control in the first library. Sometimes I'll make separate Type Defs, that contain the same data in different libraries, but in the future they might not. So one library may have an enum with "Yes, No, Cancel" and named "User Response.ctl". Even though another library has the need for the same set of enum values, I might make one separate control for each library because while they contain the same data, they aren't directly related. This could also work for you. Even though the two libraries have the same data Waveform data, they could be decoupled. Wiring will then do an automatic coercion dot which is nice, but could lead to issues in some small cases.
-
Change is scary. Especially when it is forced on you. I guess that summarizes how I feel about this whole situation.
-
That would be the right attitude to have as a manager. But that also reduces my value to the company. Now instead of doing work, I have a guy, that has to hire a guy to get the work done. My value in the company stays very high assuming NI and LabVIEW are the accepted tools used.
-
My problem with this, is that for some tasks if I do it in LabVIEW it might take a week. And if I were asked to do that task it in any other language I'd ask for a year. Sure I can do anything my boss asks, but if I tell him I need a year to do something, all the sudden my value at the company is much less then it was earlier when LabVIEW was an option. There's reuse, work flows, templates, example projects, and tools already done if I work in LabVIEW and NI that I'd have to relearn, or recreate.
-
Can't I just retire 10 years earlier than expected? Or maybe I can become a manager that just tells people what to do, instead of doing the work.
-
Strange Development Environment Errors with RT Target
hooovahh replied to DTaylor's topic in LabVIEW General
When I saw your post I figured it would be an RT error I see all the time. Nope, never seen anything like that. I'd also suggest a reinstall of the RT module, and possibly of LabVIEW itself. -
I get where Shaun is coming from here. There are some behaviors in LabVIEW that either weren't well defined, or up for interpretation on how it should work. Then a new fix would come to LabVIEW where all of the sudden those corner cases weren't the same. Events are one of those things I've also thought might change, but I'm glad to hear that likely isn't the case. I remember a presentation by Jack Dunaway years ago at NI Week I think that talked about some of the event behaviors, and how it has changed in some releases. This was in the 2012 era.
-
This video appears to be missing. But otherwise lots of good resources.
-
I think the oldest I have is 7.0 or 7.1 in physical form. These boxes of old stuff just look cool to me so I have them displayed in my office along with a few LabVIEW books, and boxes of older software like Windows 3.1. I do wish I had more just to display and show off.
-
There are complications with this. On Windows the first thing it does it figure out where the controls are, and creates the template HTML pages and web code. Then when it runs it can send the values of controls to the HTML pages, or send images of what the controls look like. If I'm remembering right, on embedded devices, some of the needed functions won't work. I think the get an image of a control doesn't work, even if the embedded UI is enabled. And Writing to PNG using compression doesn't work. But the good news is the values of controls can still be sent and received. At some point I did have this working on devices with an embedded UI as a test and showed it here It looks like some controls are in image mode, so maybe I'm wrong about it not working. The code as it is today is already a bit of a mess, when it comes to examples and demoing the features it has. So that code was an even bigger hack. I do wish I had time to work on this because it is one of the cooler projects I've worked on, and the easiest 80% of the project is done. But the last 20% would take a bunch of work. So it sorta sits here in this sorta works, but needs some attention, stage.
- 137 replies
-
First I'll mention that snippets aren't working recently on LAVA. I messaged the admin but haven't heard anything. Second I'm wondering why this can't be a native LabVIEW feature. Has anyone made an idea on the Idea Exchange for probes to work on parallel For loops, where the P terminals can constant fold to a 1? I'm also not sure why this works only in the enabled structure. I wouldn't expect the structure to be a non-reentrant type function. And it doesn't, when I put a wait in there as a test.
-
Windows system GDI object limit problem
hooovahh replied to xiongxinwei's topic in Application Design & Architecture
Okay it looks like you'll get an Out of Memory error on building. https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019No1SAE&l=en-US -
Windows system GDI object limit problem
hooovahh replied to xiongxinwei's topic in Application Design & Architecture
I have seen others on the forums state that this can be an issue. What are the symptoms of hitting this limit? Should I just set this value on all development machines just in case? -
There is an offline help option, but I would much prefer to the more straight forward CHM files. https://forums.ni.com/t5/LabVIEW/Offline-Help-window-in-LabVIEW-2022/m-p/4251163#M1236962 NI's website has many deficiencies that have been well known for years. So the effort to force things to go online, is crazy to me. Maybe trying to drive up network traffic to look better for investors or buyers?
-
I'll ping the site admin.
-
Sorry I can't get them to work either. Sometimes LAVA's servers will do weird things with compression or resizing, and in the process it might strip out the meta data that is the VI file. Once we noticed this, these settings were turned off but it is possible these were back when that was an issue.
-
CAN Communication in LABVIEW
hooovahh replied to dipanwita's topic in Remote Control, Monitoring and the Internet
NI-XNet is newer then NI-CAN. I believe its first release supported LabVIEW 2010 or so. It really is a superior API with much more flexible features. I cover some of the differences in NI-CAN and NI-XNet in Part 3 of my CAN blog. Part 6 goes into XNet in more detail. Newer CAN hardware support either API, but some old stuff does need to use NI-CAN. One thing you didn't mention was if you installed NI-CAN 17 after installing LabVIEW or not. During the install it will detect versions of LabVIEW installed and add support for it. So if you install NI-CAN then LabVIEW, you won't see the supporting palettes. You can just run the NI-CAN installer again and it will add any missing components. This will add Example Finder examples from the Help >> Find Examples menu, and add the NI-CAN palette, I believe it goes under the Measurement I/O on the functions palette, but I don't have it installed at the moment. -
Double word HEX number in ASCII string problem
hooovahh replied to Lucky--Luka's topic in LabVIEW General
More information is needed. Is this a response to an ISO 15765 request? UDS, KWP2000, etc. Or is this periodically broadcasted frames? If it is UDS or something similar you'll need a CDD file to define how it should interpret the response. If it is a periodic message then a DBC file will define the structure of the data being sent, and what IDs belong to what data. I cover the Signal API and how bits can be interpreted in Part 5 of my CAN blog, and I talk about multi frame messaging in Part 8. If you are trying to reverse the CAN bus without this information, then I suspect you will have a very difficult time. There is an IEEE Float Data Type in the XNet Database editor which uses 4 bytes so it is possible this will do what you want. I'd make a database using the XNet Database editor specifying where in the frame the bits are and try using the conversion API with it. EDIT: Also I think Shaun is incorrect. 2 8 D5 0 0 0 0 B 5 70 I'm unsure what the 2 means but 8 means there are 8 bytes to read and the 8 bytes are D5 00 00 00 00 0B 05 70. 8 bytes is a common payload length for CAN. Double Edit: What are your expected values? I ran them through the IEEE conversion and tried Big/Little Endian but ended up with really large numbers both negative and positive. -
Write code that detects if the error is thrown, and if it is then close and reconnect. Honestly that shouldn't happen under normal use so I'm wondering if a reference is closed or lost somehow.
-
[CR] Data Matrix Generator v1.0 LV2020
hooovahh replied to David Boyd's topic in Code Repository (Uncertified)
I know right? I was looking for a 2D barcode generator not that long ago which is why I mentioned Darin's post that I found, which I presumed you had seen. I searched the forums a bunch and the only other code I found would send it to a website to get generated. I also saw a semi-hacky method using a Zebra printer API, but I never found that NI post either.