Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

Using NI-IMAQ imgSnap (ANSI C) with Windows 7 x64

Solved!
Go to solution

@SripadRam wrote:

Hello,

I am having exactly the same problem where I am trying to run my code that uses the 32 bit IMAQ driver on a 64 bit OS (Window 7). In my code, I am already using the imgCreateBuffer and imgDisposeBuffer functions. However, I still get the same error ("This 32-bit device is operating on a 64-bit OS with more than 3GB of physical memory....")..

.

I would like to try using the "niimaquDisable32bitPhysMemLimitEnforcement" private function, and I have a question.

 

The syntax for this function is niimaquDisable32bitPhysMemLimitEnforcement(SESSION_ID,boardid). Can someone tell me what is the boardid? Is it the same as the interface id?

 

One of the replies also referred to the use of the PCI format of the frame-grabber board (NI-1422), which is what I am currently using to interface with my camera. In this regard, would it be advisable to update to PCI express format?

 

Thanks!

 

Sri

 


I believe it takes one parameter, which is the session id from imgSessionOpen. I'm hoping we can make this call to niimaquDisable32bitPhysMemLimitEnforcement unnecessary in the future and things will "just work" as long as you use the imgCreateBuffer/DisposeBuffer functions.

 

As for upgrading to a PCIe card, there is not currently a PCIe version of this card available.

 

Eric

0 Kudos
Message 11 of 18
(1,810 Views)

Hello. I have question about the

error LNK2001: unresolved external symbol __imp_niimaquDisable32bitPhysMemLimitEnforce​ment.

 

I defined

USER_FUNC  niimaquDisable32bitPhysMemLimitEnforce​ment(SESSION_ID Sid);.

 

I used

niimaquDisable32bitPhysMemLimitEnforce​ment(Sid); in main function.

And I tried to compile c++ file, but I got this error message.

I already add imaq.lib and h file.

 

Please let me know how to fix this problem.

 

Thanks for your help.

0 Kudos
Message 12 of 18
(1,748 Views)

Hello Ity52,

 

Are you running this program on a 64-bit Windows operating system?

 

Also, can you please send some screen shots of where you define the USER_FUNCniimaquDisable32bitPhysMemLimitEnforcement(SESSION_ID Sid); so we can see the code you have around it and also of where you call the niimaquDisable32bitPhysMemLimitEnforce​ment(Sid); in the main function?

 

This will help us see how you are calling them and where this error is coming from.

 

Thanks!

 

Mychal F. 

Applications Engineer
National Instruments
0 Kudos
Message 13 of 18
(1,713 Views)

Hi, I am having the same issue with a NI-1411 frame grabber. I am using Matlab to call the IMAQ activeX control to grab images. Is there a way to achieve this workaround with IMAQ activeX control (e.g. niimaquDisable32bitPhysMemLimitEnforcement())? I can not find a similar function in the "cwimaq.chm" help file. Any suggestions are highly appreciated. Thanks.

 

jji686

0 Kudos
Message 14 of 18
(1,684 Views)

Hi jji686,

 

Just to clarify, you are trying to call the IMAQ Memory Disable call in MATLAB, is this correct? If so, you will probably have to contact them to get the correct call. If this isn't correct, can you please let me know what environment you are working in (where you are trying to make this call)? Thank you!

 

Mychal F. 

Applications Engineer
National Instruments
0 Kudos
Message 15 of 18
(1,669 Views)

Hi, Mychal F, Thanks for the answers. Yes, I am using Matlab environment. I am using the IMAQ activeX control to interact with NI frame grabber. Since I am not calling the C++ DLL to interact with NI frame grabber, I just want to know if there is a way to achieve the same effect as C++ function call : niimaquDisable32bitPhysMemLimitEnforcement() in IMAQ activeX control? The activeX help file name is "cwimaq.chm" if that help you to trace down what activeX I am using. Here is my code to create activeX in matlab:

 

imaqfig = figure(99);   

IMAQ = actxcontrol('CWIMAQControlsLib.CWIMAQ.1',[20 20 60 60],imaqfig);

IMAQ.Interface='img0';

IMAQ.LoadInterfaceDefaults;

 

thanks.

 

jji686

0 Kudos
Message 16 of 18
(1,662 Views)

Hi jji686,

 

I am not aware of any IMAQ ActiveX control that will do this same function. I have been looking into things here and have not been able to find any type of command that will allow you to do this. So for right now, my answer is no, there is no call that will achieve the same results as the niimaquDisable32bitPhysMemLimitEnforcement(). However, I am still looking and will give you a definite answer as soon as I can. Thank you for your patience!

 

Mychal F.

Applications Engineer
National Instruments
0 Kudos
Message 17 of 18
(1,640 Views)

Hi jji686,

 

Unfortunately my first answer was correct. There is no way to disable the 32-bit memory enforcement through the CWIMAQ component. The only way to disable it is through the C API. Sorry I don't have better news for you!

 

Mychal F. 

Applications Engineer
National Instruments
0 Kudos
Message 18 of 18
(1,634 Views)