Jump to content

Val Brown

Members
  • Posts

    754
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Val Brown

  1. QUOTE(Michael_Aivaliotis @ Apr 30 2007, 06:56 PM)

    What you are describing is a complete application on its own. This can definitely be encapsulated into a single VI. If you need to use this functionality then you can call the VI and embed it into a subpanel. Why not?

    I disagree with this. If you ever have to use multiple property nodes to manipulate and customize a UI then this is a good candidate for an XControl. You are not manipulating hardware, you are manipulating UI components based on user interaction or possibly interlock conditions. Based on my experience, manipulating UI's to handle users takes 10 times as long as hardware communication. XControls allow you to reuse this UI code.

    Having stated all this, it does not mean you cannot implement hardware interaction or tasks that take a little too long inside of an XControl. You can always launch parallel process VI's for that. This requires a little more effort on the part of the programmer and is not a built-in feature of XControls.

    Actually I'm NOT describing the complete application -- just the UI for the complete application. Now perhaps that's part of my problem -- I'm (still) separating UI from the process(es) that the UI controls. So, from that perspective, I see the possibility of an array of just such UIs (perhaps implemented as an XControl) with the user being able to select a "look and feel" by selecting amongst that array. This aspect of the question relates to another thread I started about "skinnable" interfaces. Could an array of XControls be used to "skin" different interfaces? Seems to be that, theoretically at least, that could/should be possible.

    And, yes, I have used property nodes to customize a UI -- MULTIPLE property nodes to dynamically customize a very, very complex UI. My understanding, and I may be incorrect, is that an XControl might be able to handle the messaging aspect of just such a UI. Then it would be a reusable component for interfacing to CD-ROMs, or DVD players or....could even be used as a front end to an array of instruments (if that metaphor made sense to the relevant users) with the message that "Fast Foward" button has been pressed being, perhaps mapped to "Use Next Available Instrument" or whatever.

    I'll be very interested in your presentation but may not be at NI Week. Hopefully it will (ultimately) be made available via LAVA.

    QUOTE(crelf @ Apr 30 2007, 06:58 PM)

    Here's some buttons you might be interested in...

    Thanks! These are useable in a distro?

  2. QUOTE(Michael_Aivaliotis @ Apr 30 2007, 06:26 PM)

    I don't mind working on this however, the requirements seem vague. The XControl should not actually implement any of the functionality. XControls are mainly for UI implementations. What does your data type look like? You say you want Stop, Play, Pause but you can just as easily assemble this inside a cluster typedef. One thing I can think of is a Play button that after being pressed, turns into a pause button. I think we should work on the requirements first:
    • Must have a Play, Pause, FF, FR button
    • Play button will turn to pause after it's pressed.
    • Should have a progress indicator. Progress of what? Music?

    Yes, I agree -- and here's where I see the lack of value in using an XControl. Now I'm NOT asking for all of the following functionality to be included in a posted example but I am pointing out that -- at least as far as I'm concerned -- there are shortcomings to using XControls in real world, deployed code. I HOPE the shortcomings that I see relate more to my own lack of familiarity with XControls but....

    So if I talk about my own project -- as an example -- my code currently has:

    Record, Play, Stop, Eject/Load, Fast Forward, Fast Rewind, GoToBeginning, GoToEnd, Nudge buttons (left and right to advance/reverse one "step" in the file), Progress Bar of file being played (with drageable indicator of current position that, when dragged, sets current position to its position), Elapsed Time, Remaining Time.

    Now to me it's easier to architect all of that NOT in an XControl but in the "older" architectures of QMH or ESM using typedefs, etc.

  3. QUOTE(Aristos Queue @ Apr 29 2007, 06:03 PM)

    So, Adam, your post made me go do some digging across the Internet. An interesting dig. ;-) You said this raised a new critique of OOP, so I had to go see what was up.

    Yes, "newly discovered" not JUST discovered for the first time.

    But, unlike two of the other comments posted in this thread, I think this is a fundamental issue that both reveals the power of OOP but also points out how it can become an exercise in OOPs!

    Language is context bound, not hierarchical. It is community-based as well as in it is determined by and determinative of (over time) its own use within a community of users. There is a "within-timeness" to it, as the Existential-Phenomenological thinkers would put it and that "within-timeness" is not quite synonomous with what we do when "versioning" code.

    So to put all of this briefly, the point IMO is that the Requirements "stage" and process is the place in which the "language of use" is first developed (and ongoing refined) by those will use the deployed system of code as well as those who will code it. Actually developing a useable OOP architecture means -- among other things -- that the "lived complexity" of the tasks imagined by the users, was able to be reduced to a functional hierarchy -- even when it actually involves a much more complex structure.

    It is this later part that makes the overall architecting and coding process SO interesting, because there's lots of "slip and slide" in mapping the lived complexity of/for the users into the hierarchical constructing favored by OPP so as to maximize reusability, simplicity of construction and straightforward debugging, etc.

    And, yes, I have a background in philosophy so it's easy for me to "slip into" that world.

  4. QUOTE(tcplomp @ Apr 30 2007, 06:17 AM)

    Yes it is kind of dissapointing only one XControl made it into the Code Repository. [/plug]

    The way you do it now is very good to change into an XControl! because it is already event driven!

    And what do you mean by CD drive control panel?

    Ton

    "CD drive" means CD-ROM so I would like to see an example of an XControl that would involve all of the "transport" controls of a typical CD-ROM control program - something like a media player's Stop, Play, Pause, etc...

  5. A recent thread has raised the issue of example code illustrating the use of new features of LV8x, in particular the topic of XControls was mentioned. In that vein -- and FWIW -- I have yet to see a complete example of an XControl that implements, for instance, the functionality of a CD drive transport control panel. I mention this example because:

    1. Such an instance would be a generally useful example.

    2. The idea of such an instance has been mentioned in several other venues.

    3. I haven't (yet) seen one -- and perhaps I've missed it so apologies in advance if one already exists and is available.

    4. It SEEMS LIKE it should be a "really good thing" to use an XControl for this.

    5. But, despite #4, I find myself returning to using "older controls" in a Queued Messaged Handler or Event State Machine architecture.

    Now perhaps it's just that I'm used to "old school" LV code, perhaps I'm just not enough "up to speed" on XControl features to get it to work well. But regardless of any of that, I still think it might be a good example -- if someone else has one.

    And, in any event, this is my contribution (albeit very, very small) to trying to keep a positive focus here. I've found LAVA to be very valuable and am glad that it's here. I hope to be able to be of help to others as well.

  6. QUOTE(crelf @ Apr 22 2007, 10:00 AM)

    redneck.jpg You shure gotta a purdy mouth there boy - you use your tongue purdier than a ten dollar whore...

    (extra credit: name those movies)

    Perhaps what we're all asking for here is (dare I say it?) a rating system for individual posts? (OK Chris, you've said it, now step back and enjoy the show...)

    Deliverance.

  7. QUOTE(John Rouse @ Apr 20 2007, 10:51 AM)

    Appreciate the article and the series Tomi,

    I like the examples.

    The pictoral way of representing classes is nice for learning concepts.

    I agree, esp in the context of LV which is such a VISUAL experience. I was always struck by how NON-VISUAL the experience was with Visual Studio -- it really was just a hyperlinked Text Editor with supporting utilities. Now that was helpful in many ways but it really wasn't -- IMO -- a truly VISUAL interface/experience.

    The more visual the process, the easier and more seamless it becomes for me -- and that's esp true in re: to "classes" as that's a term/word that just never "fit" well for me with what it was supposed to be representing.

  8. QUOTE(Jim Kring @ Apr 13 2007, 11:37 AM)

    John,

    We are entering a world where the definition of "computer", "user", "software", and "operating system" are becoming blurred due to our highly connected, networked world. http://en.wikipedia.org/wiki/Virtualization' target="_blank">Virtualization makes computers more like software and multi-cores (and multi-processors) makes the definition of "1 computer/user" rather meaningless.

    The bottom line is that things are changing very rapidly and software that works today, probably won't work well in few months, without patches and upgrades. Software as a service is really the direction that everything is heading. let me rephrase that, software as a service (sold in various units of value to the customer) will completely replace software as a product. I'm sorry if you don't like that, but you had better get used to it.

    [uPDATE] the software service providers that provide the best service to their customers and treat them well will win (I hope).

    -Jim

    Jim is right on target about this. SW is definitely transforming into a service and leaving behind almost all of the "trappings" of its having been seen as a product. And there really isn't any way around this -- it's not just a MS "evil empire" disease being spread maliciously, this is the way it is (and actually has been IMO) in the unix, Mac and other OSs. Why do you think we have continuous updating occuring across ALL platforms? Contrast what happens in SW with something like your car. SW undergoes a major update and you download it over the net, perhaps with or without a charge depending on how "major" it is. Let's say through, that the Fuel Injection system on your car is "updated" ("improved") -- you definitely pay for that product as well as for the installation. The idea that, since you bought the car you ought to just "get" the update, is a really interesting one, esp when what we are considering to be the "product" is actually a collection of services (read "properties" and "methods") that allow us to perform services on various HW platforms.

    It really is about transitioning the understanding of what software IS...

  9. QUOTE(SciWare @ Apr 12 2007, 05:01 PM)

    I just spoke to my rep, the only way for me to upgrade is to purchase a 1 year SSP. Gone are the days when you just payed 800 bux or so to upgrade your version of LV to the latest, and bug fixes were free. The good side is that within the year 8.5 will be out so I'll automaticaly get that.

    I'm just a little sore at NI for forcing me to go with this just for a bug fix.

    I need another shandy to sooth my throat which is sore and calloused from swearing.

    It's not "...just for a bug fix" -- as you've said, you're also getting the next major update, viz to 8.5.

  10. QUOTE(Pablo Bleyer @ Apr 12 2007, 01:35 PM)

    I don't know if it is just me, but 8.2.1 is behaving far more unstable that 8.2, at least on one of my machines. IIRC I had one or two crashes with 8.2. Since I installed 8.2.1 this week, some minutes ago it just crashed for the 5th time. This has happened on different applications, however I am working with big data files and LV was usually using more than 500MB of memory then. Maybe that was the reason? I'm glad that 8.2.1 fixed some annoying GUI property update issues, though.

    Regards.

    I haven't seen this behavior and I've done some very, very large builds.

  11. QUOTE(Louis Manfredi @ Apr 10 2007, 03:33 PM)

    Hi Folks:

    I'm having problems with a Active X CW 3D graph control. Its kind of embarrassing-- I suspect I've had and solved this problem before, but I can't for the life of me remember how.

    My Vi works fine in the development environment.

    As an .exe on the development environment machine, the program also runs fine.

    Copying the .exe to a computer which has another, previously installed application I've written using the 3D control also runs fine.

    But when I create an installer, and attempt to install the program on a new machine which has never had any LV applications installed on it previously, the VI does not work properly. I get the message: "Error loading Control. A newer vesion needed. The default settings for the control will be used." The control then does not appear on the front panel, although as far as I can tell the VI otherwiser runs properly.

    Right now I'm running version 7.1.1-- Since I had a bad time going to 8.0, I'm holding out till I'm through with this project on going up to 8.2.1

    Much thanks in advance to whoever points out what is probably a pretty silly error on my part...

    Best Regards, Louis

    The CW3DGRPH.OCX control needs to be updated to the latest version. I don't have the reference for this on the NI site but I'm sure a quick browse will retrieve it for you. By default that component is copied to

    c:\windows\system32

    and then registered.

  12. QUOTE(i2dx @ Apr 10 2007, 11:03 AM)

    thanks for the link :)

    If we are completely uptodate with 8.20 -- including all toolkits -- and then download the labview_821.exe file and double-click on it, the update will be correct?

    I'm on SSP but am traveling and so, if I can do this while on the road, it would be great.

  13. QUOTE(Dirk J. @ Mar 30 2007, 02:02 AM)

    or this underestimated tool...

    I use LV2 globals a lot -- both with for loops and while loops -- depending on the rest of the VI involved. I haven't thought about actually testing both structures, my assumption was that they were equivalent c/c++ code "underneath" so it's interesting to see the benchmarking.

    But it is because I use them a lot that I have concerns about the feedback node approach -- it seems like a lot of extra wiring to do, esp if you have a number of such variables within a single VI. On the other hand, one could pass around a cluster (of the separate variables) but then there's the overhead of the unbundle/bundle operations as those values are read and modified during run-time.

  14. QUOTE(Darren @ Apr 2 2007, 09:12 PM)

    The way I get around this issue is to create a typedef cluster containing control references to any control I wish to programmatically manipulate within my application. I bundle by name all my control references during code initialization, then unbundle the references whenever I need them in other places in my VI. If I need any of these references in a subVI, the typedef cluster is on the conpane of the subVI so I can unbundle the reference(s) I need within the subVI. Since it's a typedef, I can add control references to it as I develop code. This avoids any array searching for references and makes the code very fast.

    This is the approach I take in all my UI VIs (i.e., any app where I will be programmatically modifying UI elements).

    -D

    Can you post some example code to illustrate this? That would be a really great help for those trying to follow what you're describing.

  15. QUOTE(Jim Kring @ Mar 10 2007, 10:57 AM)

    Maybe your question and assumption are related...

    lips_sealed.gif

    Yes, well that's partly why I was asking, esp since another post indicated that -- except for LVOOP "intensive" operations -- v8.2.1 already seems pretty robust. I would guess that means pretty robust in XP but ??? in Vista...

  16. QUOTE(Donald @ Oct 5 2006, 02:50 AM)

    I can confirm that one of the answers on the NI LabVIEW certification exam is "Functional Global"...

    Lv Punk thx also for the shortcut to the mails of Stephen Mercer. Very good explanation why they changed the Obtain Queue primitive.

    FWIW, I prefer Funtional Global partly because it's sort of the only Global that is really "functional" instead of dysfunctional...

    LV2 is historically correct but not very helpful and the others, well, I guess I just don't like them, again FWIW.

  17. QUOTE(yen @ Mar 4 2007, 01:07 PM)

    Is it possible your node had the wrong class?

    Application is the default class and you need the VI class.

    That was the curious thing for me. I had the VI class, not the Application class. But, who knows what I actually did. Afterall there are some who would say I have no class. ;-)

×
×
  • Create New...

Important Information

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