Jump to content

asbo

Members
  • Posts

    1,256
  • Joined

  • Last visited

  • Days Won

    29

Posts posted by asbo

  1. I’ve done some (limited) testing of sending objects over the network (not Lapdog, but very similar), and the only concern I had was the somewhat verbose nature of flattened objects. I used the OpenG Zip tools to compress my larger messages and that worked quite well.

    Out of curiosity, what kind of throughput do you see? How big (generally) are your payloads?

  2. I never noticed the Defer Drawing before, but I have an educated guess as to its purpose - the FP has a defer updates property which is useful when you want to make a lot of updates in sequence, but have them appear as a single update, either for speed or for elegance. I'm assuming this is a parallel property which was designed for scripting - if you want to make a lot of scripting operations, you don't want to waste time on drawing all the intermediate steps.

    Hmm. I would if it could be made useful in a production application? The only possibility I can come up with is if you have multiple UIs and are too lazy to defer each individually.

  3. True, actually I would far rather trawl through the Quake source code before LabVIEWs!

    Have you seen the Quake 3 Source Code Review articles? There's some very interesting stuff in there. He also has articles on loads of other id software.

    Well I mentioned meanders before. Can't find an english wikipedia entry so here it goes in German. And then specifically the second line in the big picture.

    The English version of that article is not nearly as well fleshed-out.

  4. for an abortable wait loop, I just use a notifier as the loop timer. I set the timeout so that it will time out at the correct point in time. Then I can abort it early by sending a notification.

    I'm sure other people have other ways of doing this, but I've found it works for me and seems fairly clean to me. YMMV

    The obvious step further with this is an event structure, but that's only necessary if you need to respond to a variety of events, user input, and so on. The notifier method is clean and simple if you only have one source of interrupt.

  5. Easy answer: instead of calling Quit LabVIEW, use System Exec to run "taskkill /f {appname}.exe".

    Hard answer: break down all of the technologies (DAQ, TCP, Shared Variables, etc) you use and figure out which one isn't shutting down properly. You failed to mentioned the version of LabVIEW you're using but I'll assume it's LV2011. Try turning off SSE2 optimizations in your build.

    • Like 1
  6. Added later: I had a look at ShaunR’s “SQLite_Speed Example.vi” which INSERTs pairs of strings: he can INSERT 100,000 in 0.36 seconds, half my time. So perhaps I will look into statically specifying the library. Wish I could specify it in one place, though. One thing a User might want to do is have a different SQLite3 version (compiled with different options, for example) for different applications, and statically specifying the library for each CLN makes that problematic. Is there any way to specify the path at runtime, but do it only once? Or at compile time, but specify it in only one place?

    There isn't a way to re-bind CLNs that I know of (there might be a scripting method, but...). If you configure the CLNs with a specific (e.g., ".\bin\sqlite.dll") that gives developers the opportunity to replace it on disk with which version they prefer. Personally, I do not see value in being able to wire in the path of a DLL to use. If you have to programmatically determine what version of a library to use...

    Do CLNs load their library at load-time or run-time? If it's the later (I believe it is), then you have up until the first CLN call to programmatically copy a different DLL to your relative location. In dealing with an oversight I found in the lvsound2 library recently, I was experimenting with forcing a DLL to unload unilaterally. Unfortunately, it does not seem this is possible. With that in mind, if there are a subset of specific functions (e.g. sqlite_version()) which might need to be called as part of the logic to figure out which library to use, it would be wise to wrap that in a dynamically called VI so that the DLL does not attempt to stay resident.

  7. As a general warning to anyone interested, I guarantee you'll be able to crash LabVIEW with these, so you're nuts if you even think about using this stuff in production code. A few issues I know of:

    1) The compiler gets confused when you stack them deeply as subVIs. Not sure why.

    2) If you copy your VIs to a new machine where they've never been loaded before, your load time goes through the roof for first load, so much so that most people might believe LV is hung and kill it.

    3) These VIs do not play nicely with recursion.

    It's a very cool toy, but like Yair mentioned the experiment is essentially over. I'd love to see a stable replacement for this kind of concept (think of the possibilities for reuse...).

  8. Believe me, you do not want to thinker with that. It's deep in the DCOM internas and after a few more hours debugging through disassembly even into the Windows interna I've figured it out. It was a combination of comctrl32 side-by-side assembly versioning and DCOM marshalling because of apartment threading limitations.caused by the fact that DCOM is still based on OLE and it's Windows 3.1 heritage. So I am now able to get some thumbbar buttons to draw and even return user events to LabVIEW. I'm going to do a little more cleanup and will then post the VI library.

    I'm sure I've said this before, but I am seriously jealous of your low-level knowledge, particularly of the Windows operating system. Bravo, I look forward to seeing the library. :)

    I agree that the taskbar interface is so marginally useful that I would actually be disappointed if NI wasted any time on it. There are so many things that would be better served with developer time. If you want some examples, just scroll through the top kudos'd ideas on the Idea Exchange. However, if you really do think it's that valuable, you should add it and see if you can garner support for it.

    • Like 1
×
×
  • Create New...

Important Information

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