10-21-2024 02:36 PM
Hello,
My group has recently purchased a hall sensor readout device from Paragraf and they sent us several VIs, an example program, and DLL code to run it. However, when I run the example code labview immediately crashes giving me the the Exception: Noncontinuable exception (0xC0000025) at EIP=0x00000000 error message. This happens when the instrument is connected to my computer and when it is not. I have traced the error to one specific VI (called 'discovery init' screenshotted below), none of the other VIs give this problem when ran. I have contacted Paragraf but they have not been able to recreate the issue.
I am using LabVIEW Version: 24.1.1f1 (32-bit)
If anyone has any suggestions, I would be greatly appreciative. I have been in contact with Paragraf on this issue for several weeks and am running out of ideas.
I suppose I should mention some of the things I have tried on the suggestion of the people at Paragraf. First it was to narrow down where the problem was, if it was confined to the one VI or others as well. After we narrowed it down to just this one, they gave suggestions to change the code to work around this VI so I wouldn't have to use it at all. The code didn't crash anymore, but it didn't appear to connect to my device at all. Then they mentioned the short fix of going around the VI may not work at all if the device had never successfully been connected before (the VI in question serves to find the device). Because of this, I have decided to go back to square one and try to figure out the error message and why this VI keeps crashing.
Thanks,
Bailey
Solved! Go to Solution.
10-22-2024 03:51 AM - edited 10-22-2024 03:54 AM
@bpick17 wrote:
Hello,
My group has recently purchased a hall sensor readout device from Paragraf and they sent us several VIs, an example program, and DLL code to run it. However, when I run the example code labview immediately crashes giving me the the Exception: Noncontinuable exception (0xC0000025) at EIP=0x00000000 error message.
If a DLL is involved this is always the first culprit to look at. A wrong configuration of the Call Library Node for some of the functions is a possible reason. A bug inside the DLL is just as possible.
Just because they sent you a VI library and DLL does not mean that someone with the necessary knowledge has created them. Quite often it is done by some intern as a side project "so we have a solution to give to all those pesky LabVIEW users demanding support for our hardware". And sometimes that person knows enough to be dangerous but not enough to know that they are dangerous.
We would need the DLL, its header file and the VIs under scrutiny to say anything more.
10-22-2024 01:51 PM
Thank you for your quick response,
I have attached the VI in question and any DLL files they sent me that may be useful. Let me know if you need me to provide anything else.
10-22-2024 06:09 PM - edited 10-22-2024 06:14 PM
It seems they forgot to tell you that they try to open a file at C:\Temp\MiST_LabVIEW_output.txt and simply try to use that without checking if it was successful. The C runtime can't create files in non-existing directories so returns an error and the next log entry simply crashes. Of course the quick and dirty solution they may try to come up with for this would be to create the C:\Temp directory first, but that's not a proper solution. On restricted user accounts you can't create anything in the volume root.
If you create that folder yourself by hand, you can run the discoveryInit function successfully. No guarantee for anything else in that DLL. It looks complex, specifically created for LabVIEW and might present you many more surprises.
10-23-2024 12:58 AM
Also, why they go through the trouble of creating a DLL to create a LabVIEW specific DLL (some functions use LabVIEW manager function to deal with LabVIEW native datatypes and also have LabVIEW in their name) is difficult to understand. It uses TCP/IP and possibly RS-232 to communicate with the device and I would bet that creating a LabVIEW native instrument driver using VISA functions would have been most likely less work in the longer term than trying to shoehorn an existing driver written in C(++) to be used from LabVIEW.
If they document the command set properly, it may still be the better solution to rewrite that driver from scratch in LabVIEW.
11-05-2024 11:51 AM
Sorry for the late response,
Thank you for the suggestions. Creating the Temp file worked for the discoveryInit function, but not for anything else, like you anticipated. Do you mind looking at the discover and connect single mist (vi attached below) to see if it would have a similar quick fix? This is actually the VI that I need running, I was assuming that fixing discoveryInit would fix the whole thing, but it has not.
11-05-2024 12:02 PM
I agree that it would be easier to rewrite the driver from scratch in LabVIEW. Unfortunately, they did not send me a command set, only the DLL.
I also spent some time trying to connect to the device through ethernet using NI MAX, but with no luck. Paragraf said that was to be expected however because NI MAX relies on a VISA compatible protocol and the MiST connection is not setup that way. I don't quite know what they mean that the device is not set up that way, but perhaps that is why they sent me the DLL instead of VISA command codes.
11-05-2024 12:09 PM - edited 11-05-2024 12:41 PM
Try to attach the file C:\Temp\MiST_LabVIEW_output.txt.
And would you mind attaching your VI in an older version? Preferably 2020 or earlier! You can use Safe for Previous from the file menu.
As to their answer about Max not being able to connect to their device, that's a pretty lame explanation. However it is correct that without a Programmer Reference Manual for the device, you are pretty much lost. There is no simple way to "guesstimate" which port you need to open, nor what you would need to send to the device that it even would start to answer anything.
11-07-2024 05:00 PM
Here it is in the 2020 version. It saved the VI as two separate VIs when I used Save for Previous so I have attached them both.
I looked at the txt file again (screenshot attached) and it looks like it is a problem with the DLL code. I have reached back out to Paragraf to see if they have any input on this.
11-15-2024 02:01 PM
It turns out creating the output file in the temp folder completely fixed the issue. Thank you again for your help.