-
Posts
5,006 -
Joined
-
Days Won
312
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by ShaunR
-
Nice! . Does it ignore the terminating char because of the data type? That's a something to be aware of.. I think there is a bug in the original code since "Swapped" and "Little Endian" are the same. However. From experience "swapped" is the following and not supported by the primitive.: I forget now. But the flatten is quite an expensive operation on large data. Is there a performance consideration between the two approaches?
-
They are not the source of your memory leak. The query could be tidied up a bit but with VISA there aren't many options. A slight change with a small advantage would be to build the concatenation at the loop edge (array of strings) then convert to a single string with the bulld string primitive. Real gains can only be made with fixed size buffers and replace elements but then you need all the ancillory capabilities like setting the size of the buffer and the different modes of operation like with the TCPIP primitives to make it generic. I'd leave it alone if it's working. Optimizing the second one is a no brainer, though. Since I don't know what the licence is for the Keithly Vis, I'll just show the alternative solution rather than post the VI.
-
I haven't done much recently with these targets so can't contribute much. But!..... I wanted the project manager to be able to nest projects several years ago. That would solve this problem and enable developers to work and test on separate projects in parallel and pull them together as sub components much more easily-which is why I wanted it. So rather than being a separate target within the project. It would be separate project completely that you could add to another project. Every other IDE has this capability.
-
Tongue in cheek..(What? No likes Transport.lvlib You think too much Too many engineers have their sense of humour beaten out of them by unrealistic marketing requirements and customer demands. Post and be damned My current favourite is: Linux is Windows 95 without the GUI.
-
The best thing I like about *any* jokes is you get more likes than if you answer questions ( ͡~ ͜ʖ ͡~)
-
None of the NI products can navigate proxies properly-even transparent ones. I have to connect directly if I want to use any of their download/upload features (updates, the toolkit down loaders, NIER, et al.),
-
Likewise to all above. huge +1 thanks for taking the videos and distrinuting them for us.
-
CRIO-style architecture for Raspberry Pi
ShaunR replied to dmurray's topic in LabVIEW Community Edition
Well. This is do far off-topic I can't even remember the OPs questions Maybe Hooovahh can move this and the rest to another thread.? -
I don't know if the concatenating tunnel is more efficient. I thought it was just syntactic sugar. Anyway. You could back-save to 2011 and avoid everyone else from asking for it in an older version . You don't have to develop in the old version. The caveat would be if you wanted to use native primitives (like the parser in 2013).
-
Why? 2011 works in all versions up to and including 2016
-
CRIO-style architecture for Raspberry Pi
ShaunR replied to dmurray's topic in LabVIEW Community Edition
Basically. If you try and use events in "Event Driven" languages, the same way you use them in LabVIEW for 1:1. Everything falls over because the assumptions about the underlying mechanisms are incorrect. I think architectures should be language agnostic. -
Yeah. They're not very robust. Try clearing your object cache.
-
Stale VI Server Connections
ShaunR replied to John Lokanis's topic in Remote Control, Monitoring and the Internet
If IT have said that a keep-alive will work, then that is the proper solution and you should be trouble free from then on. Checking every 55 minutes because they said the idle timeout is one hour is just asking for it to fall over in 6 months when someone in IT decides 45 minutes would be better -
Stale VI Server Connections
ShaunR replied to John Lokanis's topic in Remote Control, Monitoring and the Internet
You can get these symptoms if there is a proxy between you and the target. What tends to happen is the connection between you and the proxy is kept alive but the connection to the endpoint from the proxy closes due to inactivity. This means your connection looks good but the tunnel fails when you try to use it. The easiset solution is to heartbeat the connection. -
LVA-Tools.Co.Uk is having a Post NI Week Bonanza with 40% off all commercial toolkits.. Offer is available for one week so grab the opportunity to secure your business data and websocket that application.
-
Approach for watchdog timers?
ShaunR replied to dmurray's topic in Application Design & Architecture
I don't know much about that module but if it has that capability then yes. you could do that. Most NI modules are quite expensive and now you would have a hardware module dependency for just a watchdog. Most Linux kernels have a watchdog feature if the hardware supports it so I would look into that first. If that's not possible, cost is an issue and it is likely just your application that will hang rather than the OS; then you can spawn a separate process to act as the watchdog. -
Approach for watchdog timers?
ShaunR replied to dmurray's topic in Application Design & Architecture
Watchdogs usually give you the option to restart the software if it stops responding and are usually hardware driven. If you have a software one, the chances are your watchdog will hang too so you need an external process that gets kicked every so often. This external app can then forcefully close the application and restart it. You can communicate with the watchdog via TCPIP or sharedmem and just message it every so often from a dedicated loop in the software -
Yes.When mapping LabVIEW variables to other languages then you tend to need "tags" and I can see why the CVT is probably the best solution here. You can define a tag name and use the name in JavaScript to update the UI. You can play around with spamming get requests and consolidating messages into larger update messages but the CVT would be simpler, easier and require less framework. I do the same for websockets but am able to generate events from the LabVIEW UI changing so the tags are implicit in the control/indicator names. Of course. That wouldn't work on a cRIO with no UI. Do the latest ones with a UI support UI events? DCAF. Yes.
-
How to turn off diagram dancing in LV2016
ShaunR replied to ShaunR's topic in Development Environment (IDE)
So now you want me to learn how to make shortcuts I don't use as well? The list goes on.... Next you'll be telling me to learn to type with all my fingers Do people still use Google? -
How to turn off diagram dancing in LV2016
ShaunR replied to ShaunR's topic in Development Environment (IDE)
It's not that I don't like it. It's that it's not useful to me. I don't know what the primitives are called but I know exactly where they are in the menus-IT'S A VISUAL LANGUAGE! I call this "The Chooser", for example. I'd have to open LabVIEW and mouse over it to find out what it's actually called (and then I'd immediately forget). Words is hard! Beta testing isn't a focus group That's the idea exchange. It must be hard coded because it only effects the TCPIP pimitives - not networks streams etc. This is a deal breaker for me and for what? Because "Select" on *nix systems only supports 1024?. On Linux they have gotten around it by using poll and epoll so why not upgrade the *nix platform to more than 1024 instead of downgrading Windows? On Linux you just simply recompile, right? This the worst type of specmanship -
CRIO-style architecture for Raspberry Pi
ShaunR replied to dmurray's topic in LabVIEW Community Edition
Right. So you are filtering on the receiver. There is nothing wrong with anything you are saying but there are three four things that make a clear case for one or the other in the 1:1 cases you describe (in my architectures): Events cannot be referenced by name. For me this is a problem since my messaging system is string based (Like SCPI). The routing is based on module names so this rules our events for command/control queues. This is why I invented named events when I found out about the VIM. I can have more control. I can make the queue lossy (rate limit for comms) or flush them (abort) and I can insert exit messages at the front. You will probably come back and say that's what you want from Events too.but you already have that if you are just going to use an event as a queue with a case statement. You can't "lazy load" events. With a queue I can start up the main and poke some values on to it. Whenever the sub modules start up, they are still there when they come to read their queue. Events don't do this so you end up having to detect when a module is loaded and then send it a message. (External state again) It's not portable.It is using tribal knowledge of a specific implementation of events. It is more of an abuse of events knowing they have a queue in the LabVIEW implementation so the architecture will not work in the other, true event driven language,s that I also program in (Free Pascal for example). -
CRIO-style architecture for Raspberry Pi
ShaunR replied to dmurray's topic in LabVIEW Community Edition
It's actually very straight forward. The main VI pokes the servers to do things and the listeners react to the responses from the servers. Each server and listener is an API with a pre-defined set of actions and commands. They all follow the same template.Keep adding APIs (services and listeners).and keep poking them to do things Each subsytem is standalone (modular) so you can take one; analyse it then run it and test it in isolation meaning you can break down even really complex systems in easily digestible chunks.. Don;t forget to run the TCPIP client first so you can see the Telemetry that hooks all the messages
