-
Posts
4,912 -
Joined
-
Days Won
301
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by ShaunR
-
That was the best presentation content I've seen from NI for many-a-year. Cheekily mentioned (almost under his breath) he'd found a way to use the Match Pattern to replace Regex. I too use Match Pattern instead of regex because it beats the hell out of it for performance but it's never as generic as the regex. I need to know more (with code). Never liked (or used) the Error Constant ( or AF for that matter). Never used PPL's either but I do use lvlibs with the VI's in an LLB - mainly for ease of distribution rather than load performance. The single execution while loop to force clumping was an eye opener. I've never suffered from that but that's gone in my long term must-know memory. Xnodes were always too complicated for me so never used them. Interesting he didn't mention XControls. VIM's I liked until they formalised it and then they did not propagate the type downstream (so I couldn't make my "named events"). So don't make any of those anymore. I agree with his view of text vs VI's. But not for the same reasons. I'm a huge fan of polymorphic VI's with a menu, for example. However. I can read a diagram of VI's I am familiar with (and with good icons) in one glance but I'm not a speed reader. He just doesn't seem to like doing icons whereas I find it a cathartic distraction when stuck on a problem. My obstinate work flow and dumb preferences seem to insulate me from a lot of the issues that others find.
-
Yes. NILM cannot create the icence file. But TPLAT can (standard only). If you change the" licencing tool" to TPLAT instead of NILM for #3, then you have what everyone else had before they invented NILM and their subscription model without requiring Protection Plus (using the NI Licence Server under #3 Account).
-
You don't need that. That is the API that you could create TPLAT with. This is the basic procedure Create a product definition (Using LFEdit or via the Softwarekey web page). Create a licence file for the product (Using LFEdit). Apply the licence to the lvlib (Using TPLAT in advanced mode. This will give you a Licenced version of your code.) Point VIPM to the licence when you build the distribution (If you have the full VIPM, it can also apply it instead of using TPLAT above). This is the full licencing process (excluding the VIPM). You can also buy the licensing server from Softwarekey for installation on your own network, if you want everything in-house rather than using theirs (or NI's)
-
In what way does it not work?
-
This is the process for adding licencing to addons. You only need "Protection PLUS 5 SDK" if you want Advanced licencing features or your own SOLO server. The licence file (*.lf) created by TPLAT can only create a licence for "Standard" and you cannot change the SOLO server location (NI's SOLO server). In advanced mode you can choose a pre-created licence file (created with LFEdit from the Protection PLUS 5 SDK) which can have a different SOLO Server URL and more advanced features. What happens if you click on the "New to Solo Server" on the TPLAT dialogue? Is there no link to sign up? (I don't have TPLAT installed for 2022 at present).
-
Set Menu Item Info - How to make the Shortcut menu input a no-op?
ShaunR replied to bjustice's topic in LabVIEW General
It can. This is how you clear a shortcut if one was set. -
Set Menu Item Info - How to make the Shortcut menu input a no-op?
ShaunR replied to bjustice's topic in LabVIEW General
It cannot function identically since YOU CAN NOT HAVE SHORTCUTS ON POPUP MENU'S. You can argue that maybe it should morph to hide the connector but then you're just as likely to have people scratching their head when using menu's. With this behaviour you get an explicit error telling you " Run-time menu shortcuts are not supported for this type of menu.". Remember. This is a run-time check, not a design time check. You get the same behaviour if you try to operate a function on an invalid type after coercion to a more specific type. -
Set Menu Item Info - How to make the Shortcut menu input a no-op?
ShaunR replied to bjustice's topic in LabVIEW General
If you wire a keyboard shortcut cluster to a popup menu it gives you an error stating that it is the incorrect type. That's correct. You can only have keyboard shortcuts on main menu refnums. The alternative is to have separate primitives for main menu's and pop-up menu's-one with a shortcut terminal and one without. We can recreate the same behaviour with xnodes where we can detect if anything is connected and it's type with abilities. -
Set Menu Item Info - How to make the Shortcut menu input a no-op?
ShaunR replied to bjustice's topic in LabVIEW General
Only main menu's can have keyboard shortcuts and yes. LabVIEW can tell if something is wired to a connector. It's how polymorphism works and why you get a broken run arrow for required terminals if you don't connect them. -
Yes. I think it was the Studio Bods one I was thinking of. Looking at it now it seems to be geared towards executables and not sure if it will suffice for source code.
-
As long as it's only the app that has stopped responding you could also use the NI Webserver RPC feature to call a separate vi that reboots the machine (if that is still a thing after NXG). I'm not sure it's possible to install on a PharLap target but with SSH you can easily reboot a remote machine.
-
Interesting. This is could be due to their new subscription method. It might be worth finding out whether that is the case as there will be other caveats like you need to maintain a subscription Indeed. I vaguely remember a third party that was offering an alternative solution that was implicitly geared towards LabVIEW and used the TPLAT. But I can't remember who it was or how it worked.
-
The toolkit will lock the libraries and produce a licence file which you can browse to and select in VIPM. NI have a SoftwareKey Server that they use for Tools Network offerings but you can buy and install your own from SoftwareKey.
-
Is it reentrant?
-
Crash computeur => erase my configs files
ShaunR replied to Francois Aujard's topic in LabVIEW General
I've only seen those sort of frequencies of corruption if the files are on a network drive. -
Ditto what Rolf said. If you want a class that handles arrays of objects then take a look at List.
-
How deep is you inheritance tree?
ShaunR replied to Antoine Chalons's topic in Object-Oriented Programming
I don't really use classes for the intended purposes. I mainly use them as a variable cluster local to the instance when I need to keep track of state (sessions, stateful protocols et. al.). On the rare occasions I have used them for the intended purposes it has never gone beyond 2-3 and it's always been more hassle than it's worth, less elegant and incomprehensible build times. -
That's because you have only dumped LV error messages into the DB. LabVIEW error messages are for LabVIEW programmers. Pull the error number out to a field so you can look up your own, different messages. I think what you are struggling with is the difference between application error messages and system error messages. So I would expect an application message something like "Server XXXX is not responding. Unable to connect to server". That is fairly easy as you just override the default LabVIEW message for 63 with a more verbose one. However. They may have left the IP address blank, in which case the application error would be something like "You must enter an IP address". If you let that through to LabVIEW then it will report error 54 "The network address is ill-formed." That may be ok since a blank IP address is, indeed, ill-formed but the former is more explicit. Note that just overriding error 54 with "You must enter an IP address" will have them yelling at you "I did enter it" as It is a context sensitive error. So adding a custom error code for blank fields that should be filled in is advisable and check the field before actioning. That way you can be sure error 54 was an illegal address. That's a rather contrived example but the sort of error guessing and reporting that I try to do (caveat: non programmers) In summary, there are application specific errors. A production line operator should only be expected to resolve two types of errors - they didn't enter something they should have or they entered an illegal value. Outside of that it depends on training and remit. If there is training then you should also add the training manual page and section to which the error refers. This will cut down a lot of the "didn't read it" responses as they are expected to refer to the manual to resolve the issue and the manual will contain far more information than an error dialogue and what to do about it. If they can't give you the page number and section then they have not followed procedure and you can chew them out. If they have referred to the manual then you know the common resolutions have already been tried.
-
You are not using SQLite for this? Not only can you have multiple messages based on required verbosity but you can have fine grained segregation based on type (information, debug, Critical, Warning etc) and user (Operator, Technician, Maintenance etc). Additionally you can have language translations.
-
Considering COBOL is over 60 years old, I think most experts have long since retired and most of the US government runs on COBOL. Just a quick and dirty example from one site...
-
Too obtuse for my smooth brain. You link to a COBOL forum and imply something but I have no idea what you are implying or it's relevance. Is it a spam post?
-
Event on Colour Change while widget is open, is this possible?
ShaunR replied to Neil Pate's topic in User Interface
The intensity graph is usually an order of magnitude faster for this sort of thing as it has in-built interpolation. Not sure it would particularly easy with the mouse-over circle, though, since you wouldn't be able to draw on it and it would be very difficult to implement non-rectangle colour maps. -
Event on Colour Change while widget is open, is this possible?
ShaunR replied to Neil Pate's topic in User Interface
I disagree. There are other native solutions that won't crash LabVIEW, are cross platform and you could probably make it look much better than the LabVIEW native control. -
Please can anyone help me optimising this code
ShaunR replied to Neil Pate's topic in LabVIEW General
I haven't finished yet Agreed. Bug. I too couldn't preproduce it in 32 bit. However. You need both strides for the 2D array (offset= x*Stride_1 + y*stride_2). Granted LabVIEW uses a contiguous allocation but that also assumes packed and aligned. Not sure we can guarantee that on all platforms (Rolf will know). You can obviate the array allocation for this particular example by auto-initialising it on the first run (or when the length changes). You can remove the calculation of the length too since that is returned as one of the size parms. You can calculate the length as in the other examples but not calculating it improves jitter immensely. I also did your little trick with the wrapper which makes a nice difference here. too. The following was on LV 2021 x32. Compared to... Raster 2021_SR_1.zip -
Please can anyone help me optimising this code
ShaunR replied to Neil Pate's topic in LabVIEW General
A warning about the ArrayMemInfo function. Be aware of whether it is returning a sub array or not. It can change even by changing VI properties and a plethora of other reasons.