Jump to content

Norm Kirchner

NI
  • Posts

    823
  • Joined

  • Last visited

  • Days Won

    25

Posts posted by Norm Kirchner

  1. Gary,

    Good questions.

    I have one to follow it up as well that I'm curious about.

    I've always had an expectation of Single Element Queues to be the most memory efficient and fastest way of getting information from point A to point B by reference.

    And that if you do a modification of that element, by DeQ, modify, EnQ that you will be doing an in-place memory operation. This makes me think otherwise unless the compiler is as smart as we hope.

    AQ?

  2. Really, in this case I need them.

    Then you need to define an upper limit and do the fanciness of hiding/showing all tabs up to your limit and using tab-captions to dynamically re-name the visible tab names

    (or do the hacky way of having a non-running VI present in the sub-panel that you can edit at runtime but not run)

    If you resolve yourself to that, then you have a solution (which i'm sure plenty of others have done in the past to do this exact thing)

  3. George

    I would strongly suggest that you investigate another option involving sub-panels and utilizing a listbox to choose the appropriate 'Page' (something like the LV Options page)

    Although tabs afford the user some good user interactivity points, it is limiting when attempting something more dynamic which it sounds like your doing.

    You will find that a listbox with subpanels are extremely more flexible albeit a hair more exotic with the process of getting information from the subpanels back to the top level.... but that is another discussion altogether with a variety of very good solutions.

    If you CAN NOT live without a tab control, you will still need to use sub-panels anyway and you would create the sub-panel VI on the fly with scripting and adding / removing tabs that way. (a creative yet very flawed solution)

    Good luck

    ~,~

    Norm Kirchner

    • Like 2
  4. Very cool Norm. Thanks for sharing that with us! Couple points/questions:

    • Do you have an online source code repository or should we just make changes and post them here for review? (I think this tool would benefit from a plug-in architecture.)
    • TRef Traverse for CursorContext.vi and TRef LocatorCallback.vi are both password protected. Just pointing that out in case it was unintentional.
    • The Quick Drop package doesn't have the core package listed as a dependency. wink.gif
    • Why did you distribute it as an llb? I've noticed lots of tools continue to be distributed that way even though NI has depreciated them.

    Code Repository: Should be arriving in the LAVA CR soon (less than a week)

    Password protection: intentionally done at a time before scripting was not black market material. Uses some scripting stuff none of us had done before (thanks dnatt) and thought it prudent

    Dependency: Because I'm using the OpenG Package Builder I have never been able to get the dependency enforcement working properly. Simply giving it the expected package name and version never did squat for me. (probably operator error)

    LLB distribution: I have never made a "tools Menu" app before and this looked like the most straight forward way to get the kind of behavior I wanted. And wrt LLB's, I believe (not because I know) that they are not going to be disallowed any time soon so it was still a concise way of keeping a group of files together for the tools menu and simplified the packaging process which I'm still relatively new at.

    I'll let DNatt make a nugget one of these days on the traverse code (or take it on if he deems me able to do so)

    Thanks for relinking.

    I've got one question. In my LV (8.62 Dev. and Scripting VI) I can't find the "GetActiveViRef".

    I can copy it from your VI and It works fine, but why can't i find it in my PullDown Menu when I klick on it?

    This is a 'Private' event and must still be hidden under the "RUSTY NAIL" clause of these things. I have never seen any specific documentation on it's pitfalls, perils and usages but I know for darn sure that all of my scripting tools rely on it's operation from what I have been able to understand of it. Let's hope it doesn't change functionality or go away because any tool that needs to know what was the last LV thing touched would then need to revert to a TopMostVI checking style routine which is a bit of a pain and still might not work for this kind of implementation.

    If you want to know about the Private methods/functionalities, head to the rusty nails section to get the proper ini key.

    Enjoy!

    Having it only process commands when a configurable key is pressed would be sweet. Hold down ctrl to speak, for example.

    I'm not sure I have explicitly state it yet, but I quickly found this also a requirement.

    EVERYONE: FYI

    In order to have a command detected you must hold down the control key and not just while you are speaking but for a fraction of a second after as well. The Microsoft API is constantly translating and only LV does the check "is Ctl pressed" after it gets the signal from the MS SAPI that something had been detected.

  5. 'K, I guess I'm gonna have to wait.

    At the moment I don't have something I need which has a lot of messages, but I just wanted to check.

    I have used this technique before which requires a new class for each command, but the added benefit is the ability to make sub-class tree of commands which comes in handy when dealing with a ton of commands.

    I've found that it's really helpful if you define naming and file organization decisions before or early into the process of creating commands since making changes en-masse is a pain.

    But other than making sure both sender and receiver are working on the same version it's a sound tactic.

    The max number of commands I worked with was 17 and no issues. I was sending them across VI server using a Call By Ref node so there wasn't even any flattening to string needed.

    Good Luck

    ~,~

    Norm

  6. I don't want to burst your bubble on some of your code but you should checkout the VIs in

    C:\Program Files\National Instruments\LabVIEW 8.6\vi.lib\Utility\traverseref.llb

    there are two top level VIs that allow you to farm an array of all references of any type of LV object w/out worrying about traversing structures yourself.

    In the end your code would still do the same thing, but be more robust and flexible for different types.

    2009-06-08_1604.png

    2009-06-08_1614.png

  7. I think they just figured out here @ NI that eventually I would get into the code and turn the scripting lock back into an ini key.

    So instead they just decided to legalize it.

    Kind of like prohibition.... just doesn't work.

    Now we just need to make sure they don't start putting sin-tax on the license.

  8. Of all the 1% of 1% of people on this earth who are pilots, I'm probably 1% of those that has actually used the whiz-wheel as a general purpose calculator.

    Think slide rule but wrapped around in a circle. Setup a ratio and look for the value you want to multiply by and look above it (or below it based on perspective) and you have your answer (w/ some decimal shifting).

    Also flip it over and you can do trig with the wind speed angle correction insert.

    Heck, it's so smart it's not even a calculator.... it's a computer ;)

    e6b.jpg

  9. QUOTE (TobyD @ Apr 3 2009, 12:20 PM)

    I'm in love Norm. This is great! I just have a crappy desktop microphone and it picks up every command. I was talking to a coworker and happened to say "replace" during my normal conversation and up pops the dialog box to choose a new control.

    Very cool! :thumbup:

    Actually, that's how Get Pizza came to life. I was getting heckled by my co-workers and they kept running by screaming 'Get Pizza'.

    So I just made it actually do something. Now if I could only get their credit card #s it would really make them stop the harassment.

    But I've found that a headset w/ a mic mute switch has helped. Actually I'll probably be making a foot switch if the ambient noise or hecklers gets too annoying.

    To be fully honest, the previous version of my code, on vista, would enable the full vista speech system that had the capacity to close windows, hit keyboard keys, or do other system functions. Which is cool, but if you forget to shut the microphone off and turn around and have a conversation, you will find that your pc has been doing stuff since you walked away (like closing or opening windows you don't want closed or open)

    The current version bypasses the Vista Environment Speech integration.

    Actually if you do leave the voice system in Vista open and leave your laptop running next to a TV running a Bollywood movie, you'll find that it starts to outsource your coding (although the code is not documented and sloppy) ;)

  10. QUOTE (Antoine Châlons @ Apr 2 2009, 03:51 PM)

    Any idea if there is a way to pin up a sub palette programmatically ?

    ooooh, I'm thinking no on that one. Palette windows and their functionality are probably not that exposed/extensible.

    There is probably a ton of C code behind them and little G hooks.

    Maybe if we get Darren on this thread he'll qualify that statement. But for now I'll bet an NI week Beer that it's no.

  11. ADVANCED AND BRAVE USERS ONLY

    In other words, if this messes something up.... Don't call NI complaining.

    Really the only thing that has the chance to break is the fact that this package replaces the installed Quick Drop VI (but it does make a backup)(or at least that's the way the package is setup)

    Addon :: Voice Integration with Quick Drop

    Download File:post-208-1238696190.ogp

    CORE DEPENDENCY!!! (NEW VERSION!!! Must Install)

    Download File:post-208-1238696196.ogp

    • Like 1
  12. Actually wouldn't it be so much better if you just told LV what you wanted to do and that way you wouldn't need to move your hands from the mouse, or dig down through copious levels of menus?

    Well if you're not sure... take my word for it, it is!

    A side project of mine

    LVSpeak and QuickEdit

    http://forums.lavag.org/LVSpeak-tell-LV-wh...-do-t13687.html

    You can now simply tell LV "Align Right" or "VI Properties" or even "Get Pizza" (the last one is functional and an inside joke but does work)

    So although every functionality is not present, if you want something added, figure out how to automate it, and add it in!

  13. Use in good health WITH NO WARRANTY OF USAGE.

    This uses unsupported and possibly buggy features of LabVIEW that may or may not corrupt your code. (but I use it every day and so far haven't encountered any corruption issues)

    Some commands operate on the premise of the selected objects, (alignment stuff)

    Other commands operate on what you are hovering over (Create Control)

    Other commands are context insensitive (show project , get pizza)

    The ability to do "Create Constant, Create Control and Create Indicator is now enabled!!!! Yup, it's that damn cool

    THIS IS NOT SUPPORTED BY NI

    let me repeat

    THIS IS NOT SUPPORTED BY NI

    This is something that I was working on well before I got into the walls. This is in the hands of the community and we'll support it and tear it down/apart as needed

    Most commands are for the block diagram at current but are as follows

    BD:

    Label Visible / Invisible

    Align (left, right, top, bottom, horizontal center, vertical center

    VI Properties

    Create Control / Constant / Indicator

    Show Project

    Get Pizza

    FP:

    Label Visible / Invisible

    VI Properties

    Show Project

    Graph Palette

    Replace

    Get Pizza

  14. QUOTE (Neville D @ Mar 30 2009, 02:20 PM)

    Very cool Norm!

    dunno what my co-workers in our cubicle-farm (all C guys) will think with me muttering commands all day..! :blink:

    Neville.

    I'll tell you what they will think. They will wonder what the F is going on, and then you show them that your using voice commands to make your programming go faster and they'll all go sweeeeeeet.

    To be honest.... just show them the get pizza command in action and that should suffice. ;)

  15. One thing that you might not realize is that the signal goes right into a WLAN processing chip and the code on the chip was never made able to export signals. Instead it does it's function by taking the RF on the Analog Front End (AFE) and getting it into the bits that really need to be processed as efficiently and quickly as possible.

    So although there is a downconverter (RF -> IF :: GHz -> MHz) and a A/D converter (Analog -> I-Qbits) you do not have access to those raw bits of data before they get put into the WLAN processing stack

    A great place to learn more about RF is at

    http://decibel.ni.com/content/groups/rf-developers-network

  16. I have taken a few moments to re-factor LVSpeak and get it ready for the masses.

    For those of you who haven't heard me rant on about talking to LV I'll take a moment to give you a backstory.

    Back when LV scripting was unveiled in ~LV 7.0, I realized that we could merge the Microsoft Speech to Text API and LV scripting to aid us all in the process of coding.

    The idea sat idle until QuickDrop came out in LV8.6, and I couldn't not do it.

    Now, w/ the aid of this package, some rusty nails and the Microsoft Speech SDK, you can command LV with your voice w/ things like...

    [DISCLAIMER] This is not foolproof code. BUT I use it on a daily basis (actually I refuse to program w/out it turned on)

    Directions:

    Download the Microsoft Speech SDK 5.1 and install it

    Download and install the attached package to this post.

    Restart LV and now in your 'Tools' menu, you should see Enable LVSpeak.

    After you click it you will see two windows now floating whenever LV is active (untill you restart).

    The commands that it accepts currently are shown in the image above.

    [NOTE] They do not all work on both FP and BD. ex Alignment commands only work on the BD.

    [NOTE] This does not include integration w/ Quick Drop (although I would expect it to be added soon)

    I would recommend starting out w/ Saying things like

    'V I Properties' ----------(both FP and BD)

    'Align Left'----------------(on the BD)

    'Graph Pallette'----------(on a FP graph)

    To stop the programs, simply say "LabVIEW Speak Stop"

    'LVSpeak Engine' simply sets up the link between LV and the MS Speech API

    'Quick Edit' is the engine that does the editing (This is where the fun happens)

    • Like 2
  17. Ok, Just have my first confirmed addition to the tally

    1 Birthday Beer to Jim Kring

    1 Beer to ******* for ****** (3/17 you know who you are)

    1 Beer to Nancy Hollenback for patiently being the recipient of a minor rant about concentration.

×
×
  • Create New...

Important Information

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