-
Posts
3,183 -
Joined
-
Last visited
-
Days Won
202
Content Type
Profiles
Forums
Downloads
Gallery
Posts posted by Aristos Queue
-
-
What you're seeing is the same behavior that all LV controls have. It is why some controls have "Synchronous Display" as an option. The synch display option forces LV to wait until the UI is updated for every write to the indicator. Normal operation will update the UI on a much slower schedule -- so you see big jumps when writing to a Numeric control inside a loop, for example.
If you update your XControl using the Value property instead of using the FPTerminal, I'm 90% certain that you'll get the synchronous display behavior.
-
1
-
-
To control what is visible, set the access scope. The dynamic dispatch VIs can be set to protected, which is the only other meaningful scope for dyn disp -- it doesn't make sense to have a dynamic dispatch method that cannot be overridden by children.
There is a valid use case for creating a wrapper class that has a reduced set of methods that wraps an inner class. This is done a lot in various programming languages to create a read-only version of the class, so the wrapper class only has methods for reading values, not writing them. You would then hide the core class inside the packed project library (making it private to the library) and expose your wrapper class only.
-
-
-
Reinstallation isn't going to help unless you've been modifying the VIs that are part of your installation. No, this is far more likely to be something you need to deal with in your code and/or app build setup.
Try adding instructions to always include the panel. If that works, you can either keep that solution or look at your VI and figure out why the panel is required. You might post the block diagram here... someone here might spot the key node.
-
Have you turned on Automatic Error Handling both in Tools >> Options and on all VIs in your project? You can quickly write a "get all VIs in memory, turn on automatic error handling" VI to do that rather than doing it by hand. That will make an error go off if there is some place where the errors are being dropped.
If you have access to the Desktop Trace Toolkit, that will add an entry to the log file every time an error is generated at the point of original error generation, assuming you have debugging enabled on the VIs.
-
Use of the UI thread is not enough to trigger the loading of the panel.Maybe it's related to using the UI thread in the DLL call?
-
No seriously, I don't see what feedback nodes bring to the table versus shift registers when you need to use the output outside of a loop.
1) In pipelining, particularly common in FPGA, they're critical. Of course, those are configured for feedforward, not feedback.
2) I'm told (and anecdotally find to be true) that electrical engineers are used to reading the feedback notation in other schematics. They read them much easier than the shift registers.
-
Ah, but XControls don't have the potential to corrupt your VI if you do them wrong. There's a big difference between "complex" -- which is a reason to put a good UI on something but not a reason to never release it -- and "flakey around the edges" -- which is a reason to keep it in house.I usually buy the "it is too complicated for the masses" argument until I try using XControls. Compared to those XNodes are a walk in the park.
-
Yes, those events will always come in the predictable order, as asbo postulated.
asbo: Never forget that "for" can be abused as "while" in a lot of C-like languages. Read it as "for(;imstuck;)" where imstuck is true. Semicolons would be needed in C++, but there are other similar languages where you wouldn't need them.
-
- Popular Post
- Popular Post
iEmilie: I haven't really been worried about the "hate LV" blog post. I kind of enjoy reading it. In my eyes, LabVIEW seems to come out pretty well in that thread. I figure there's always going to be someone angry at us, so the existence of the thread itself doesn't bother me. What I like is that in all of the pro-LV comments, whether from NI or not, people reply with calmness, reasonableness and helpful advice. I've read that thread a few times over the years and thought perhaps we should start an advertising campaign: "LabVIEW: Using it will make you a nicer person." :-)
Various folks have said that reading that post was deflating. It shouldn't be. My list of "things I hate about LabVIEW" would be waaaaay more than just 10 things, and I guarantee some of them are far blacker marks against us than anything jshoer mentions. I cannot believe how incredibly stupid we have been over the years on some features (yes, I include features I created and now regret), and how long it is taking us to get certain upgrades. But I don't view these deficiencies as reasons to be depressed. LabVIEW is a growing language, adapting over 25 years to the changing technologies and customer bases. Doing what no one has ever done before sometimes means you get a less than optimal solution and you have to fix it up in round 2. Do we have more we can do? Yes. And we continue to work to improve. But the backbone of LabVIEW remains strong. Graphics is the only manageable way to express parallelism, and parallelism is the name of the game in the future. Have you guys seen the parallel keywords that Microsoft has been introducing into the other languages lately? Everything needs to be parallel, but procedural programming is a dead end. There is only so far you can go with compiler analysis of procedural code and manual control of mutexes before you hit a wall and flat out say, "No, I need a system that is designed for multicore from the outset." Between our parallel expression on the desktop and our ability to target FPGAs, I'm thrilled about LV's future, and all the complaining is just the list of tasks we need to be tackling on our way there.
When I started at NI, on my first day, I saw a sign by Jeff K's desk: "You know you have built a successful product when people use it for things you never intended and criticize you for being short sighted." The "hate LV" post is just one of the sign posts of our success.
-
5
-
VIs that are built into an executable have their front panels deleted by default unless they are the top level VI, a dialog VI, or have a linked control reference on the block diagram. The Median.vi does not meet those requirements, so its block diagram is stripped out of the EXE to make a smaller EXE. You're doing something in your application to try to open the front panel of this VI -- perhaps getting a control reference or using the Set Control Value method? Whatever it is, you need to modify your AppBuilder spec to tell that VI to keep its front panel.
-
If you like the Enable terminal, there's a feature coming in LV 2012 to solve the tunnel output consistency problem. Take a look at the Upgrade Notes when you get your upgrade later this year.
-
Hey... at least you guys have gotten me to the point of admitting that XNodes even exist. Time was I would have accused you of hallucinations and swamp gas reflecting the light of Venus for believing in XNodes.
lordexod: The XNode tech is reserved to National Instruments for a long list of reasons, not the least of which is that it requires some significant contortions to avoid the traps and pitfalls of working with them. XNodes invoke G code to do their work. There are various operations that are not stable to do while LV is doing certain operations (loading a VI is not always safe, for example, depending on what else LV is doing at the time). As a matter of fact, XNodes have been mostly abandoned by NI for further development ourselves because of their issues. They work great for some things, but poorly (or crashily) for others, and it is very hard to tell in advance whether a given use case will turn out to be the former or the latter. We'd like to have a more complete "G written in G" solution, one that we could release to customers, but XNodes aren't it.
-
Yes. I do.
No, I won't share.
-
You say that this subVI acquires data from an instrument. Do the other functions also acquire data from an instrument? Is it possible that this subVI is somehow badly written in that it is locking the instrument so that the others cannot access the data? Is it possibly closing the instrument reference that the others are using? I would check all of the "error out" terminals for all your VIs and see if any of them are returning an error that would be useful... your exported functions probably aren't returning the error to the caller, but on their block diagrams, add a Simple Error Handler.vi that collects all the errors generated on that diagram and see if any of them report when you build the DLL.
You know that removing this subVI makes the rest of the exported functions work correctly. That's an odd workaround to have discovered, which implies to me that something happened that made you test this theory. What did you observe that made you suspect this subVI might be contributing to the problem? Knowing that observation might help the rest of us suggest how this subVI is interacting with the rest of your application.
-
Nah... that one just helps you stop smoking. :-)Or maybe The Captain's LV Patch would be better-
1
-
-
After I finished crying, I added an autotest to LV's nightly test suite just to make sure if anyone did try to change the private fields of those two classes in a way that they no longer coincidentally lined up, we'd see the crash on our end long before release. So far, so good. No one has felt the need to refactor strings. I still don't recommend it, which is why I was waiting to see if the "copy a constant with the right font" workaround would suffice before mentioning this dark alchemy. :-)AQ has mellowed since then and would probably not say the same thing today, but it still is important to be aware of the implications of using type cast.-
1
-
-
Why are you still using VITs for dynamic instantiation of VIs? Of course its slow! Instantiating a new VI from VIT creates a wholly independent copy of *the entire VI*. Contrast this with creating a new clone of a reentrant VI, where we only clone the dataspace and the front panel if and only if its open. We never clone the block diagram, just draw it in two separate windows.
Replicating VITs was a practice that should have largely stopped in LV 8.0 unless you are scripting new VIs as part of an actual "create me a brand new VI in the editor" tool. There are some edge cases when you're actually scripting new controls, but most UIs don't use that approach because it only works in the full dev environment, not the runtime environment. So for UI work, stick with reentrant clones.
This is why going from .VIT to .VI has an impact -- instead of copying the VIT to create a new VI, you're just cloning the reentrant VI.
-
- Popular Post
- Popular Post
Has anyone ever given any thought to the LAVA community creating one single patch for the LabVIEW development environment? In other words, LabVIEW ships from National Instruments and then after installing LabVIEW, a user would then install the Community Patch. What would/could the patch do?
1. Install any number of useful tools in one go: right click framework, quick drop short cuts
2. Add useful OpenG tools
3. Update the configuration file to set settings different from the defaults that LV offers
4. Change the default custom probes
5. Fix bugs that the community has prioritized
There are fewer developers here at National Instruments than exist in the wider LV community, and so it is not surprising that there are many great tools developed by members of the community that significantly improve the LabVIEW user experience. Identifying all the tools that I'd like to pull down and install -- or that I would recommend another user pull down and install -- is hard. Some of them are available as packages, but many others are just one-off VIs posted to a forum, like an improved custom probe. I might read the post one day, think, "Great! Let me grab that." So I copy it into my current version of LV. But I don't remember to copy it into LV on my other computers, and when it comes time to upgrade, I may not remember to copy that VI into the upgrade.
Ideally such things would be flowing back to National Instruments and we in LV R&D would be over time adding them to LabVIEW's own installer. But there are often licensing problems with us picking up VIs from forums, and even when there aren't, the other priorities required to get a release ready often trump pulling such tidbits in. That got me thinking...
Imagine if one of the significant LV users who has a high trust/recognition among the community were to say, "I have created one VI package that installs everything free that I consider valuable to upgrade my LabVIEW experience." That makes it easy for a user to just install one thing and get a set of reviewed improvements all at once. I suspect a lot of tools that otherwise languish in the hands of a few expert users would suddenly have a much wider adoption, and a lot of forgotten niceties would enjoy a renewal. Plus it would give LV R&D one package to review each release, instead of relying on someone happening to have tripped over an interesting post in the forums, which might help get these tools into LabVIEW's own installer.
I have no idea if this has been thought about before, no idea how workable this would be, but it doesn't necessarily have to be all that organized. A lone developer deciding to maintain such a package and add to it whenever he/she saw something interesting on the forums would be valuable. An ad hoc group might form around him/her to advise on "posts that should go into <Your Name Here>'s LV Patch".
Thoughts?
-
3
-
Unfortunately, not everything you can do in the editor has been exposed through scripting, and this is one of the holes. Depending upon what you're trying to script, it might work to have a template VI that has a constant on it that already has the font style you want... instead of creating a new constant and trying to set the font, copy the constant from your template and just set the value. Obviously that won't work if you're trying to set an arbitrary font, but if you have a specific font you want to be able to do, it works.
-
- Popular Post
- Popular Post
I still can't get them to stop, and I work there. I get occasional offers to purchase LabVIEW or take a training course if I go look something up for a user. :-)
-
3
-
"Everyone expects it, so this year, we'll prank them really good... we won't have one!"
"Yeah, that'll really wind them up for 2013!"
-
We changed the EXE format specifically to deal with the "multiple VIs have the same file name" issue. Turn the compatibility mode off, fix your paths, and then the system should start working for you. One function you need to know about is "Application Directory" -- it's a node in the palettes. In the development environment, this is the same directory as your project (assuming you're in one) and in the built-EXE, this is the same as your EXE. This makes writing dynamic load code a lot easier. If you want to dynamically load VIs that are part of your EXE, just calculate them as relative paths from your top-level VI. The same relative paths will be maintained inside the EXE as you have before you build the EXE.
Packed Project Library Exported Class Methods?
in Object-Oriented Programming
Posted