Piloting Byonoy Absorbance 96 automate w/o driver support

Hi All,
I took the plunge and ordered one of the Byonoy Absorbance 96 automate plate readers for a 30 day trial despite there being no driver for the Biomek i series instruments I have on hand (yet).

There were a few aspects I had to hack my way through but I ended up getting it to work with the python implementation of sila2 and wanted to share the code that worked in case anybody else is trying to use one of these w/o driver support.

(avert your eyes from the insecure connection / generic LockID used in this test code!)

Note: I’m just using the instrument default IP and port settings

from sila2.client import SilaClient

client = SilaClient("127.0.0.1",50051,insecure=True)
client_lock = client.LockController.LockServer(LockIdentifier="1234567890", Timeout=100)
client.ApplicationController.LoadWorkspace("file:///C:/FILEPATH/TEST.byop",metadata=[client.LockController.LockIdentifier("1234567890")])
client_lock = client.LockController.LockServer(LockIdentifier="1234567890", Timeout=100)
client.ApplicationController.PrepareForReadout(metadata=[client.LockController.LockIdentifier("1234567890")])
client_lock = client.LockController.LockServer(LockIdentifier="1234567890", Timeout=100)
client.ApplicationController.PerformReadout(metadata=[client.LockController.LockIdentifier("1234567890")])
client_lock = client.LockController.LockServer(LockIdentifier="1234567890", Timeout=100)
client.ApplicationController.ExportResults("CSV-en","testfile12345",metadata=[client.LockController.LockIdentifier("1234567890")])

Next, I’ll be testing out how it performs vs a standard spectramax reader on some simple ELISA assays: stay tuned!

8 Likes

Just curious but are you locking the controller for the duration of the action? Is that required?

Also my vendor friends tell me that the BioMek’s are stingy about their integrations so SiLA2 may be the only feasible solution until TBD.

Yes, the LockController LockID metadata is required to be sent with every action the way Byonoy has set up their sila2 connectivity.

Another tidbit from my messing around with this functionality is that you need a new LockID for every attempt to send a command: failed commands will still consume a lock/unlock cycle so implementing error handling to generate a new LockID on fail / retry would be crucial to implementing this in production.

re: Beckman integration offerings, yeah: I’m not holding my breath for this to be something they try to officially support any time soon.

1 Like

Interesting, I’ve guess that bit has always been abstracted away or handled via a secure server. Are you sending these commands manually or executing them through a Jupyter Notebook or .py script?

I originally tested bit by bit via command line but will implement this as python scripts I can call via batch file(s) from the C:\ prompt command in the biomek software.

1 Like