Jump to content

Neil Pate

Members
  • Posts

    1,156
  • Joined

  • Last visited

  • Days Won

    102

Everything posted by Neil Pate

  1. Sorry I thought I had replied here, but it looked like I did not click Submit! Thanks for everyone's comments. I have passed them on to my customer.
  2. A bit more information. According to the Dependencies application the LV2020 also has a dependency on this System.dll that is located in the GAC. I have tried copying that DLL to various locations (I think I am not supposed to because this is system stuff!) but it still gives me the same error.
  3. Recently I have tried to package up some code as a .NET Assembly. I managed to pack some pretty complicated LV2019 code (including some LabVIEW classes and dynamically called code) into an assembly and was able to call it just fine from a simple C# console application. However, this does not work when I moved over to LV2020. To make things simple to try and get to the root of it I created the simplest possible example I can think of. One copy is in LV2019 and it works fine, the other is LV2020 and it does not work. The assembly builds fine in LV2020, and indeed is callable from LabVIEW code. The test is just a simple Increment VI. This works fine when the assembly is built using LV2019, the num variable is correctly 2 after running this line of code. However in LV2020 I get the following exceptions after running that line System.TypeInitializationException HResult=0x80131534 Message=The type initializer for 'MyAssemblyNamespace.LvClient' threw an exception. Source=Increment2020 StackTrace: at MyAssemblyNamespace.MyTestClass.Increment(Double input) at Increment.Program.Main(String[] args) in C:\dev\Scratch\DLL Build Test (2020)\Source\C#\Increment\Increment\Program.cs:line 10 Inner Exception 1: FileNotFoundException: Missing Dependency in: Inner Exception 2: VIAssemblyException: Missing Dependency in: I have tried playing around with including the LabVIEW Interop assembly in the C# application (C:\Program Files (x86)\National Instruments\Shared\LabVIEW Run-Time\2019\NationalInstruments.LabVIEW.Interop.dll) and changing this to 2020 for the LV2020 version, it does not seem to make any difference. The LV2019 version runs without this assembly included in the project. Is this something to do with the GAC? This is now getting into the details of .NET that I am not really very familiar with. Does anyone have any tips for things I can look into? I have attached a zip of everything for anyone curious. Build Test.zip
  4. One of my old customers is having an issue with the TSM-1017 losing its ability to be calibrated. The system runs on a cRIO and the screen is attached with a USB cable as well as the DVI cable. On Linux RT there is an application you can run that brings up a four point calibration, but apparently this application does not run anymore. This did all work once upon a time, but the system has been out of my hands for a very long time. NI support gave some very manual linux-ey commands to reinstall drivers or something, but I do not think this worked. Has anyone come across a situation like this before?
  5. https://meh.com/forum/topics/building-the-plane-on-the-way-up tl;dr the ground based decoder for some of the comms on Voyager was built *after* the craft was launched, and it still to this day reliably receives data. Wow!
  6. Posted here: https://forums.ni.com/t5/LabVIEW-Idea-Exchange/idb-p/labviewideas/tab/most-recent There is a video linked in that post that pretty simple shows the behaviour. It is quite nice to use. If you like it please add your kudo on the Idea Exchange!
  7. Exactly why we need NI to buy in to the idea, otherwise it will never get off the ground.
  8. Excellent idea, I have added my kudo! I don't think this will get much traction from NI but it would be really nice to see this as something semi-official. Once you know what you are doing it is not super complicated to get RT linux running on a desktop.
  9. I have created some code that allows me to translate the GUI language on the fly at runtime. Is anyone else interested in this? At the moment it is a bit coupled into my actual application but I think I can extract the relevant bits. It supports pretty much any latin codepage language and once upon a time did also support Chinese (but I have not tested that in quite some time). Obvious disclaimer here: I just want to share what I made, but use at your own risk, and I am definitely not a UTF8/16 whatever expert so there might be some stuff that is just plain wrong.
  10. I am not *that* paranoid, but certainly I like to push my work at the end of each day. I am not actually anti-git, it is just taking me a while to get used to its best practices and nuances.
  11. I guess what I mean is I find it strange that people would even have local branches that are not pushed to the server. Maybe I am just paranoid about my house burning down, my computer getting stolen of my hard drive dying. For me one of big benefits of cloud based VCS is that I almost always have an up-to-date geographically distributed copy of my code.
  12. The thing I still find a bit strange is how it is possible for the remote and local branches to be totally different (even different names). I totally get that the local branch can be out of sync if you have not done a push/pull to the server, the thing that seems weird to me is that the local can have a totally different structure. This is just something I need to get used to.
  13. This morning I finally realised why I semi-regularly get into a detached head state (I think I know why...). In git there are several different options for checking out a commit (checkout commit, checkout branch etc) and I never really paid much attention to the subtleties of these. As far as I thought they all did the same thing, that is revert the local code to the state of that commit. It turns out that my understanding was flawed, and every time you check out a single commit (rather than the actual branch) the current state will not point to any particular branch and you will be in the detached head state. I find this a bit weird, as I presumed if you checkout a commit in say the middle of a branch somewhere you would still be on that particular branch. Checking out a branch will always checkout the latest commit of that branch. This article explains it nicely. I have not been too scared of detached head for a while now as I know it can be easily fixed just by making a new branch, but it is nice to know why this actually happening. Happy gitting! (next step in my git mastery is to understand the subtleties of local and remote branches).
  14. I use InnoSetup for a custom installer and I also install the 2019 runtime this way. It may not be the "right" way to do it, but the way I solve this problem is to manually extract the runtime installer and then just include that directory in my installer and run the Install.exe from the installer.
  15. I think LabVIEW is going to be around in some form for at least another ten years, primarily due to how entrenched it currently is in the niche it fills. However, if I was starting my career again in 2021 I would definitely not choose LabVIEW as my primary language of specialization. I think the poor decisions NI have made over the last ten years will lead to its irrelevance/obsolescence, which I am genuinely saddened by. It pains me to think where current gen LabVIEW could be if the money and time funneled into NXG had been put to overhauling current gen.
  16. Being able to drop pictures on a block diagram is so amazing.
  17. I tried with a longer row replacement, 6000 elements, and the MoveBlock technique starts to become marginally faster. I am going to stick with the simple replace an element at a time method.
  18. It really makes sense to me to have the MoveBlock be the fastest when replacing a row (or subset of a row). I wonder if the difference is also more exteme as the size of the replacement changes? In other words replacing a section 1M elements long is probably much slower when doing it element by element compared to a single MoveBlock call.
  19. Sure, but I am surprised that looping over an array doing individual array element replaces is quicker than doing a single MoveBlock! Seems suspicious...
  20. In another plot twist it looks like my original naive method of just doing a for loop is actually quicker than the MoveBlock. I do not really understand this but am going to leave it here for now.
  21. Method 3 using MoveBlock seems the fastest when you want to replace without starting at zero
  22. I actually have a scenario where your MoveBlock method might be faster. Using the primitives you cannot replace a portion of a row (which is actually what I want to do). This should be a lightning fast operation but I have to either do it item by item or index out the row first, replace a portion of it and then replace the 2D array. My code might be sped up a bit with an In Place structure, I have not yet tried this.
  23. Yes I did. Actually my first benchmark was just to make the change manually in the VI and re-run it. The results are the same. Sorry my picture was not good, if you look closely I introduce some forced data flow from the first structure to the second so that they do not run in parallel as I did not want to bias the results in any way.
  24. Risky click of the day running that VI! But hey, life is short so I tried. My Russian is a bit rusty but I guess you came to a similar conclusion?
×
×
  • Create New...

Important Information

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