I need some help with coding a labview vi.
What I have: a NI PCIe-1430 FrameGrabber in a more or less powerful pc (Intel i7 970, 24 GB ram, 4*1TB raid, Geforce GTX280, LabView 2010 SP1) with two PhotonFocus MV1024-160 cameras connected via CameraLink. The cameras are triggered externally with an function generator.
What I need: a LabView vi, that records images from both cameras simultaneously and that stores them on the hard drive(s).
Actually, I did this for a similar system before. I used a LL ring buffer and a queue with two parallel loops. One for the image acquisition and enqueueing and one for the dequeueing and writing the images to the disk. This worked very well and allowed to stream images with about 120 MB/s to the disk without any lost frames.
Now I extended this vi to a two camera acquisition by doubling all loops and so on. In principle, this works and I can record up to 150 frames per second with both cameras parallel (makes about 300 MB/s) without any lost frames or any lag. But, the problem is, that the images are not really recorded simultaneously. There seems to be a constant offset between the frame numbers. I guess this comes from the ring buffer I use. How can I make sure, that I acquire and enque the right frames, so that I will save images to disk that were taken at the same time?
Thanks for any help or hints.
We are National Instruments Alliance Member and we propose a solution based on LabVIEW to accomplish what you are trying to do.
Take a look at our DyVA-s software it is fully compatible with NI Camera Link boards, and also with Photon Focus Camera as we are the french disitrubtor of these cameras. This product allows you to record in RAM or to stream on your hard drive. Bandwidth depends on your hard drives or RAID settings.
This doesn't help as I need some additional functionality in my vi for special measurements. But thank you anyway.
Maybe someone can help me? How can I make sure I extract those images from both ring buffers that were recorded at the same trigger event? At the moment I use two for loops to extract sequences of N frames each. I use the loop count as input for the "buffer to extract" of the "IMAQ extract buffer.vi". Both acquisitions are started by the "IMAQ start.vi" right before both loops are started. Is this the right way to do?