Jump to content

Norm Kirchner

NI
  • Posts

    823
  • Joined

  • Last visited

  • Days Won

    25

Everything posted by Norm Kirchner

  1. Has anyone been able to, or even tried for that matter, to access one of the NI.LV.xxxxx contexts on a remote system? This would be particularly useful when you have developed a tool that runs in one of these hidden contexts (like NI.LV.Editor) and you need to send information to it remotely through VI server. Specifically, my use case is that A LOT of my development needs to happen on remote PXI systems that I Remote Desktop into. But there are select utilities that, because of my remote access, do not work through RmtDsktp. I could see this being useful beyond my own scope for things like remote monitoring or taking advantage of these other contexts as a 'services' layer instead of interacting with the running application context. Currently, any non-built-in context can be accessed by opening up, within that context, a unique TCP VI Server port to listen on.
  2. Any chance you've got another PC to try it out on just to make sure there isn't something insidious going on? (bermuda triangle'ish kind of things)
  3. If you can for debug purposes, try turning off the built in windows speech recognition interface. Perhaps it's conflicting with the session that LVSpeak is in control of. Never heard of the VI revision dialog popping up before.... It sounds like LVSpeak is running just fine, but something is stopping it's MS SAPI engine instance from hearing you. I think it's either 1 of 2 things. The built in functionality in windows is overriding the LVSpeak engine ( which doesn't make a ton of sense because I had both setup at once, once upon a time) or that perhaps the speech engine instance that LVSpeak starts is looking at a different audio input on your system other than the one that the built in MS function engine is using (I've seen this on my system as I've connected/disconnected various forms of input) good luck
  4. Dave, Something seems to happen with some browsers automatically casting the .ogp to a zip. then people unzip and then their lost on what to do. So try downloading the .ogp and if it d/l as a zip just re-extensionize it to .ogp and see what you get. (it's worth it)
  5. I'm not sure if the 64 bit will cause any issue, but there is one minor point that sometimes gets lost... are you holding down the ctl key when you say the command and for a few seconds afterwards? ( that I now realize I need to be something like a pop-up after start to re-inform the person) The logic in the code is such that pressing the ctl key down does not enable speech, rather it tells the LVSpeak core that it's ok to fire the event that is associated with the speech recognized notification it is always getting from the MSAPI core. The speech recognizer is constantly translating and sending notification to LV. It's only when both speech is recognized, and then after which it looks for the Ctl key to be pressed ( thus necessitating for the purpose of debug, to ensure that you're holding down the ctl key for a long enough period after saying the command. ) Try that and see if it works. As a sanity check, under the tools menu, you should also have an entry for Quick Edit. Under that menu, you should see an option to "Show QuickEdit Window". Double check that when you select that, that another window comes up and is already running. good luck -Norm
  6. Dave, Does this mean that you now have it working?! Phenomenal! And just for your continued perseverence.... I've made a new plugin just for you <a href="http://content.screencast.com/users/NJKirchner/folders/Jing/media/25f5d353-449d-4b12-b365-230a93f445f0/2010-01-22_1133.png"><img'>http://content.screencast.com/users/NJKirchner/folders/Jing/media/25f5d353-449d-4b12-b365-230a93f445f0/2010-01-22_1133.png"><img class="embeddedObject" src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/25f5d353-449d-4b12-b365-230a93f445f0/2010-01-22_1133.png" width="292" height="388" border="0" /></a> lavag_cr_LVS_QEC_2001-1.0.0-1.ogp Enjoy and make sure your speakers are turned up...
  7. Felix, I actually do this exact thing using LVOOP within LVSpeak. Each command is a child class of the parent command class and they send commands through the LVx pipe as the class and it requires no casting whatsoever. Well I suppose you need to go to more specific class or rely upon dynamic dispatching after you get the class data in the event structure. The basic idea (which has nothing to do with using your voice)is that each node (client or server) that needs to respond to a command, and potentially return a response, registers for a user event w/ the parent LVx class as the data type (so not exactly the concern of this thread). After which you just need to await the user event to be fired and handled appropriately. And the data type of the event is of LVx parent command type, and the specific child class defines the command to be executed, and the data inside of the class is the parameters and also eventually the return data which gets passed back to the requester within the LVOOP object itself. The reason this is of relevance to this thread is that without doing this technique, casting to another data type (like string)would be required. For things like the Simple TCP Messaging (STM) reference design (on ni.com), it does exactly that. Flattens to string, send across tcp, and then hope that you package it up and cast it back appropriately. LVx uses VI server and takes all that casting away from the programmer and lets the wire type stay smart (and allows you to talk across the internet,LAN, or application contexts too)
  8. I'll lay a pitcher of beer on the instantaneous hard abort of the VI hierarchy with a "unable to dynamic dispatch" dialog. not... that... I have ever... seen such a thing
  9. Dave, If you have XP, you must download the SAPI from Microsoft and it won't matter what you're using in office. If you downloaded the presentation about getting the LVSpeak process up an running you'll find the link for that download Once you have that installed you should have all necessary Microsoft parts ready to go in Windows. PS For all of you who had asked for earlier versions to be released, I still remember it and am trying to find time to get to it. Thanks for the patience
  10. A quick note on downloading from the NI site. It takes the VI packages and wraps them in .zip files. So make sure to find those .zip files downloaded or the .ogp files that were extracted from them. Make sure that VI package manager is successfully installed (full instructions on jkisoft.com) And if you do not have any speech item in your control panel, I have a feeling that something is awry. Are you viewing your control panel in classic or 'ehanced mode' PM me with a screen shot of the panel
  11. On a related note, when making architecture framework code that includes User/Dynamic events..... A little known fact is that you can register multiple Event Registration Refnums to an individual Event structure. So you ask, "What does this mean to us and why do we care?" First this is what it looks like What is happening here does not show the full power or reason I bring it up. But rather it shows the base Mechanics. This little piece of code registers a different Event Registration Reference for a user event that just got fired.... With a little creativity, you could to a TON of things with that idea (but it's still not why I bring this up. The reason that this technique is so important to event based architectures is that dynamic events do not all need to be lumped together within 1 DynEvent Registration Reference. You can Separate them better based upon functionality. In particular, if you make an architecture that you want someone else to take advantage of, you can isolate your architecture/framework events and registrations and other functionalities within your own framework code and not need to have them modify or tweak their own RegEventRef just because you may have changed or added something to the framework. A great example of this is the ever elusive "Initialization Event" So many people have skinned this cat, it's starting to chafe some. This is a typical way to have an event case fired at startup. But it makes this portion of code a bit bloated and it's just not as elegant as it could be. Now the mechanics of this flow still need to happen. But watch what we can do if we take advantage of the previous technique. The top VI now is a framework level VI that I can drop in any VI that I want to run an INIT case on, without disturbing the definition of the Event Registration Refnum of the rest of the program. The bottom VI just did the same thing by taking that registration process and made it an individual VI that prevents the end user from needing to wire up a bunch of stuff they should not need to worry about. Hopefully this technique (which you can do in 8.6) will aid your architecture
  12. [quote name='Daklu' date='16 January 2010 - 07:45 PM' timestamp='1263692722' post='71183' Not on this project unfortunately. What happens when you try to wire a parent class user event and child class user event to the same output node in a case block? With the advent of DVR in 2009 it became necessary for terminals with typed references, that have objects as their data type, to permit the full hierarcy of decendants to be allowed to enter that terminal. But luckily, because it was required for DVR, every other type reference came along for the ride. So whereas pre 09, you could not have an input terminal to a VI be a QRef with a parent class as its data and wire in a QRef w/ a descendant class as its data, you now can in 2009.
  13. ooth, I'm totally stoked to have another convert! The speech engine tries to figure out what GPIB sounds like as a word.....so needless to say that might be tough. The alternative that you want to do though is through the Quick Drop Shortcuts. Currently freaking fast drop also loads the shortcuts so you could make the shortcut for GPIB Read to be "g p i b read" (note the caps to be safe) I'll test it out here but it should work (based upon my command for VI properties being v i properties) Good luck, let me know how it goes -Norm PS Be sure to post when you buy your first pizza through it Bjarne, What does the speech properties say under language (like I have in my picture)?
  14. And with your statement we shall all rise up against AQ and smite him down... Why? you may all ask...... THIS IS WHY!! The Flatten Object to XML does not flatten all of the object. ***IT ONLY FLATTENS THE PARTS THAT ARE NOT THE DEFAULT VALUE*** So although it's readable, you can have absolutely NO IDEA what is in the class if you don't know the default value.... which technically you only know IF YOU HAVE LV OPEN AND THE VERSION OF THE OBJECT IT WAS CREATED WITH!!! So having it readable gives you no value whatsoever. and it won't even translate the structure to the XML and just leave the values blank. It just simply omits them altogether. Does anyone see any value now in taking an object and flattening it to XML? I sure as hell don't. This is a warranted discussion on another thread, but felt necessary to vent here. Sorry about the caps </rant> So you may want to be careful when going to XML w/ an OBJ ~,~ Check out the class mutation section of the LV Help file under "Developing LabVIEW Classes" I have not really pushed the mutation algorithm, but have found it useful for simple additions and subtractions to the private class data structure.
  15. I've done it, it's cool and it's not too hard. You simply need to put some callable command in the exe which will look at a path for your new .lvclass and within that command, run the 'Get Default Class Data'. If that completes successfully, then your new class is loaded into memory and ready to rock and roll. Within LVSpeak I do this by scanning my Plugin directory for all .lvclass files, running the 'get default data' and then just as a sanity check, run a common method on all of those loaded default values. The same tactic would apply to an exe <a href="http://content.screencast.com/users/NJKirchner/folders/Jing/media/28e55bc6-47fd-42ff-a581-66ca58b37cb7/2009-12-30_1202.png"><img'>http://content.screencast.com/users/NJKirchner/folders/Jing/media/28e55bc6-47fd-42ff-a581-66ca58b37cb7/2009-12-30_1202.png"><img class="embeddedObject" src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/28e55bc6-47fd-42ff-a581-66ca58b37cb7/2009-12-30_1202.png" width="364" height="190" border="0" /></a>
  16. As far as if the bit files are different.... it's a mix between an elephant and a rhino. elephino But it's worth checking out. But would there be a reason why you would choose to flatten first requiring 2 VI instead of just writing to disk directly? Also, I don't know if the smart mutation is handled when unflattening from string.
  17. Perhaps I'm missing something, but have you simply tried the write to binary file? I've been standing on my soap-box around here every chance I get when someone says they want to store 'cluster like' data to disk. Now I know that this is not exactly what you're trying to do, but it shows how easy it is to save an object to disk. <a href="http://content.screencast.com/users/NJKirchner/folders/Jing/media/dab29e2e-3762-4d8b-872d-18d564aaf030/2009-12-30_0822.png"><img'>http://content.screencast.com/users/NJKirchner/folders/Jing/media/dab29e2e-3762-4d8b-872d-18d564aaf030/2009-12-30_0822.png"><img class="embeddedObject" src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/dab29e2e-3762-4d8b-872d-18d564aaf030/2009-12-30_0822.png" width="331" height="128" border="0" /></a> So from what it sounds like you're talking about, I would not flatten to string or anything of the sort. Just write to disk. There are a myriad of added benefits to doing this. The LV back end handles the situation of the class definition saved to disk is different than that which you are re-populating the object with. Also, you can save an array of differing objects to disk this same way. I know there are a few more benefits, but they elude me at the moment and I gotta run. Good Luck ~,~
  18. I don't get it.... (story of my life)
  19. S.A.L.E.S. <a href="http://content.screencast.com/users/NJKirchner/folders/Jing/media/448085b8-e6b9-4b2b-92b5-81274d64c6e9/2009-12-29_0939.png"><img'>http://content.screencast.com/users/NJKirchner/folders/Jing/media/448085b8-e6b9-4b2b-92b5-81274d64c6e9/2009-12-29_0939.png"><img class="embeddedObject" src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/448085b8-e6b9-4b2b-92b5-81274d64c6e9/2009-12-29_0939.png" width="352" height="211" border="0" /></a> IT's is a bit less visible <a href="http://content.screencast.com/users/NJKirchner/folders/Jing/media/2d2635cc-f30e-4fa4-abf9-8d5642c50641/2009-12-29_0945.png"><img'>http://content.screencast.com/users/NJKirchner/folders/Jing/media/2d2635cc-f30e-4fa4-abf9-8d5642c50641/2009-12-29_0945.png"><img class="embeddedObject" src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/2d2635cc-f30e-4fa4-abf9-8d5642c50641/2009-12-29_0945.png" width="250" height="187" border="0" /></a>
  20. Luiz, I don't really have a trial system to test this out on, but have you looked into your speech settings in control panel? <a href="http://content.screencast.com/users/NJKirchner/folders/Jing/media/6e2f9260-dd2b-4d1f-9a7b-9875d70ca4a7/2009-12-29_0929.png"><img'>http://content.screencast.com/users/NJKirchner/folders/Jing/media/6e2f9260-dd2b-4d1f-9a7b-9875d70ca4a7/2009-12-29_0929.png"><img class="embeddedObject" src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/6e2f9260-dd2b-4d1f-9a7b-9875d70ca4a7/2009-12-29_0929.png" width="475" height="331" border="0" /></a> Mine says English and I would imagine that in order for the engine to work, yours would need to be the same. Which version of windows are you on? Good luck Norm PS Thanks for your effort getting this going and sorry about the long response time Conway, I don't know what the next few days hold, but I'll see what I get when I just do the run-o-the-mill save for previous. I think the only function that I use that is unique to 2009 is 'Preserve Runtime Class' for LVOOP. The work around for that shouldn't be to bad.
  21. It's just the kind of thing I am looking for, but it does not handle the really difficult cases of LV Libraries (.lvlib and .lvclass) cascaded iconography or the usage of the current icon editor. So now the question is, modify the RUAG editor or start fresh.... hmmmmm
  22. FWIW, I utilize the technique of running a VI that exists within an lv_EXE's memory space in many applications. SMenjoulet was actually one of the first people that I had seen do this elegantly. His creation was LabVIEWx or LVx. The basic idea is that within the executable, you have 1 subVI that, at the beginning of the exe's execution, spits out an event reference and stores it internally within a shift register. <a href="http://content.screencast.com/users/NJKirchner/folders/Jing/media/c77073a3-5a2a-48d8-bc0f-47f75f104659/2009-12-21_1231.png"><img'>http://content.screencast.com/users/NJKirchner/folders/Jing/media/c77073a3-5a2a-48d8-bc0f-47f75f104659/2009-12-21_1231.png"><img class="embeddedObject" src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/c77073a3-5a2a-48d8-bc0f-47f75f104659/2009-12-21_1231.png" width="536" height="356" border="0" /></a> Register the EXE for that event <a href="http://content.screencast.com/users/NJKirchner/folders/Jing/media/79ce3e24-5d72-400a-91fa-bc69abd9aa44/2009-12-21_1231.png"><img'>http://content.screencast.com/users/NJKirchner/folders/Jing/media/79ce3e24-5d72-400a-91fa-bc69abd9aa44/2009-12-21_1231.png"><img class="embeddedObject" src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/79ce3e24-5d72-400a-91fa-bc69abd9aa44/2009-12-21_1231.png" width="338" height="289" border="0" /></a> REMOTELY (from another VI or lv_EXE) Open a reference to aforementioned EXE through VI server and call that aforementioned subVI via 'CallByRefNode' and pass in the command. <a href="http://content.screencast.com/users/NJKirchner/folders/Jing/media/af6aaa05-302d-41cd-a94a-952c8ae82f0b/2009-12-21_1246.png"><img'>http://content.screencast.com/users/NJKirchner/folders/Jing/media/af6aaa05-302d-41cd-a94a-952c8ae82f0b/2009-12-21_1246.png"><img class="embeddedObject" src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/af6aaa05-302d-41cd-a94a-952c8ae82f0b/2009-12-21_1246.png" width="1024" height="598" border="0" /></a> And at the end of the day, when you run the Remote Export, you will have fired the event within the LV_EXE along with the data you passed to it. Is this close to what you were looking for? Also if you're using LV 8.2, there is an issue with an ini key "TCP.ACL = ...." that will need to be copied from the LV ini into your EXE's ini. This may resolve your error 7
  23. Well that's no surprise, you probably just added it yourself I love wikipedia j/k
  24. Copied my post from the dark side
×
×
  • Create New...

Important Information

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