-
Posts
4,883 -
Joined
-
Days Won
297
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by ShaunR
-
Dynamic UI Elements using HTML & CSS - Thumbnail Grid
ShaunR replied to Ravi Beniwal's topic in User Interface
The LabVIEW UI has sucked for quite a long time now, but If your going to go for HTML and CSS you might as well take it completely out of LabVIEW and make it platform independent. Unfortunately, When it comes to artistic talent, I wasn't even in the building when they were handing it out So as much as I complain about the LV UI, I can't really do any better. The guys/gals that make those interfaces for the coding challenges just blow me away. Any UI in CSS, SVG and HTML that I do takes weeks and looks, at best, mediocre. -
missing banners on the right side of main page
ShaunR replied to jcarmody's topic in Site Feedback & Support
The server had a nervous breakdown because I got to the number 2 spot -
This can be alleviated by using a camera with a shallow depth of field so that the hand is in sharp focus but a few inches back is totally out of focus. He will not be able to do that with a laptop cam however, but he might get away with a webcam with a manual focus ring if he is far enough away.
- 2 replies
-
- 1
-
- image processing
- template matching
-
(and 1 more)
Tagged with:
-
Streaming a little less than 40 MBps with PXIe-8133 controller
ShaunR replied to ChrisClark's topic in Database and File IO
Depends on the drive. SATA 1.5 theoritical max is 150 MB/s, SATA 2 300MB/s and SATA 3 is 600MB/s. I have a NAS box at home that easily does a sustained 60MB/sec over a 1Gb connection (with Jumbo frames). NI PXI racks have pretty crappy hard drives as standard I would benchmark it with these http://zone.ni.com/devzone/cda/epd/p/id/5348 .....then buy a decent one -
Try using the "Mouse Leave" event of the pane? Although your last comment (tooltips display when it doesn't have focus) seems contradictory so that might not be what you are after.
-
Is it possible to determine the operation system programmatically?
ShaunR replied to Reimar's topic in LabVIEW General
Not really using it (in fact I hate the Metro interface so won't be upgrading anytime soon). However I needed to test out IE10 so put it in a VM -
Is it possible to determine the operation system programmatically?
ShaunR replied to Reimar's topic in LabVIEW General
Not that fancy (it's LabVIEW doing the work ) I had a clear out not so long ago, so no. I don't. But I imagine it was something like this: -
No. It doesn't matter. Only that it is an approved vendor (which NI must be otherwise they wouldn't be using LabVIEW). But lets not run before we can walk. Lets get it all working properly first. As I seem to be the only one that suffers from this, I will gradually replace the dependencies and you can decide whether you want to update the main trunk with the branch as and when it happens. I have to do it anyway, but you don't need to.
-
Multiple queues and Reentrant VIs.
ShaunR replied to Kas's topic in Application Design & Architecture
Indeed. In fact. I would let the individual segment downloaders save the pieces, then probably get the download VI to sew them all together in the right order before sending the file name back to the main app. As Asbo says. You don't need to send the actual data back. The segment downloaders only need to send the filename of the segment they downloaded and saved to the Download VI. I think this demonstrates it for you (quick and dirty though it is). Of course with these things there is little error checking and no limitation to the number of spawned sub-processes. But I think you'll get the idea.Some of your VIs were missing so I couldn't use those. But I made it download some URLs using the HTTP VIs instead. Exactly the same idea except instead of passing the HTML back, you will pass a filename. -
Coffee, white, No sugar please
-
That's right (and I have never used any software from LavaG in a commercial application). However, it is much easier to gain approval for a single self contained API than it is for one that relies on another 20 (like the OpenG). The problem with the OpenG stuff is that you want one little VI and you have to get approval for 120. It's easier and quicker to write the bit you need yourself. And no. My re-use libraries are not a problem as I am an approved vendor.
-
Multiple queues and Reentrant VIs.
ShaunR replied to Kas's topic in Application Design & Architecture
That's the key, right there. You're only lacking encapsulation depth at the moment. The thing to remember about queues is that they are a "Many-To-One" paradigm. So you have Many segments to One file and Many Files to One Batch. I would tackle it this way......... Create a "Download File" VI (launched re-entrantly) which you pass all the segments (a list?) that are required for that file to. It, in turn, then launches the individual segment downloads (again re-entrantly) by iterating through the list. The last thing a segment download VI does just before it exits is to post the segment to the Download File vis queue (Which will be named something like Download File.vi:3 i.e the clone name). The "download File" vi receives all the segments (for that one file) and, when it has all of them, reports back to your main app. The main app just sits and waits for completed files to come in. In terms of queues, you only really need the return queues. So the Download File vi creates a queue to receive the segments (using it's clone name) and also has a queue named, say, "~download_files~" that is used to send back to the main app. All the download VI clones share the latter queue. The Download Files VI passes it's clone named queue to each of the segment queues (or you could get fancy and calculate it from the caller) so that they can use it to report back the individual segments to it's parent (the Download VI clone that launched them). -
In theory. Practice and theory are the same. In practice, they are not Historically the openG stuff is generally more performant since a lot of them perform the same functions as are available in LV, just optimised. Of course with the NI grown ones they can have C functions in the exe to do the heavy lifting, but usually they use nodes that run the the UI thread which mitigates any performance gained Saying that. I use the vi.lib getTypeInfo,GetCluster/numeric etc but I haven't bench-marked them since they are "Hobsons Choice" for me.
-
I'm not opposed to that either but I thought Ton was talking about it going into the Lavag Tools Network.. Yeah. Well its got LVPOOP in it so that's not an option.
-
If you can wait until next weekend, I'll replace all the openG stuff so it's a self contained lib. Just a bit busy at the moment finalising the websocket demo, but that will be finished this week.
-
How can Labview connect to a server & deposite a file?
ShaunR replied to Ano Ano's topic in LabVIEW General
Get your IT department to handle all the internet stuff and inserted in a DB. Then just query the DB using the Database Toolkit. You won't have to worry about security, webservers and firewalls or have to maintain webpages, log-ins, registrations etc It will also be fully integrated with your corporate website. Your labview stuff will be safely isolated behind the corporate firewall. -
Well. this is how it works at present. — the string “Hello” as a DBL? Is this NaN, zero, or an error? NaN (after all NAN= Not A Number) What about as an Int32? 0 A timestamp? Like I said. Odd one out since all the other LabVIEW "from Strings" have a default behavior defined (they don't return errors) — for that matter, what about a boolean? Should anything other than ‘true’/‘false' be an error? Any non-‘null'/non-‘false' be true (including the JSON strings “null” and false”)? Or any non ‘true' be false (even the JSON string “true”)? True/False, Yes/No, On/Off 0/>0 are catered for. anything else equates to False., — “1.2Hello” as a DBL? Is this 1.2 or an error? NAN — or just “1.2”, a JSON string, not a JSON numeric? Should we (as we are doing) allow this to be converted to 1.2? 1.2 These — a JSON Object as an Array of DBL? A “Not an array” error, or an array of all the Objects items converted to DBL? — a JSON Scalar as an Array of DBL? Error or a single element array? — a JSON Object as a DBL? Could return the first item, but Objects are unordered, so “first” is a bit problematic. These I see as purely internal representations (lazy typing-only define type when recovered) And what if the User asks for an item by name from: — an Object that doesn’t have that named item? Currently this is no error, but we have a “found” boolean output that is false. — an Array or Scalar? Could be an Error, or just return false for “found”. The default value and a warning? Then for the JSON to Variant function there is: — cluster item name not present in the JSON Object: an error or return the default value The default value and a warning? Personally, I think we should give as much “loose-typing” as possible, but I’m not sure where the line should be drawn for returning errors. I don't think any typing should be contained in the objects at all. Only interpreted when recovered to the best of our ability (as it does at present). Why enforce typing internally when there is none in the Json objects. Type is purely a convenience for wiring up to indicators/controls
-
Timestamp is probably the "odd-one-out" since it can't be interpreted any other way apart from as a timestamp. All the numerics are currently coerced (and output default if coercion fails-NaN for doubles, 0 for others). If the input type is a String Array then the ouput is an array of one literal. Are you suggesting that if the JSON stream has a double and an Int is requested then it should throw an error? I'm not sure I'd find that very useful (probably more of a pain in the backside) and if I wanted a U8 from an U64 (say to get rid of a coercion dot) then I would have to convert it manually.
-
Not throwing an error makes it quite hard to find out what the problem is in even moderately sized streams. However. I'm of the opinion that it should at least try a best guess and raise a warning (preferably identifying where in the stream). Errors are a two edged sword since you can end up halting your program just because someone left off a quote (we are heavily reliant on quotes being in the right place). I'm just waiting for Ton to give me a login the the repo since I've implemented the decoding of escaped chars (not unicode I might add-we need to think about that). It doesn't work for your modified JSON_Double[array] though, since it is utilised in the Get Item By Name rather than Get Text. I have, however, made it a VI so you can put it where you think best.
-
The reason is credit where credit is due. If someone wants to use some software and not even give the author credit for it (or even pretend they wrote it themselves). Then they really don't deserve to use the software. You are obviously trying very hard to find a way through, but the real question to ask is "what is it about the Apache licence that allows NI to use software under that licence?". The Apache licence has far more restrictions than BSD (including attribution). However, I think it is more a case of will than law or technicalities which is the stumbling block. And without a corporate lobotomy, that's gong to be hard to overcome.
-
I've already implemented the removal of quotes. The only escaped chars that I know "must" be escaped are unicode strings and I'm not sure what to do about that with LabVIEW not supporting Unicode without using OS dependent code.