Jump to content

Mike Ashe

Members
  • Posts

    1,626
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Mike Ashe

  1. Nice implementations, both of them. I note slightly different features. Funny thing happened, I put them both on the same page and ran them in parallel, to compare. They would both load up, but whichever one loaded second (crelf's) would get frozen until the first one (LVPunk's) quit. Probably some issue with IE instances.

    On another note, Chris, when I pushed the Back button, it stayed down, it does not spring back and the stop did not work for me at all, I had to abort. Still, nice. I like the wiring diagrams, instructions and docs dialog use. I can also see using it to guide someone back to a forum or website for technical support.

  2. Nifty tool for static messages. I suppose you could create several of these and dynamically load them. What would really be great is if you could script this (the creation) using .NET automation nodes from LabVIEW.

    Still, if you are willing to go to that much work, I wonder if you could do the same thing with Picture Control tools.

    Nice to have more options.

  3. Thank you!

    But it can not creat controls dynamically, because the number of controls is certain.

    I think I have made a mistake, my opinion does not accord with logic.

    Thanks for your helps, I learn a lot in this forums.

    Bin Wu :thumbup:

    Yes and no. You cannot add controls dynamically to a VI that is running or to the creating VI (yet), but you can use and editor VI to create another VI (that is not running) and then at the end of the edit process, run the new VI.

    What is your application? What are you trying to do? Perhaps if we knew that we could suggest alternatives.

  4. The problem with these kind of refnums (queue, notifier, event, etc.) is that they also hold type information, so the refnum type changes as the element datatype changes. So there's not really one refnum-type for a notifier or a queue. :(
    Agreed. You either end up with a palette full of the standard types (U8 ...DBL, STR, etc) plus you still have to make custom clusters, or...
    What would be nice to have is if NI gave us 'empty' refnum controls for queues, notifiers, etc. in which we then could drop whatever control we want to be the datatype (analogous to what now is possible with the datalog refnum) for that specific object. ...
    .... or you try to approximate this by using a queue of variants, which I have done several times, but we all know the pros & cons of variants. It seems with the added polymorphism we are seeing lately, that the "empty queue" refnum you are asking for should be a reality soon. I wonder if this can be done with an X control?
  5. I believe I post a LV8.0 version somewhere here on the forum (I dont have time right now to locate it) that does not suffer from this issue. For some reason the LV 7.1 version crash because of an enum (this is very odd).

    Does anyone have an idea where the LabVIEW 8.x version of the Private Class Generator is? I've looked everywhere I can think of or search for. Maybe I'm just working on reduced capacity today because I am still on coffee #1 and it is after lunch.

  6. ... There's a lot of refnum controls that aren't in the palettes and you only get them by creating them from terminals of nodes.

    Sounds like this might be a good candidate for an OpenG sub palette off the current Refnum palette. There should be a way to do this with scripting. Perhaps PJM's Private Class generator already has these. I'll check.

  7. Interesting about the visual language release. This thing targets the LEGO Mindstorms NXT as well (or at least the prerelease did). Since the basic LabVIEW patents expire real soon I also think this could be a slide by MS into G type programming. But I wouldn't hold my breath on it being anywhere near "open" G, as MS is seldom in the open camp.

  8. Option 1 can be defeated by providing a VI with the same name and connector pane.
    Yep, this is not hard security. But they have to know about the VI's pane, etc. A slight variation is that the subVI has only one output, a string from a key constant inside. If the returned key does not match, then no run. That is fairly secure, assuming you use a long key string of a secure letters-numbers-special_char combination.
    Option 2 is possible, but requires a bit of thought+work and incurs performance penalties.
    Yep, but so does any real security. Guess it depends on how valuable your stuff is and how much you need to secure it.
    Now, there is a game that I can play on the C side of the code that I've used a couple of times for hiding VIs... I have the equivalent of a string control whose value is the save image of the VI and then I load the VI from the string instead of loading from disk. Thus there is no VI anywhere on disk that is the VI that I'm loading. I have no idea if any such mechanism exists on the G side of the code. Has anyone ever done something like this?

    Yes, I did this several years ago with both VIs and templates for Access databases. It worked pretty well. My implementation was not so secure in that I wrote it to first copy the VI or databse to disk. If someone was watching they could abort the program and then analyze the resulting VI, but then again I wrote it more to protect against someone accidently deleting stuff, so I would always be able to restore defaults. The basic technique worked. I think it could be upgraded to be more secure.

  9. XControl and Demo inside the LLB.

    If you need to change the colors or general appearance, edit the facade vi.

    Hey LV Punk, Nifty XControl !!

    Since you said to modify, I did, but only slightly. This version handles more than 2 pointers. The demo now has 5 arrays and pointers, but I think you could add more if you modified to move the Angle & Revs indicators to the right slightly.

    This version is in LabVIEW 8.2

    (or I will attach, as soon as I figure out how to attach VIs in this new editor interface, Hey Mike, what gives?)

    (Hmmm, I'm going to assume that the "Insert Special Item" menu is how we do this now, but it is inactive)

  10. Hmm... this really isn't what I'd like to see happening when I'm distributing an application. Would there be any workaround that would hide everything?

    Yep. It is a bit of extra work, but there are at least a couple of different ways to prevent reuse. (This doesn't hide, just make unusable)

    1. Create a subVI that does nothing, but is stored in your *.exe from the build. Put that VI on the diagram of every dynamically loaded VI that is saved externally. That way the VI will break and be unusable if it is not loaded by your *.exe

    2. Variation on above: have each of your dynamic VIs look to see who called them and if it is not your *.exe, ie and authorized app, then either don't work (recommended) or send back incorrect data or behavior. (not recommended due to debug and liability issues).

  11. You can, however, "simulate" addition of new controls, assuming that you want to add several instances of the same type of control, you make them ahead of time, say 10 (or 20, whatever) then hide them and/or keep them off screen, then as your user requests them, move them into position and unhide. To the user it will look like the control was made. The downside is trying to set a reasonable limit on how many to premake. Are you making some type of GUI layout editor? What is your end application?

    Another possibility is to use the picture control for your editing canvas, using images of controls, then create a copy of a VI off to the side from a template and then add the controls using New Object. The copy would not be running and therefore you could add the controls.

    YMMV

  12. I had to send that one on to my brother in law who is now a software manager (next time you need to work in suppliers and managers, then throw in a comparison of cartels and consortiums...).

    Okay, fess up time, did you write that from scratch or find, or find & modify? Your rating depends on the answer: a find is three stars, find & mod is four and baked from scratch is five...

    Anyway, it was a hoot!

  13. Hey everyone.

    Just started programming with LabView. I used to program in C and VB.

    Hi frontiergeo, welcome aboard!

    I started out with C & VB the same way (a few years ago, I think it was just "VB" then with no numbers after it.) before switching to LabVIEW. Might I suggest you go through the /examples folder in detail :book: , then download the OpenG Commander 2.0 Alpha from SourceForge and study it for good programming style and lots of great application code that you can reuse. Better yet, look at Commander first, it is written much better than most of the examples. :thumbup:

    So now that you have introduced yourself, what are you using (or planning to use) LabVIEW for?

    Cheers,

  14. Well, I don't know what to say...
    And then you go on to post a half page of very well written prose that thanks and encourages others, builds up and plugs for the new great features of LAVA like the CR and KB, remind us to keep contributing and looking to the future to make LAVA even better and conclude with a simple thank you.

    Tut, tut, my boy. You DO know what to say and when to say it, including when the right thing to say is a low technical SNR, but high laughter SNR post, such as the Alfa 5th Dimension postings where you remind us not to take ourselves to seriously.

    Which is why Michael was totally right in his initial choice.

    Cheers! and :beer: :beer: :beer: s

  15. ... A marvelous book about a hardware engineer who created a temporal feedback loop in a D-flipflop and a moment later a monolith appeared bearing the inscription "Thou shall not violate causality within my historic light cone. Or else." That initial feedback had formed an AI that propagated itself back in time. Quite a fun novel, with the premise that causality is not absolute, merely a good idea (particularly when there's a near omnicient AI enforcing it).
    If you like this type of stuff and have a lot of time on your hands I would recommend the http://en.wikipedia.org/wiki/Hyperion_Cantos series by Dan Simmons. Extremely well written. Time portals, farcasting, not one but TWO Universal Intelligence AIs, and enough literary references to satisfy an english teacher without getting in the way of a great SciFi story line.
  16. You are trying to set your timing to one increment of the resolution of your timing source, always a troublesome idea.

    You might want to try to configure to use the 1 Mhz source, if you have it available. Try setting this to 1000 (ie, 1 ms) and see what your results are.

  17. Unfortunately this won't work properly if you have 2 sub-clusters which are identical (i.e. 2 instances of a type def) or which contain an element with the same name. ... I'm probably not explaining this clearly ...

    Actually, you explained it quite well. :P

    However, I'm not to worried about this behavior and I'm happy that we have a workaround at the moment. Besides, since we at LAVA always use good style and never do things like unnamed elements or fail to use unique names in our clusters or other programming faux-pas we won't have this problem, will we? :D *

    *with our own code of course ...

  18. Anther disclaimer, crelf is my boss, so do not be alarmed if many of my postings are "I agree, crelf!" or "Great advice, crelf!"
    :P I agree, TobyS!
    No shilling for the boss! ... next thing you know they'll be stuffing the ballet box with votes to finally implement the ratings system. :P
×
×
  • Create New...

Important Information

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