Jump to content

Yair

Members
  • Content Count

    2,850
  • Joined

  • Last visited

  • Days Won

    42

Posts posted by Yair


  1. I recently backsaved a few things from 2020 to 2015, including with classes, so at least there it works. I would suggest trying to save something simpler and if that works, then take only parts of the project (which obviously will load with missing dependencies) and just backsave those, to see where the issue is.

    With your image stuck at a vi.lib VI, I would also suggest making sure to mass compile the folder again (or at least the error ring folder) and possibly trying to remove the error rings from your code, if you don't have too many. If something would have problems with backsaving, I wouldn't be surprised if it would be an XNode, although it clearly has code for the backsaving.


  2. On 7/17/2020 at 9:05 PM, Jim Kring said:

    Hi Yair,

    Regarding the problems installing the package, can you check your error log folder?

    No errors are added to the log when this happens. The errors that are there (the file is attached) are probably partly because of my attempts to manually install and partly because of another annoying bug - I don't recall the exact details, but basically my LV had a non-standard VI server port, and VIPM had trouble connecting to LV. I figured out that was probably the issue (as it happened before), so I changed it in LV to be the standard 3363 and then VIPM could connect, but when installing or mass compiling (can't remember what point exactly) it then failed to connect. I looked at the VIPM settings and saw that it did actually find the non-standard port, so I changed it in VIPM to the standard one, but it still had trouble connecting.

    Basically, it looks like that there are two points in the installation process of a package where VIPM tries to connect to LV and one of them caches the VI server settings and isn't updated when the settings are updated in VIPM until VIPM is restarted. To successfully install without restarting, I had to switch LV back and forth between the two ports.

     

    Quote

    and the installer downloads themselves do require a sign-in.  Thanks for your understanding about this

    Well, I understand why you want to create a small barrier after you've explained it. In this specific case, my need is small enough that I haven't bothered with overcoming that barrier so far.

     

     

    VIPM error log.txt


  3. Currently, with LV 2020 and VIPM 2020.1, I have the following problem:

    1. I open VIPM browser and search for any package (like an OpenG or MGI package)
    2. I find the package
    3. I open its page and select download
    4. I get a Windows popup message that it was downloaded almost immediately, but nothing happens if I click the message.
    5. The other three buttons on the page remain disabled, so I can't open the package in VIPM to install it.

     

    If I take a VIP file from elsewhere and double click it, then VIPM opens it and I can install it.

     

    Also, the downloads page to download older versions requires a sign-in.


  4. Darren, any chance of getting the All Supported Properties property of the Property class (i.e. the property node) to actually return all the supported properties for the current class of the property node, including all of the nested ones?

    As it is today, that property only returns the top level properties (so it would show a Label property if the node is linked to a class inheriting from Control, but not all the subproperties coming from the Label class).

    If that's too hard for support reasons, maybe at least adding a new property which will actually return all of them?


  5. I don't use the variant probes, but a quick look at the code (browseVariant.vi) shows that it uses deprecated VIs in the refnum case. It looks like even the new NI VIs (at least in 2015) don't do the whole job (they seem to return the class name of the wire you had before you convert to a variant, rather than the actual class on the wire), so I think you will need a combination of NI's Get Type Information.vi to know that it's a class and OpenG's LVOOP Return Class Name__ogtk.vi to get the class name:

    Example_VI.png.86cced548726851d6e7a68e1828f6165.png


  6. On 4/10/2019 at 10:53 AM, Dawid said:

    The mystery is, why Labview cannot see file in C:\Windows\System32\ catalog??!!

    If anybody knows how to answer this question I will be very appreciate. Generally we can close the topic.

    Short version - you're running a 32 bit process on a 64 bit OS which causes a mess as to how to correctly run LPR. Here are a couple of relevant links:

    https://knowledgebase.progress.com/articles/Article/Running-OS-COMMAND-LPR-EXE-from-within-32-bit-OpenEdge-the-Procedure-Editor-fails-on-64-bit-Windows

    https://docs.microsoft.com/en-us/windows/desktop/winprog64/file-system-redirector

     

    The first one suggests a solution, although I haven't tried it myself.

    • Thanks 2

  7. I forgot to mention those. I actually started with those events, but my understanding was that the desire is to discard actions on the items, not opening and closing, and for those the open/close events don't really help (unless you plan on registering for both the open/close? event and for the mouse down? event and hope that LV will always process events in the order of the frames and then you can try relying on the lack of the first event to discard the second).

    Like I said, I assume making it an indicator would do the job.


  8. I don't know if there's a way to figure out if the click was specifically on the expand symbol (other than starting to calculate yourself, which could get messy with nested elements), but can you just make the tree an indicator instead of a control? This will allow you to expand, but not to select. If the selection option is needed, Shaun's code from above should work. I'm not sure about dragging and other features.


  9. On 3/16/2018 at 3:05 PM, rolfk said:

    Yes, Yair's idea won't work.

    The funny thing is that I actually ran into this myself more than once, but I keep forgetting that it's not like flattening the array using the LV flattening functions and that you need to inline the bytes yourself using a cluster. I seem to recall making that mistake more than once and then having to fix it after testing.


  10. Whether you have separate elements or a cluster or a 1D array of clusters with a single element should probably not matter, as they are all the same in memory. I'm pretty sure the part you're missing is the char    Data[1024]  line - this means an array of 1024 bytes is expected (possibly so that it can be written into) and you're not allocating that memory. Try initializing the array to a size of 1024 bytes.


  11. On 10/20/2017 at 1:10 AM, ShaunR said:

    You need to us gacutil.exe. to get it into GAC. It's like with the old ActiveX where you used to call regsrvr32 (but different :P ).

    Yeah, doesn't look like a good option here, as there's no VS installed there and it looks like it's against the license to take that utility on its own. Looking at some links from searching for that showed this, which seems to indicate you should be able to call System.EnterpriseServices.Internal.Publish.GacInstall to add an assembly to the cache, but a quick test both with through PowerShell and through LV, both run as admin, failed to install it to the GAC (the method doesn't actually return an error. Instead, the error is logged to the system event log and has no actual useful details).

    I think that for this specific project I will either copy the EXE into the DLL's folder or copy the DLL and all its dependencies into the EXE's folder. Ugly, but probably workable for this specific case and less of a hassle than the other options. I would have to check with the client what their preference is, but I doubt it's worth spending any more time on at the moment.

     

     


  12. I have the same question. I have some third party DLLs installed into the program files folder. As far as I can tell they are unsigned and not in the GAC (the public key token is null).

    I can call the DLLs, but when I build an EXE, it shows the browse dialog if the DLL is not in the application folder. Selecting the DLL then does load the program correctly. I would rather not copy the EXE to the DLLs folder or copy all of them (to get all the dependencies) to the application's folder.

    Creating a config file with a codebase element didn't seem to help either, probably because the assembly is unsigned.

     

    Does anyone know of a way to point to a non-GAC DLL which is not under the folder of the EXE?


  13. On 7.9.2016 at 10:55 PM, Neil Pate said:

    (like how to write a recursive algorithm in LabVIEW without having a nervous breakdown)

    The answer is generally to convert it to a stack based algorithm. Rather than calling the same function, push the data into a queue and dequeue it until the queue is empty.


  14. 1 hour ago, PhilipK said:

    is LabVIEW or Windows automatically performing some clean-up in the background leading to an invalid reference...?

    Probably. LV's general approach to references is that they are cleaned up when the hierarchy they were created in goes idle or out of scope. The hierarchy is determined by the top level VI, so if you're running a VI to create the connection and that VI stops and you're then running the second VI, the value of the reference is still there, as you can see, but the underlying resource has been cleaned up because the VI has stopped.

    Since you didn't show any code showing how you're testing this, I can't know for sure, but I'm guessing that's your issue. Another potential issue would be that your code is still running, but the reference was created in a hierarchy (i.e. a dynamically called VI) which did stop running.

×
×
  • Create New...

Important Information

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