using NI Vision and NI Vision Acquisition software version 8.6, with legacy imaq1394 driver.
my acquisition system does not work anymore: using an IEEE1394 camera (i tried with 3 different models), NI-MAX says "not enough memory" when i start an acquisition. the camera validator utility works like a charm, and using a software written in C (with LabWindows/CVI) i can only make single frame acquisition.
after insisting a bit, the system went worse: calling imaq1394ConfigureAcquisition() returns an error -50353... this error code does not exist. what is this error ?
i tried uninstalling all vision and acquisition software from NI then reinstalling them without success. how can i get my system working again ?
What is the size of the image you are trying to acquire? The not enough memory error is usually returned when the system hasn't enough contiguous memory available. Some more info on this is available in the following KB:
The error -50353 actually has the following description: 'One or more memory pages in the specified logical buffer could not be locked into physical memory. The operation could not be completed as specified.' (If you looked up the error, make sure you don't forget to include the minus sign). So it does seem like there is a problem getting access to the necessary memory to store the image.
According to your explanation, they worked with previous driver versions? What version of the driver where you using before. Did you modify anything to the system itself? Could you give some more information on the system you are using?
the system is a standard PC running Windows 2000 SP4, Pentium 4 3.00GHz 1GB RAM, connected to an AVT Stingray F146B camera, through a Belkin Firewire PCI board. the camera is configured as Format 7 mode 0, which means an image size of about 1400x1010. everything was fine with the drivers coming with NI Vision 8.5. the problem seems to have appeared since i removed another Firewire PCI board which was also used for camera acquisition. since, i tried updating the acquisition software, which is now running NI Vision 8.6 with driver version 2.0.5f5, and the problem is still there.
strangely, my documentation of NI-IMAQ for IEEE1394 documentation does not list -50353 as a possible error code. also, imaq1394ShowError() was returning an error and gibberish in the message buffer. the documentation is labeled: March 2005 Edition, Part Number 370282D-01 (which does seem strange since i installed it using the "Vision 8.6.0 Acquisition Software" CD. no change since 2005 ?). i tend to regularly update my NI installation, i hope there is nothing left from a previous version of the drivers.
one thing i forgot to mention: in MAX, i have the same error wether i'm using the legacy IEEE1394 driver or the new IMAQdx driver. i did not try IMAQdx in my software (i have to rewrite some part of the acquisition code to do so).
Did you already try doing an uninstall / reinstall of the drivers? The IMAQ for IEEE1394 is a legacy driver, which has been replaced with IMAQdx. To allow people to continu using their application instead of needing to modify it to IMAQdx, the legacy driver is still included. It is however no longer being update, which clarifies why the documentation shows a date some years back. The -50353 error code is a general error code, not related to imaq specificly, which is why you can't find it in the IMAQ documentation.
Since it is an error related to acquiring the memory resources, it does seem like the driver has a problem getting access to the needed amount of memory. Also, since it is a legacy driver, there isn't anything change in the driver normally.
Could you perhaps try a complete uninstall of the driver and reinstall it afterwards? When using a smaller image size, is the problem also showing up? Could you verify the driver for the other firewire board has been uninstalled properly when you removed the firewire board?
You can check the following KB on where to find explanations of error codes:
this KB article is quite funny:
"Because error codes are being added to National Instruments software continuously, a list of error code ranges is not maintained"
does this really explains why this error code is not documented in any help file installed with my NI products ?
i don't think so... and i'll prove how retarded this article is. let's put up another KB article: "since functions are continuously being added to the runtime library of CVI, a list of functions is not maintained. but you can find a list of functions in the header files." does this sounds right to you ? let me know...
I agree that the wording of the KB is quite silly. The underlying reason of why we don't have comprehensive error codes listed in our header files is due to the interactions among many different software layers involving internal components from NI that don't always have a customer-facing header file.
The error code you received is coming from an internal platform abstraction layer (NI-PAL) that is sitting between IMAQdx and Microsoft's firewire driver. In general, many error codes that this layer returns are translated into IMAQdx errors before being returned by the API. However, not all of them are translated, usually because they are unknown/unexpected or possibly new.
Now, when you are using LabVIEW, each product group at NI (including for internal components such as NI-PAL) installs an error description file into LabVIEW that allows it to translate errors from any NI product. This lessens the impact of non-translated error codes for LabVIEW customers. As far as I know, we don't have such a component available under CVI or C to achieve similar functionality. Thus, when an error code is returned by an underlying component that IMAQdx doesn't know how to translate, it will return it directly and unfortunately I don't know of a programmatic way in CVI to decode that error.
To address your original problem, I think you are just simply running out of RAM. When acquiring from firewire cameras, IMAQdx is going to want to allocate DMA'able, contiguous physical memory as large as your image size. With that stingray returning a somewhat large 1MP image, it is quite possible the OS is not able to find enough contiguous pages to create a ring of several of these buffers if you only have 1GB of memory total in the system. Windows maintains various pools of different types of memory and while you might have plenty of normal memory available, it might be getting exhausted of the type needed by the firewire driver.
Hope this helps,
thanks a lot for the information regarding the error codes.
about my original problem: it seems it was due to a general driver problem on my windows setup. i started having a lot of problems, not only with firewire driver, after fiddling with samples and tools in the Windows DDK and "experimenting" a lot... bad idea.
what is strange, is that the acquisition software provided with the Stingray, which runs its own firewire driver, was working fine at first (that's about at this time that i posted the original question). after some weeks, things went so bad that i could not acquire any image anymore, (and also could not install/uninstall some softwares) and i resorted to a complete reinstallation of the system. everything is working fine again.
I should add: after re-installing the VAQ 8.6 driver package, the error message changed to "Not enough Memory" (with a very long number as error code).
Also I should mention that another Image Aquisition program, which was delivered with the camera, still works fine.
What image size are you trying to acquire? Also, how many images are you acquiring in your sequence? If you reduce either number, does that help?
the images are around 200 x 700 pixel, slightly above 100 kB in size, if I remember corretly (they're taken by using mono-8 pixels). Aquiring a max. of 400 is possible, more produces the said error, as I have found out.
I also have the related error code -50353. While I was using NI Thermocouple to get the temperature values from 8 channel of device, I got a the error -50353 after some executions. I am using While loop to get the values continuously.
Why do you think ı got this error?
Also, As ı look up, I saw that Labview is using increasing memory space . The program starts with about 140MB of memory usage. Then it crashes with error code -50353 when it is using at about 750MB of RAM space.
How can I handle this?
Could you help me?