Home

at3mod: LabVIEW interface to Andor sCMOS cameras

Update Nov 2014: This project was started as a set of patches to Andor SDK3 v3.1 in 2011. The current version of the SDK (v3.7) fixes most of the problems we were trying to address, namely

  • lack of any error handling
  • lack of examples
  • confusing/misleading statements in the SDK manual

As such, the examples contained in this library may include deprecated commands. It is recommended you try to use the official SDK first and if that presents difficulties look at how I did things in this version.


Update March 2014: Timestamp metadata can now be read from the camera during frame download for accurate timing of when frames were captured. See the metadata-update.zip file in the Files list.


sCMOS cameras a very promising new technology in scientific imaging, with small pixels, large arrays and fast read-out times. Andor currently produce two models of sCMOS camera, Neo and Zyla, which operate on their SDK v3 - which is an complete redesign of their SDK from the ground-up. Developed in C, they provide bare-bones wrappers for LabVIEW which doesn't include any error-handling functionality. This project started as an attempt to integrate error handling and grew into some examples and pooling ideas of how to get the most out of our cameras.

This project includes
- Integration into the LabVIEW palette menu
- Error handling (integrating meaningful error clusters from function calls)
- ROI control (for cameras with FullAOIControl)
- Buffer handling and unpacking for image retrieval
- A simple application to monitor the camera and control cooling
- A simple program to query to device's properties and ranges
- Example code

Note: You will need to specifically request the official LabVIEW drivers from your vendor if you do not have them already before installing this wrapper kit - there are no drivers or DLLs included, if no other reason than version incompatibility. Install the Andor LabVIEW driver first, then install with this wrappers on top of that. If a new version of the driver is released you will have to reinstall the wrappers after updating it.

Note also: This kit is not officially supported and simply demonstrates how to use the SDK and get the most out of your sCMOS camera. We are an academic research group in experimental physics and made these modifications for our own use - we are simply making them available because we have had a fair bit of interest from other groups trying to fast-track their own development and find out how we were successful in getting our code to work.


Here's an example demonstrating connecting to the camera, querying it, then setting an ROI and some exposure settings, with error propagation via a standard error cluster.

There are several convenience VIs included to simplify common tasks.

Project Admins:

Discussion

  • Bahareh
    Bahareh
    2014-11-14

    Hi,

    I'm trying to use this package and make Labview and camera connected. I download the VIs example and atcoreA.lvlib file according the notes you mentioned. The camera I'm working with is sCMOS Zyla. I should mention that I'm in very beginning stage and new in this field!
    When I try to run an example, I get this error for all AtcoreA VIs: SubVI is not executable. Which means that all VIs in atcoreA.lvlib can not be known in my Labview.

    I installed Andor_DriverPack3_3.7.30004.0 on the computer with Labview and micro-manager installed on it. I found the file atcore.dll in the installed files instead of atcoreA and I copied and pasted it in the Labview resourses directory.

    Would you please help me how can I make it works?
    Thanks,
    Bahareh

     
    • Hi Bahareh,
      You need to specifically request LabVIEW drivers from your Andor distributor for SDK3 ("LABVIEW_SDK3_V3.4.30007.0" or similar). As you noted, the "normal" drivers are atcore.dll, whereas LabVIEW needs atcoreA.dll because of how strings work internally. Install that and you should be able to use the library. I recommend trying their code first, as it has improved substantially since this project started, but the examples contained within might still be of value to you.

      Cheers,
      Martijn

       
      • Bahareh
        Bahareh
        2014-11-15

        Thanks a lot for your prompt response. As I understand, I need to specifically ask labview drivers from my andor distributer? Am I right?
        Because after installing andor SDK I don't have the drivers of Labview.

        Bests,
        Bahareh

         
        • That is correct, you need to specifically request the LabVIEW drivers from your distributor. Generally they will just give you a link to download it from, but they only do this when asked.

          Cheers,
          Martijn

           
          • Bahareh
            Bahareh
            2014-11-15

            Great, that was quite helpful and of course the examples you made will be helpful.

            Bests,
            Bahareh

             
  • Bahareh
    Bahareh
    2014-11-14

    Hi again,

    I also try to change the path of DLL in the VIs, but I get this message:
    The library selected is not valid for the current platform. for example, you are running a 32-bit Labview and the library might be a 64-bit library.

    Do you know that for what platform the library is built?

    Thanks,
    Bahareh

     
    • Both 32- and 64-bit libraries are distributed; on my install there are
      - 64-bit drivers in C:\Program Files\Andor SDK3
      - 32-bit drivers in C:\Program Files\Andor SDK3\win32
      Because I am running 64-bit Windows 8 but 32-bit LabVIEW 2012

       
  • Bahareh
    Bahareh
    2014-11-21

    Hi Martijn,

    Fortunately I installed the SDK3 Labview library successfully. I tried to run an example of the package (single acquisition) but I faced with an error. Opening the library function (AT_InitializeLibrary) and opening the camera handler function (AT_Open) are working well with no error, but I faced with this error: (AT_GetEnumCount.VI not applicable) when the code reached to AT_GetEnumCount function and SimplePreAmpGainControl is one of the input of this function.

    Have you seen this kind of error before and do you know how I can make it works?

    Thanks,
    Bahareh

     
    Last edit: Bahareh 2014-11-21
    • Which example did you try? RunAndor3.vi or NeoTest.vi? I wrote these before SimplePreAmpGainControl was introduced so my code uses the now deprecated PreAmpGainControl which may only be available on the Neo. Because SimplePreAmpGainControl changes the gain and the bit depth it may be unable to be set as freely as the other but you could try changing the property name to SimplePreAmpGainControl. Otherwise consider outright deleting that section of code set it statically. I only introduced it so we could change gain on-the-fly to see how it affected our data.

      My only other suggestion is to read the camera model first and make sure it returns Zyla. If the camera is in use by another program (e.g. SOLIS) it will not appear and you'll connect to the "simulation camera" which creates all kinds of problems. Definitely worth double checking.