-
Posts
4,883 -
Joined
-
Days Won
297
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by ShaunR
-
For the same reason any sane person will only update LabVIEW when SP1 is released - project risk.
-
This is probably because it was built with the 2014 VI package manager. You have to install the VI Package Manager 2014 to install packages built with 2014.
-
MaidSafe is an Interesting and innovative open source development in peer to peer distributed storage and network data access. I know the thread title is a big claim, but this technology has the potential to be paradigm shifting and it only requires people to use it. (I'm just trying to figure out how to install it on my NAS ) I laugh at your DropBox. .
-
Create a pull right menu for LVOOP Classes property nodes
ShaunR replied to Reds27's topic in Object-Oriented Programming
This also works for the drop down menu of polymorphic VIs.- 2 replies
-
- 1
-
- property node
- pull right
-
(and 2 more)
Tagged with:
-
How to combine NI Vision and Raspberry Pi Camera?
ShaunR replied to Thang Nguyen's topic in LabVIEW Community Edition
Can't edit it (not sure what happened) but will try again Raspberry Pi IP Camera It's really a question for Raspberry Pi forums though. -
How to combine NI Vision and Raspberry Pi Camera?
ShaunR replied to Thang Nguyen's topic in LabVIEW Community Edition
NI software doesn't run on Raspberry Pi but it's fairly easy to set up an IP camera with the motion service. -
There is an addon toolkit for SSH.
-
It's an interesting solution to a problem I have never seen. Whilst I would agree it's better than introducing arbitrary bugs, I just wonder how effective it will be when SCC is used as you may end up with it just as big a pain as the merge tool and phantom recompiles.
-
I assume those statements were under the beta forums? I was just saying that trivialising the support for 64 bit was a bit harsh just because it is of no use to you in windows where we have had it for yonks. If you have ever worked with large datasets (grandma egg sucking I expect), you will be aware of the importance of 64 bit and now NI have spent the considerable energy to port to the other 64 bit platforms which were the withered limbs of the LabVIEW platform support. Personally, nothing, IDE or feature-wise, has convinced me of moving from 2009 in all the versions let alone 2014 so It's no change there for me. Even though I produce tools in later versions, they are still developed in 2009 (64 bit, at that) and just packaged in later versions due to 3rd party support requirements. I think, however, a huge amount of kudos should go to NI for expanding the 64 bit platforms and making LV a truly x-platform solution even if the best thing to crow about under windows is a new icon.
-
I think that's a bit harsh. Mac and Linux 64 bit support is probably the biggest change in LV since 2009. I would agree with you (and have often stated similar) with releases from 2009-2013, and might even go so far as to say 2009-2013 it has only really been cosmetic changes but 64 bit platform support across the board is a phenomenal step forward that would have required a huge investment in time and skills.
-
-
I think you read the words, but didn't understand the content. My writing style can seem adversarial sometimes but it is usually with the genuine intent to help or, in this case, stop you going off on a unicorn hunt.The point I'm trying to get across is you are chasing a unicorn and only because the solution must be LV classes. If you drop that requirement, it's just an ordinary horse and we have loads of them. A better heading would have been. "How do I reconstitute a LV object from a string sent over a network like I can in Python, Javascript or PHP". That would have got you the unanimous response of "You can't!" and is the reason why your "decoupling" search will ultimately be a dead end when using classes. Anyway. I said my bit. I've clarified and re-clarified and so its time for me to shut up with a final apology for coming across as "pushy".
-
Not true. No assumptions, just pure string messages and an example of how it can work based on your own description (DB, XML, Queues, Events, Classes - it doesn't matter because it is decoupled). And I've already told you how to decouple the classes - serialise to strings - but you don't like that answer When you insist on only using a hammer; everything looks like a nail so don't jump down my throat because a screw bends when you try to hammer it into concrete and I explain why and easier alternatives using a screwdriver.
-
He'd be having kittens with this then. Call_Back.zip
-
Hmmm. So let me get this right. You have taken an implementation agnostic storage mechanism (a DB), queried it and stuffed it into an implementation and language specific set of classes which you then wish to transmit to another set of language and implementation specific classes that may or may not be the same and now want to break the enforced cohesion due to using the aforesaid classes?. Why have you not just sent the SQL queries instead of faffing around with LV classes (a bit bit like this) and leave the client to figure out how it wants to display it (basically just as string indicators-use the DB to strip type) If you have a DB in the mix, then you can always craft SQL queries for the data and prepend instructions for functional operations. If you want to wrap all that formatting into message classes; fine. Like I said, encoding is tedious, but for decoding, the fact you cannot dynamically instantiate a class in LabVIEW and strict typing will ensure you cannot write a generic decoder (which is what AQs discombobulator thingy attempts to address). Using message classes for this type of thing is exactly what I was saying about straight jacketing and not using a class messaging system will be quicker smaller and easier to maintain and extend. In fact, in this instance, as you are using a DB you will find that you will be able to extend it sometimes without writing any LV code - just changing and expanding the string messages via a file or via the client as the server acts just as a message parser.
-
Use strings (the ultimate variant) and you won't have any problems either crossing the network boundary or language implementation. Don't straight jacket yourself with LabVIEW classes which are tedious for encoding and completely rubbish for decoding.
-
Moving from Action Engines to Classes
ShaunR replied to abrink's topic in Application Design & Architecture
Sure. Readability is good, IF there is no penalty. Unfortunately, this is the reason why LVOOP projects take hours to compile. But it doesn't necessarily improve readability. Most of the time it's just boiler-plate code with a trivial difference multiplied by the number of children. It is the equivalent in other languages of having a file for every function and you'd be shot if you did that.- 8 replies
-
- 1
-
- action engine
- application design
-
(and 1 more)
Tagged with:
-
Moving from Action Engines to Classes
ShaunR replied to abrink's topic in Application Design & Architecture
You don't need to duplicate the code. Just pass in the address to talk to Keithley A and Keithley B or, if it is already a "process", make it a Clone VI and launch an instance with the appropriate address.. If you switch to Classes, the methods will still be all very similar, only you will be forced to make each one atomic. Classes are very similar to polymorphic VIs in how they are constructed so if you have a VI with a couple of operations in a case statement (Set VISA/Get VISA, say) then you will have to make each one a separate VI, not only for that Class, but any overrides too. This is why classes bloat code exponentially and there has to be very good reasons (IMO) to consider them in the first place let alone if you already have a very adequate working system..- 8 replies
-
- 1
-
- action engine
- application design
-
(and 1 more)
Tagged with:
-
How do you organize your code reuse repository
ShaunR replied to doradorachan's topic in LabVIEW General
Installers are probably the worst option for toolkits/reusable code within a company. Sure if you are going to distribute to third parties it warrants the extra effort, but internally it just adds more overhead for pretty much everything (coding, testing and documentation) as well as causing all sorts of problems with version control. It has few, if any, benefits. A far superior solution (and generally free) is to use your favourite flavour of source code control for distribution from a central server. It does come with some caveats, but it is infinitely better and more flexible than installers. -
A surprising result, although I am suspicious of you equating CPU utilisation with throughput performnance
-
I was not aware of this function either (still using 2009 whenever I can ), How big are your images? This is how I would approach it. It is the way I have always, with high speed acquisition and have never found a better way even with all the new fangled stuff. The hardware gets faster, but the software gets slower Once you have grabbed the data, immediately delete the DVR. The output of the Delete DVR primitive will give you the data and the sub process will be able to go on to acquire the next without waiting. The data from the Delete DVR you copy/wire into a Global Variable (ooooh, shock horror) which is your application buffer that your file and UI can just read when they need to. This is the old fashioned "Global Variable Data Pool" and is the most efficient method (in LabVIEW) of sharing data between multiple process and perfectly safe from race conditions AS LONG AS THERE IS ONLY ONE WRITER. You may need a small message (Acquired-I would suggest the error cluster as the contents) just to tell anyone that wants to know that new data has arrived (mainly for your file process. Your UI can just Poll the Global every N ms). The process here is that you only have one, deterministic, data copy that affects the acquisition (time to use those Preferred Execution Systems ; ) ) and you have the THE most efficient method of sharing the data (bar none) but - and this is a BIG but - your TDMS writing has to be faster than your acquisition otherwise you will lose frames in the file.You will never run out of memory,or get performance degradation because of buffers filling up, though, and you can mitigate data loss a bit by again buffering the data in a queue (the TDMS write side, not the acquisition) if you know the consumer will eventually catch up or you want to save bigger chunks than are being acquired. However, if the real issue is that your producer is faster than your consumer; that is always a losing hand and if it's a choice between memory meltdown or losing frames, the latter wins every time unless you are prepared to throw hardware at it... I've used the above technique to stream data using TDMS at over 400MB/sec on a PXI rack without losses (I didn't get to use the latest PXI chassis at the time that could theoretically do more than 700MB/sec ).. The main software bottle-neck was event message flooding (next was memory throughput, but you have no control over that) and the only way you can mitigate it is by increasing the amount you acquire in one go (reduce the message rate) which looks much, much easier with this function.
-
Description or fact? .
-
How would you introduce LabVIEW to a group of Text-Based Programmers
ShaunR replied to cvanvlack's topic in LAVA Lounge
I wouldn't. It's LabVIEWs weakest domain and there are far better tools out there that they will already be familiar with, which LabVIEW can't touch. Worse than that, though is that Webservices only run on Windows and I will guarantee 99% of their work is on Linux web servers using Apache and to a lesser extent, Nginx. There is not a lot you can answer to "how do I integrate LabVIEW with our Apache server?". However. You can gloss over all that, just don't "demonstrate" web servers/ apps! Instead you can show them one of LabVIEWs strengths (such as Vision),and say "we can also make it available on the web" -TADA! (without going into how, too much ). -
Have you tried just updating only the visible areas (I expect 200 columns is not all presentable on screen at one time). MJE demonstrated a Virtual MCL that mitigates the performance impact of cell formatting of large data-sets and the Table control has a similar API. I also understand that the performance of these controls was vastly improved in LV2013.
- 7 replies
-
- property node
- optimize
-
(and 1 more)
Tagged with: