-
Posts
1,986 -
Joined
-
Last visited
-
Days Won
183
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by drjdpowell
-
Some comments after having a look at the code: 1) Is there value in the Execution System stuff? I’ve never discovered much reason to mess with Execution Systems. It would be simpler (and possibly less overall overhead) to have a single clone pool for all Async stuff, created on first use as in the Actor Framework or "Messenger Libraryâ€. 2) Consider combining the “Action†and “Function†classes (and thus making Actions children of “Taskâ€). This reduces the number of wire types and would make Tasks fully recursive (so a Batch can contain other Batches). 3) Do you really need the Variant Parameter stuff in “Actionâ€, given that children of Action can just add whatever parameters they want in private data? — James
-
Keeping track of licenses of OpenG components
drjdpowell replied to Mellroth's topic in OpenG General Discussions
“Credit� What has this to do with credit? This is legalese meant to disclaim liability. Plus copyright, but I’m unsure of the value of copyright on something you’ve licensed without restriction. Perhaps we could drop the requirement to reproduce the copyright, and just retain the disclaimer (see below): -
Have a look at the “Async Action.lvlib:Action.lvclass†in my "Messenger Library†on the Tools Network, as well as child classes such as “Time Delayed Messageâ€, “Async File Dialogâ€, or “Address Watchdogâ€. This is my OO implementation of what your describing, where child classes override “Execute.viâ€, and optionally “Setup.vi†(run before Async Call). However, though I have 10 asynchronous actions built into “Messenger Libraryâ€, and can create new ones easily, I don’t generally make application-specific ones. Instead, I use either an on-diagram “helper†loop, or have an independent subactor. The pattern could be described as a “Manager†(a event- and message-handling loop with state data) and a number of “Workers†(specialized “helper†loops or subactors). Asynchronous actions are still very worthwhile pursuing, though, as things like a delayed enqueue or an asynchronous dialog box are very valuable. —James BTW> The “Producer-Consumer†QMH templates produced by NI are to be avoided, for all sorts of reasons. I just did a talk on this for the CSLUG user group on Monday; there is a recording of it in their Google+ account (I mentioned the issue of state-sharing between the loops, but my primary criticism was the horrifying potential for race conditions).
-
Keeping track of licenses of OpenG components
drjdpowell replied to Mellroth's topic in OpenG General Discussions
The OpenG Toolkit VIPM package has this license: It needs updating (it's missing "2012 James David Powell" ), but it covers the entire toolkit. Stick that in a TXT file in your installer and your done. -
Keeping track of licenses of OpenG components
drjdpowell replied to Mellroth's topic in OpenG General Discussions
For example, ever modified a VI.lib VI and used it in a commercial work? Did you read and follow the "NI Release License Agreement" all the way to "Attachment A — Source Code License� Commercial licenses aren’t a bureaucratic burden only to the extent you ignore them. Perhaps the BSD license used by OpenG is too short and readable. We need it to be long and unintelligible. -
Keeping track of licenses of OpenG components
drjdpowell replied to Mellroth's topic in OpenG General Discussions
An earlier (rather long) discussion about licensing. Are you sure you understand your commercial licenses? The big difference about the BSD license from most licenses is that a human can actually quickly understand it. Ever read the licenses you agreed to in using LabVIEW? -
Keeping track of licenses of OpenG components
drjdpowell replied to Mellroth's topic in OpenG General Discussions
Anybody know any lawyers? As a copyright holder of some BSD-liscenced packages (and one or two OpenG VIs) I couldn’t care less if you include me of my license in your binaries. But I am interested in not being sued. And not being a lawyer I can only use an established license in order to feel some confidence that I am protected. From a common-sense point of view, it seem silly to think that one could be liable to a third party because a second party passed on your software in their product without passing on your legal disclaimer. But I’m not a lawyer, and all licenses seem to have that. -
I have a “Reply†method that always sends a message, since someone else is presumably waiting for it. The reply is an error message if there is an error in, rather than the usual reply message.
-
The usual pattern that I (and others, i think) have used is analogous to a file directory: directories contain a mix of different files and also subdirectories (which can contain sub subdirectories, etc., etc.). The classes are a Parent, with children File and Directory, the later containing an array of Parent. File can have subclasses for different file types, and there can also be different subclasses of Directory. It’s a recursive tree-like structure But your hierarchy of different levels is not the same as a tree-like structure. Steps can only contain an array of Functions, and so on. You would have a common parent (which defines your “Execute†or “Do†main method) but you need each subclass to contain an array of a specific other subclass. So Step contains an array of Functions. But, are you sure you need a specific hierarchy like this? Seems more work and unnecessarily rigid. Why can’t the User call a Function inside another Function? If a User wants to execute an Action as part of a Group, why require the extra work of creating a Step with one Action?
-
The new Flush Events primitive may also work for dialogs. I’ve used this behavior with Event Structures inside Custom Probes, where events can be generated even though the probe is only actually executing periodically. XControls work similarly, I think.
-
mathscript Dynamically calling Mathscript .m file in EXE
drjdpowell replied to drjdpowell's topic in Calling External Code
The workflow/setup is: — User has my EXE and takes calibration data with it (no LabVIEW Dev environment installed) — imports data into “Eigenvector Solo†3rd-party App to do advanced calibration — “Eigenvector Solo†outputs a .m file — my EXE imports and runs .m file on new data. It’s the last step that I think can’t be done, because the EXE can’t dynamically load and compile a .m file. -
I have a request to make an EXE be able to dynamically call a .m file with Mathscript. The .m file is User supplied and not knowable at build time. But my understanding is that the EXE compiles in the Mathscript, so this cannot work, and that other dynamic mathscript options (such as “evalâ€) do not work in an EXE. Has anyone encountered this issue before?
-
grandchild calling grandparent method
drjdpowell replied to John Lokanis's topic in Object-Oriented Programming
Not sure I understand. You wouldn’t be changing any functionality; your DD methods for grandparent and parent would behave as before, but you would have the ability to call the static method directly from the child. -
grandchild calling grandparent method
drjdpowell replied to John Lokanis's topic in Object-Oriented Programming
As ak_nz says, the “to more…†methods don’t change the objects. What you need to do is move the grandparent functionality into a separate static method, and call that method from all three DD methods (grandparent, parent and child). That way, the child can replace the parent functionality while still calling the grandparent code. -
Parallel process significantly slower in runtime then in Development
drjdpowell replied to Wim's topic in LabVIEW General
What’s the point of anti-virus software that a virus can get around by renaming itself “labview.exe�- 32 replies
-
- 2
-
-
- development env
- runtime
-
(and 1 more)
Tagged with:
-
3d picture Text not showing up under semi-transparent object
drjdpowell replied to drjdpowell's topic in User Interface
I’m afraid I only bang away at things till they work. I believe I found it worked much better with the text as opaque (and in the opaque bin) inside a transparent object (in transparent bin). -
Question about the JKI state machine
drjdpowell replied to eberaud's topic in Application Design & Architecture
Or you could just use Find/Replace... -
Question about the JKI state machine
drjdpowell replied to eberaud's topic in Application Design & Architecture
I used the JKI template for almost every project for about 5 years, till about a year ago when I replaced it with a new design that is very heavily influenced by it. The new design retains the strings. -
Try renaming the class (this deletes the class mutation history, which might be causing your problem).
- 9 replies
-
- class private data
- opening time
-
(and 1 more)
Tagged with:
-
SIMPLE Object Based Framework
drjdpowell replied to SebastienM's topic in Object-Oriented Programming
They use Text-Variant messages rather than Command Pattern, but the OP could also consider looking at: — mje’s Message Pump, which uses “Actorâ€-like objects that can be inherited from to add functionality. — my Messenger Library, which includes a Sample Project that redoes the NI “Continuous Measurement and Logging†example. It uses OOP extensively in the Message-passing objects, though the “Actors†are actually just single VIs. Don’t know if this counts as an “object-based frameworkâ€, as one isn’t required to do much OOP in actually using it. -
I suspect there might be a concern that making “public†data members easier would discourage more careful design. There are reasons why heavy use of “properties†might be thought of as a “code smellâ€. Of course, a significant fraction of the time one really does just need a direct read/write access to a data member, and a “public†declaration would certainly be convenient.
-
SIMPLE Object Based Framework
drjdpowell replied to SebastienM's topic in Object-Oriented Programming
Also cross-posted here, where AQ responds. -
I got a PM from the user, Venkatesh.C.S, and we found that the issue was only on LabVIEW 2014. No problem on 2013. I'm not working with 2014 yet so I haven’t followed up. Venkatesh consulted NI tech support, I think, but they hadn’t yet responded.
-
3d picture Text not showing up under semi-transparent object
drjdpowell replied to drjdpowell's topic in User Interface
Yes, that was it. Thanks. Though it’s still amazing the amount of blind trial and error it takes to use the 3D picture control.