-
Posts
4,935 -
Joined
-
Days Won
302
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by ShaunR
-
I'm nothing if not consistent. I have a first in, first out memory with limited buffer. I guess the buffer has reduced to less than 2 years in my old age. Not long now before I'm yelling at clouds, I guess.
-
Ok. Sweet. I get the same now. I tried it on some other functions that I thought might benefit but it turned out that the majority of the overheads were elsewhere. Is that feature sticky in that if it is set during design time it stays with the VI when loaded on a LabVIEW install without the ini settings?
-
Interesting. I only see a difference when Error checking is Max. Default and None produce no changes. I assume that's what you mean by "without the wrapper function"?
-
Well. just to be argumentative.... It is <almost> entirely equivalent. A type cast is used in AQ's original to convert between formats initially and assumes a particular memory format such that when the reverse is operated, it produces the expected result (consistent memory topology). Memcopy, of course, won't work with the LabVIEW type cast since the expected memory formats are different (and would be different on different endian machines and not portable). There are also a lot more checks and an allocation with the type cast, naturally. I suspect the performance boost that AQ sees by converting to a string first is to do with bypassing byte swapping-perhaps he can tell us in intricate detail why it is faster converting to a string first. The memcopy is doing a lot less work because the array initialisation is outside of the timing and a fixed size. You can move the array initialisation into the timing area to create the buffer on-the-fly at the cost of performance in order to generalise but it is still slightly faster. If then you check the length and allocate that amount on-the-fly, then you end up with a similar performance to the tostring trick, sans protection. Most of the differences will be to do with compiler optimisations. The take-away is that the type cast (rather than memcopy) won't crash labVIEW if you get it wrong, is portable and poke-yoke. Use it.
-
Doh. that's what happens when there are several different VI's with the same name. Should be fine now (and neater).
-
Done.
-
I modified AQ's test to include moveblock so we can see. array-typecast-benchmark.vi
-
TCP Listener: can it fail?
ShaunR replied to drjdpowell's topic in Remote Control, Monitoring and the Internet
Indeed....but! We are looking at a 0.1% case so it's things like this we have to bear in mind. Error messages not being reported. My money is on it being used. You are probably in the 0.00001% of LabVIEW programmers that don't use it. -
TCP Listener: can it fail?
ShaunR replied to drjdpowell's topic in Remote Control, Monitoring and the Internet
Without knowing what the problem (error) is with the underlying socket, you are on a hiding to nothing. The fact it is rare and affects other software points to a hardware or OS issue, not your code (except that your code doesn't report an error). That doesn't mean to say other software or the OS isn't responsible for crowbarring the socket underneath you but you need errors to figure out what is happening and what the state of the socket is when it fails. Another technical detail. The LabVIEW Listener uses SO_EXCLUSIVEADDRUSE and assumes it has sole ownership of the socket. It then uses the "Internecine Avoider" to choose ports. If no net address is defined it binds to all network adapters. Does the device have multiple network interfaces? What is the OS? -
TCP Listener: can it fail?
ShaunR replied to drjdpowell's topic in Remote Control, Monitoring and the Internet
What's the error? -
I'll preface this with "I have never used that software" and I don't know of any standard fixes. I would be putting on my Sherlock Holmes hat and taking a big toke on the Meerschaum. Maybe someone else has a standard fix but this is how I would approach it... First I would check that the new server.key and certificate format is the same as the old one (probably PEM but just could easily be DER). It's easily done just by opening in a text editor. Jibberish is DER. PEM is "-----BEGIN CERTIFICATE----" (maybe this software only supports one format). Same for the private key - which would be gibberish or something like "-----BEGIN RSA PRIVATE KEY-----". Then I'd create a self-signed certicate and load that with it's key to see if the software had the same complaint. Then I would be taking a closer look at the new certificate and the old one and see what's different about the new one - paying particular attention to the type of Public Key, the Key Extensions and the signing method. (if there is no TLS Webserver Then I would check that the public key of my private key matches that in the certificate. The above would mainly be to verify that the certificate is indeed for the key I think it is for, and that the private key is the same/similar type to that which was used previously. If they are not the same type then I would generate a self signed certificate with the new type and see if I again get the error. Note that this is before we get to what the CA has done so buckle up or use some other software Here is googles cert and what I'd be looking at on the first pass.
-
Start here and then Google specifics. Good luck Generally though, you choose a licence and then mark the software as being covered by that licence (about box, licence file, etc) . Commercial offerings a bit harder though since you need to stop people using it if they have not bought a licence. Two ways you can look at it. A single piece of software that the user can choose from multiple licences (hard) or multiple, discrete, pieces of software have their own licence (easy). Non commercial is easy-just distribute a licence with the product. Commercial is harder-you need to cripple the software somehow when distributed and only become fully featured after a licence is purchased. You can either go it alone (web page and download) or via NI who have a couple of options. You would need to contact NI since they recently changed their sales model so I don't know what they are offering now, Depends on the licence-there are many. Not that I'm aware of. VIPM is an installer and distribution platform. If it's a commercial product then you will also need to look into the Third Party Licensing and Activation toolkit If you want a completely managed sales solution then speak with NI.
-
All of the synchronisation primitives use occurrences under the hood. Occurrences are the most efficient but hardest to use since they don't carry any data. On a side note (and people will hate/flame/badger me for this). If you have a write one and read many architecture then the most efficient for task switching is a global variable (but memory suffers).
-
It's been a very long time since I did any real-time stuff but If I'm reading your charts right... The Linux nisysapi-mDNS is a bottleneck? Is that due to your code looking up addresses or an artifact of the system in general? I also noticed the variable publisher in your first image. Are you using network variables?
-
The hardest to figure out will be booleans which in JSON can be true, false or NULL. While you can get away with converting null to NAN for output to LabVIEW, be aware that NAN is specifically excluded for encoding as a numeric. RFC4627 section 2.4
-
-
Let’s make Machine Learning easy with scikit-learn on LabVIEW
ShaunR replied to Youssef Menjour's topic in LabVIEW General
Then you might want to take a look at Express VI's. There is an Express palette where many of the acquisition and signal analysis fundamental uses are available so that you can see how they operate. You would be able to create create VI's that operate like your marketing guys portray. The user could then configure each node in a pop-up design-time dialogue. Express VI's are for novice users and those that have minimal programming expertise who you seem to be targeting.- 16 replies
-
- labview
- machine learning
-
(and 3 more)
Tagged with:
-
Let’s make Machine Learning easy with scikit-learn on LabVIEW
ShaunR replied to Youssef Menjour's topic in LabVIEW General
Is that some marketing guy's idea of what it would probably look like to use or do you actually have that interface?- 16 replies
-
- labview
- machine learning
-
(and 3 more)
Tagged with:
-