Automating an Aura Instrument

August 19, 2024

The Aura® instrument is controlled by the Particle Vue software, which contains an Automation Interface that allows for the control of the AURA instrument in an automation-integrated environment. This article documents the details of integrating an Aura into an automated platform, from the size and positioning of the Aura instrument to the development of a .NET interface that can communicate with the Particle Vue software.
In addition to understanding the form, function, and workflow of the Aura instrument, the user should understand the basic concepts of object-oriented programming using Microsoft .NET and access to Microsoft Visual Studio 2022.

Positioning The Aura

The physical dimensions of the AURA are as follows:

Ensure adequate space for the plate holder/stage to extend fully.

For clearance considerations, note the height of the plate holder/stage.

Lastly, note the location where the robot gripper can pick up the plate.

Enable Automation in Particle Vue

By default, the automation interface in Particle Vue is disabled. A command line parameter needs to be passed to the Particle Vue application to enable the automation interface. This is done by right-clicking on the Particle Vue desktop icon, selecting “Properties” and adding the parameter “-automation” to the end of the “Target.” Please ensure the parameter is outside the quotes, as shown in the screenshot below:

Enabling the Automation Interface exposes the following interface (C#):

public interface IParticleVueAuto
{
    bool AUTO_EjectTray(bool eject);

    bool AUTO_LoadExperiment(string path);
    bool AUTO_UnloadExperiment();
    bool AUTO_SetPlate(int plate);

    bool AUTO_RunStep(int channel);
    bool AUTO_StopRun();
    bool AUTO_ExportReport(string path);
    bool AUTO_GetFlags(out int flags);
    bool AUTO_GetStatus(out int flags, out int expID, out int plateNum,   out int plateTag, out int stepType, out int stepDonePC);

    bool AUTO_NewExperiment(string name, string plateName, string barcode, int plateColor);
    bool AUTO_NewPlate(string plateName, string barcode, int plateColor);

    bool AUTO_GetExperimentInfo(out string name, out int numPlates);
    bool AUTO_GetPlateInfo(int plateInx, out string name, out int color, out int[] acqSteps, out int plateFlags, out string selectedWells);
    bool AUTO_GetWellInfo(int plateInx, Point coord, out string sample, out int wellFlags, out double volume, out double dilution,
                          out int colorBG, out int colorFill, out int particles, out int percentFull);
    bool AUTO_SetWellInfo(int plateInx, Point coord, string sample, int wellFlags, double volume, double dilution);
    bool AUTO_UpdatePlateDisplay();

    bool AUTO_ReprocessExperiment(string path, int nConfig, bool bCopyImages, double minParticleDiameter);
    bool AUTO_ReprocessProgress(out int percentDone);
    bool AUTO_StopReprocessing();
}

The easiest way to use and understand the Automation Interface is to use the sample automation application provided in the Halo Labs Automation Software Development Kit, which is available here: Download Halo Automation SDK.

This SDK also includes a prebuilt .NET library (HaloAutomation.dll) that implements this interface, making the use of the interface quite simple. The implementation is TCP/IP based and will require unblocking port 60007 in Windows Defender or another Firewall. The implementation will allow for connections from other computers in the same network, meaning the automation implementation can be distributed.

Once downloaded and extracted, find the Visual Studio 2022 solution file at ..\HaloAutomationSDK\HaloLabs\Applications\HaloRemoteControl\HaloRemoteControl.sln.

You may need to “Unblock” some of the files due to the package being downloaded. If necessary, find the blocked files, right-click and select “Properties,” then select the “Unblock” option:

Building and launching the HaloRemoteControl application will show the following:

Clicking on the “Connect” button will create a connection with Particle Vue. This simple implementation demonstrates a variety of automation commands and gives an example of how to use the ServerProxy class that will handle the communications between the client and server. See the MainForm.cs file for examples of how to instantiate and use the ServerProxy class. The Halo Remote Control application also allows for queuing predefined experiments that can be run via the automation interface. For example, clicking on the “Add” button will enable the user to select a premade experiment:

Once added, the experiment will show up in the “Experiment Queue” and the “Run Next Experiment” is enabled, which, if clicked, will start the experiment running in Particle Vue. Note that the “Edit” button can be used to enable/disable pausing (which allows user interaction) between the plates, background and measurement steps:

Happy Automation!

Related

 

Table of Contents
    Add a header to begin generating the table of contents
    DISCOVER THE AURA FAMILY
    tech-library2

    Technical Library

    halo-webinars2

    Webinars

    halo-publications2

    Publications

    Read More ON this topic