Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by smithd

  1. I find it amazing how convoluted licensing gets..considering thats literally how all money comes in. And I don't say that to pick on JKI -- I say that to pick on a company I saw today which has no less than 7 core software packages, plus for 3 of them you have to buy an add-on for support, plus there are several add-ons compatible with all base versions, plus one specific add-on only compatible with the upper 2 tiers, plus an additional add-on cost per seat which varies based on which base model you selected. It made me ? NI vision is another example -- not quite as bad, but I still have
  2. (2) I think I've mentioned this elsewhere, but its more accurate to say that NIPM has no knowledge of labview. Its simply a system-level package manager, akin to opkg, apt-get, chocolatey, etc. You can make the same source distribution in say, Labview 2015, but since its an OS-level package manager, you have to make a different package for each of Labview 2015, 2016, ..., 2015 x64, ... One comment on that, is if you look at the NI installers, they often just make one package and install the VIs anyway. I only have 2017 installed, and yet I have a labview 2014, 2015, and 2016 folder for wh
  3. Link is now dead, they got the feedback I guess. Well, the feedback that this particular install is bad. Not the feedback of "maybe you should test these installers before uploading them" ?
  4. Yeah VIMs are pretty buggy although I'm still back in 17.5. For one particular set (using classes of course) I've had to just convert every instance to static manually, else the exe won't compile. Fortunately I just use them as helpers at the very top level, and drjd's json ones haven't caused any issues.
  5. https://dotnetcademy.net/Learn/4/Pages/1 Its roughly analogous to combination of VI server/scripting + lvoop class loading + variant data type inspection VIs + openg type code inspection VIs...except with a more consistent design His point is just "if you can't call the constructor directly because labview is broken, you can have .net call the constructor manually, by name, using reflection". The direct labview equivalent of what he posted is https://zone.ni.com/reference/en-XX/help/371361P-01/glang/get_lv_class_default_value/
  6. Did they fix your issue here? https://forums.ni.com/t5/LabVIEW/TDMS-Excel-Add-in-18-Crashes-Excel-2013/td-p/3796275 I ended up just removing all of 2018 and reinstalling the driver set because I couldn't make that stupid plugin revert properly (in part because I had NIPM installed)
  7. Yeah, chrome, and I have ublock but its disabled on lava
  8. any ideas why this might be happening? Specifically, everything is bold, regardless of being new or not. I only see this on one computer, but its the same profile (and browser, extensions) on both.
  9. Yes they fixed some of those silly things in more recent versions. Also turning off the call chain on error cluster to code so that RT systems didn't do tons of string manipulation. If I remember his posts correctly shaun uses some ancient version like labview 8.1 or something
  10. Having spent this morning trying to deal with vipm I have two additional suggested requirements: 1-Dont require a GB of RAM to unzip a few files 2-Dont dick around with the windows API every few seconds in an attempt to get the user's attention 3-while performing long running operations, don't queue up 10M instances of a 'refresh' message so when the long running operation completes your user is still sitting there for five minutes watching the screen refresh.
  11. also, google immediately gives several examples.
  12. I don't fully understand what you're wanting to do, but as a starting point it sounds like you want to use the producer-consumer pattern where the daqmx code is a continuously-running data producer and your UI is a data consumer. They communicate using a queue (eg a first in first out buffer, as you suggest). There are sample projects included in labview (eg "continuous measurement and logging" here http://www.ni.com/product-documentation/14031/en/) which may give you a better starting point than a blank diagram. It also sounds like you may need some assistance with how to trigger and fet
  13. Except that in this case we're talking about a reference which refers to a type def. Saying this is consistent behavior would be like saying "its OK for any queue refnum that references a type def to break whenever the type def changes" -- something that obviously does not happen.
  14. Probably did not explain it right, but attached is an example. Open main.vi, open the type def and add a field to it (eg a 2nd string). Save and close the type def and the code breaks because while the VI ref is tied to the type def, the controls appear to be tied to the version of the type def at the time of their creation -- eg, type prop fails. The solution for bigger projects is to type def the control or wrap it into a class or whatever, and then you only manually update it in one place, but I find that pretty annoying as well so I do the variant form (terriblesolution.zip) as this requir
  15. Never heard of this, but makes sense. I do the same (using variants of course) when it comes to static VI refs (eg 'call and forget') because any change to a type def in the connector pane breaks controls/indicators -- type prop doesn't update them. So I have my create reference in one subVI that spits out a variant and then everywhere I want to launch an instance I just have another copy of the static ref and a variant-to-data function which casts it back. Avoids annoying labview bugs that way.
  16. I tried this out and can confirm that accidentally swapping types has the following behavior: dbl->dbl = OK string->dbl = always displays the prior value of the DVR -- probably something bizarre to do with the fact that I started with dbl-dbl and its in debug so the memory space stayed the same. No error though, and the value didn't update as I changed the dvr (string) value. int(0)->str=OK int(positive number)->str=crash
  17. DD doesn't work directly on a DVR (except property nodes), hence my malleable VI suggestion. Of course malleables just make it easier to call -- you still need to have the method in the class, so your tool would still be useful. To clarify, it can crash labview if you get it wrong and uncast to the wrong type. Or so I'm told. I've never attempted to do this because a variant is a type-safe way of accomplishing the same task.
  18. As a general rule I prefer this style to the DVR-of-a-class (eg session framework: https://forums.ni.com/t5/Reference-Design-Content/Extensible-Session-Framework-ESF-Library/ta-p/3522019) The argument against it, which is also very valid, is that its hard to indicate that your class has by-ref features because by definition that dvr inside is private. So they must operate as if your class is by-value unless they know the class and all children have no by-value components. You could make the same argument about sticking a visa reference in your class -- its a reference, but you wouldn't go
  19. Don't do this, it can crash labview. If you need to cast, I think a variant will at least be safer (var to data should return a NaRefnum if its the wrong type, while cast to and from int will have labview attempt to dereference a random pointer you told it was good). There may be guards against it, but its not worth it.
  20. I've always done a separate 'data' or 'data formats' library. Its generally useful for your situation as well as the lv real-time situation (don't want to load up a bunch of PC-side libs/classes into RT land, but still want type-safe messages). If its all on a single target, I'd probably be lazy and do what I think you said: the target of the message owns the data type. But of course that breaks down if more than one target uses that type.
  21. Id suggest looking at the section "State Machine Design Pattern" here: The details will vary, but it sounds like this is what you want. This tool may help, again depending on the details: https://forums.ni.com/t5/Reference-Design-Content/LabVIEW-State-Diagram-Toolkit/ta-p/3606081 Its basically lets you model the state machine and it will script out the (boilerplate parts of the) code diagram for you.
  22. I'd suggest looking at/borrowing from https://github.com/opengds/OpenGDS I believe theres a good amount of class scripting, including (I think) scripting from a template, so it probably has what you need. May have to dig a bit though.
  23. I've never done it that way, for shared dependencies I've always made packages and installed them into vi.lib, which eliminates the problem. I don't think there is an easy fix. The fix I can think of is that there are several steps to the sample project: a dialog is displayed, then it copies the sample project into a new location, then it runs any post-copy scripting code. My suggestion would be to ask your users, in the dialog, where their 'root' project directory is. You can then through either the default value vi, or that same VI loaded up in a more appropriate application context (yo
  24. Are you sure its 8 data bits then? ASCII is 7 bits. The visa icon just indicates that it will wait, because it doesn't have a timeout input as I recall. The actual serial chip is running constantly. The KB is suggesting you give the system a few seconds to change the UART over to the proper settings before doing a read. However if the system is already running when you launch this labview application that will not help, as data is already coming in.
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.