LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

A exception occured when I calling the dll created inLabVIEW8.2 from my VB.NET 2005 application.

Hello,
 
A exception occured when I calling the dll created inLabVIEW8.2 from  my VB.NET 2005 application.
The compiled DLL exports the follwing  function prototype:
void __stdcall Snap(LStrHandle *Path, LStrHandle *CameraName);
 
And my application program as following:
 
Imports System
Imports System.Runtime.InteropServices
Imports System.Windows.Forms
Imports NationalInstruments
Imports System.Threading

Public Class Form1

    Private StopAcquire As Boolean = True

    'This function definition was found from the header file of
    'SnapImage.dll, which is built in LabVIEW

    Private Declare Sub Snap Lib "E:\builds\Snap\SnapImage\SnapImage.dll" Alias "Snap" (ByVal Path As String, ByVal cameraName As String)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MsgBox("Welcome to use VS2005 and LabVIEW!", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "NI")
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Picture_Addr As String = "E:\MyPicture"
        Dim caremaName As String = ""
        StopAcquire = False
        While StopAcquire = False
            Snap(Picture_Addr, caremaName)        'Exception Occurred! Exception Information:Try to read or write the protected memory,this usually indicate  other  memories have 'been damaged.
            PictureBox1.Load(Picture_Addr)
            Label1.Text = caremaName
            Thread.Sleep(10)
        End While
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        StopAcquire = True
    End Sub
End Class
 
Can anyone know what  the problem is?
Thanks in advance!
 
EnquanLi
China
Striving is without limit!
0 Kudos
Message 1 of 5
(2,999 Views)

Could it be that you misspelled some of your variables?

In here you have "camera" spelled properly.

Private Declare Sub Snap Lib "E:\builds\Snap\SnapImage\SnapImage.dll" Alias "Snap" (ByVal Path As String, ByVal cameraName As String)

Elsewhere, you spelled it "carema" which is obviously wrong.

Snap(Picture_Addr, caremaName)        'Exception Occurred! Exception Information:Try to read or write the protected memory,this usually indicate  other  memories have 'been damaged

Should you have given the variable CameraName a value besides an empty string in order to get it to work?

Dim caremaName As String = ""

0 Kudos
Message 2 of 5
(2,980 Views)
Hi,
I don't think "misspelled" is the reason.Because "CameraName " just a parameter in the "Snap" function protype that I declare.
I have define the misspelled variable "caremaName" before I transmit it to "Snap" Function.Actually,I can transmit the variable by
any legal name only if the variable's type is a string
 
Striving is without limit!
0 Kudos
Message 3 of 5
(2,973 Views)
You may be correct that it is not the cause.  But sometimes it is the little things like a misspelled variable that can trip you up.  And you should correct the spelling anyway for proffesionalism.  If the variable was consistently spelled wrong, I would agree that it would have not effect.  But in your posted code,  you had spelled it wrong inconsistently, which could have an effect on the program.
 
I don't have any experience or knowledge about the specific .dll and functions you are using.  I am just looking at things in the code that jump out at me as possibly being an issue.  I would still check on the definition of the cameraname string as an empty string.  Is that acceptable according to the documentation of the .dll?  It seems to me that logically you would have to tell the .dll what camera you are trying to use.  Or is that argument there as a spot for the .dll function call to return the name of the camera that it is using?

Message Edited by Ravens Fan on 06-11-2007 09:27 AM

0 Kudos
Message 4 of 5
(2,961 Views)

Hi,

Thank you for your suggestion,I extremely aggre with you .Misspelled is assuredly not a good custom.I'll be careful later.

actually,cameraname string is return value,may be you'll very amazed.In LabVIEW,cameraname is a indicator's name,it

is a output connector,I don't know why cameraname in the function protype in .dll created by LabVIEW is a input parameter.

Do you know the cause?

I really appreciate your reply,Thanks again!Pls excuse me my English is poor .

EnquanLi

China

Striving is without limit!
0 Kudos
Message 5 of 5
(2,949 Views)