-
Posts
186 -
Joined
-
Last visited
-
Days Won
4
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by Jon Kokott
-
I'm using this library, but I've had to modify alot of the variant related attributes for performance and data handling. Most of what I have removes the OpenG stuff and directly casts types. It will also properly preserve data names/typing unlike the current version without extra variant to data casts. I don't really want to go through all the data types that I'm not using, but If you're still interested in maintaining this its probably a worthwhile upgrade. Get as Variant logic will change to look more like this surely there will be some difficulties with this approach on certain data types, and I dont really want to go through and test them, but dynamically building variants is pretty slow and some of the functions are quarter baked which removes the type string. I've got an assortment of scalars, arrays, and clusters working with this method. Let me know if you're interested in this.
-
Not CLA restricted: https://decibel.ni.com/content/docs/DOC-38927 You'll have to be a CLA to get the power point, but thats all that is there, and a link to what I just posted. Trying again... silly NI redirects.... https://decibel.ni.com/content/docs/DOC-38927
-
I use websockets to do this. This is the same code I presented at the CLA summit -- without the SSL encryption/authentication server. At the summit I had about 50-75 clients at a given time messaging them all updates at 100 ms (packets were smaller than the TCP frame size, I didn't' really notice any kind of CPU spike at that point on my laptop) WebSocket.zip
-
The labview webbrowser stuff is pretty crappy. Use a .net webBrowser control, navigate, get the document and you can pretty much do what you want using standard .net calls, and really gives you better control over the browser (which is IE version on your machiene) At this point you can pretty much google how to get stuff, just look to use visual basic or C# and follow the .net calls putting them in labVIEW. Enjoy! Get Webpage Stuff.vi
-
Re-using the command line interface
Jon Kokott replied to Ton Plomp's topic in Calling External Code
If anyone stumbles across this, a better method is to use the windows .net calls. https://msdn.microsoft.com/en-us/library/system.diagnostics.process%28v=vs.110%29.aspx its probably the same thing system exec does under the hood, but you get asynchronous control of standard in, out, and err. I'm certain the performance of this will crush anything else, and all the software is already on your windows machine. ~Jon -
For the only Xnodes I created/actually used, I created a method where you could right click on the Xnode and replace the Xnode with a subVI containing whatever the xnode created. Its really straightforward to implement, I'll try to dig it up but its been a while and I haven't been maintaining it.
-
Good luck with those Xnodes, they're pretty tricky. I used some tools available on this forum that were pretty helpful, I just never had the confidence to put one in a project someone paid me for. ~Jon
-
I think its because your terminal on the xnode isn't really a typedef but just an adapted terminal. Maybe try opening the typedef itself (by using the string of the actual name) and then getting the path. So somethign like: control -> Value-> Strip out typedef name from variant -> open vi reference (with the string name in same application ref) -> then get path. ~Jon
-
It would be easier if you simply posted the code, however, I suspect that the class going into your init function is not the same as the one coming out. Other LVOOP comment, take a look at the Actor Framework. It comes with labVIEW, and I think will take you to a better place, however, it is probably a difficult place to start off with LVOOP as some of the conceptual aspects of it are more difficult than the code you've presented.
- 8 replies
-
- oop
- object-oriented
-
(and 2 more)
Tagged with:
-
AHH VI.lib just got password protected!!!! just kidding. thanks.
-
I need to automate password protecting a large amount of VIs. I can't seem to find a way to do this easily, anyone know how? ~Jon
-
Thanks Dan, this will do the job. ~Jon
- 10 replies
-
- asynchronous
- call and forget
-
(and 3 more)
Tagged with:
-
if you are using plink to create an ssh tunnel, I assure you that it is being encrypted. in fact the whole idea of ssh tunneling is to perform the encryption/decryption. I would seriously doubt you'd be able to outperform putty's implementation using a labview based ssh implementation (there are ALOT of hours of development and test in that application.) If you want to try a different ssh client, openssh on cygwin is a really solid ssh program as well. (BTW I'm pretty sure that plink is open source, its just putty for the command line.) Lastly, if you want to test for encryption, use a program like wireshark and you'll see that all the data is in fact tunneled over the encrypted ssh connection. I've done what you're doing with an iphone. I used an itunnel program to open up a socket on my PC that went over USB instead of the wireless which will greatly reduce latency. I'm certain there is a simmilar application you could find for linux/andriod. ~Jon also you'll definitely want to use a tunneled connection as you alluded to before. The authentication exchange does take a finite amount of time, but with a decent network connection and pre-generated keys it should be in the mili second time range.
-
I believe that the actor framework shows this same behavior, does anyone have a way of aborting actor framework (actors) when you forget to send the stop message? ~Jon
- 10 replies
-
- asynchronous
- call and forget
-
(and 3 more)
Tagged with:
-
Un-abortable from VI Server: Start Asynchronous Call Prepare to call and forget 0x80 I'm trying to abort call and forget VIs that don't get shutdown properly. I'm launching using 0x80 (call and forget) Problem is, I can't seem to find them in memory using VI server. If I "trick" labview and just start opening a VI by name, and put in the correctly (guessed) clone name i.e. dameon.vi:3 and it just so happens to be the right name I can find it. Why isn't it appearing in all VI's in memory? Is there any way to find clones of a VI through server? Stranger still: the name of the VI when i hover over the abort button is something like dameon.vi:Hostdaemon:ProxyCaller.234908238:3 wtf? how can I abort call and forget VIs problematically? Lastly, I'm aware of Abort.vi which I forget who programmed. I got it off lavag at some point, see attached. ~Jon Oh yeah, even if I get the right clone name from VI server through my educated guess, I still cant abort it problematically with the abort method. Showing the front panel with an invoke node does work however (wtf? why?) I can then hit the abort button on the front panel of the daemon, and it does stop. ~Jon Abort_LV82_v100.zip
- 10 replies
-
- asynchronous
- call and forget
-
(and 3 more)
Tagged with:
-
Interesting, I take it you're not drinking the AF coolaide? The arguement you're making hasn't been my experience, and one of my favorite applications of the AF IS a complicated Subpanel architecture. If I had to knock the AF it would be more for removing compile time type safety on methods than anything else.
-
Hmm, It sounds like you want the parent to have a partial abstract. (that would be C# lingo, where partial means the definition of the implementation of the parent is incomplete, and abstract means it must be overridden; furthermore I've never done this in C# so I'm not even sure if its legal) You'd can (or cannot) complete the parent implementation to match your (now known) override of the abstract implementation, but once you do that you'll have the same interface for all children of that parent (which is what I think you're trying to avoid) ANYWAY In labview, if I wanted to do this, I'd probably use something very similar to the Actor framework where the interface for all methods is itself a class (i.e. the message type) It basically creates an additional abstraction layer. You'll be able to mark a method as must override, and use a common interface class for all of them (which you'd then define a specific type for your override class as well.) ~Jon
-
Good deal, double checking the firewall/Norton. Symantec Endpoint has cause considerable trouble for me before, it probably yanked the connection. Thanks for the insight. ~Jon
-
This is on a TCP write command. I'm getting an error code 62 -- "" Error 62 occurred at an unidentified location Possible reason(s): LabVIEW: Serial port overrun error. ========================= LabVIEW: The system caused the network connection to be aborted. "" This is interface is not being taxed terribly heavily, maybe 1Kb/s on total of 3 sockets for one Ethernet connection, and 3 other ethernet connections with only 1 active socket (pretty slow on these ones.) The bizare thing is that once this occurred, I lost every single socket on the entire computer for about a minute, then the ship righted itself and everything started back up. Any notable easy fixes for this problem? ~Jon
-
Open VI Reference In Tools Menu VI Failing
Jon Kokott replied to GregFreeman's topic in User Interface
Instead of using the "menu launch information.vi" (which I'm totally unfamiliar with/do not have) try using an application (read) property node -> App.MenuLaunchApp to get the calling application reference. I also use App.MenuLaunchVI to get the name of the VI in memory, but you can only open that vi in memory when wiring the application reference from teh app.menulaunchapp. I think that the property node I use is not available by browsing. ok here it is GetActivationVI.vi- 4 replies
-
- tools
- vi reference
-
(and 1 more)
Tagged with:
-
Open VI Reference In Tools Menu VI Failing
Jon Kokott replied to GregFreeman's topic in User Interface
Is the application reference of the open VI reference VI wired with the same application reference it exists in?- 4 replies
-
- tools
- vi reference
-
(and 1 more)
Tagged with:
-
I did this exact thing in Labview 2010. It was super annoying because then a popup would occur during the build saying that the vi had been modified (obviously) which occurred like a half hour into the build. I cant upload files right now, but all I did was modify a string constant with a new date and save it (using Save.Instrument invoke node.) I was pretty careful about closing all the references, but I doubt that is what your problem is.