Bravo firmware access

Hi all,

has anyone ever tried “hacking” their way around VWorks? How can I use the Bravo in a headless way?
Has anyone been in touch with Agilent support on this?
I’d like to evaluate if I can build a Python interface for it. Would this be of interest to the larger community and also pylabrobot?

3 Likes

Yeah we’d be very enthusiastic about this. Is the Javascript interface not flexible enough? You could probably implement an API that is responsive to Python using JS scripting. What additional behavior would you get from firmware control?

Could you provide some more background on the current interface?

I think @Stefan is referring to this “JS interface”: https://www.agilent.com/Library/usermanuals/Public/G5415-90059_R_00_JSWrapper_S_EN.pdf

You can find the documentation of the VWorks COM interface here: https://www.agilent.com/cs/library/usermanuals/public/D0008025_VWorks_API_Reference_Agilent.pdf

The COM interface is very high-level as in “LoadProtocolMethod” and “RunProtocolMethod”. My top two problems with that would be:

  • You need VWorks which is Windows only
  • You need to define the Methods either in VWorks or use the JSWrapper to build these

I mean that would be a last resort. To build out a full control connector for this sort of construct would be high maintenance… just the potential version conflicts between the JSWrapper and the VWorks version / COM interface. It would be completely dependent on the software. By-passing that would reduce complexity and the systems involved.

It’s the same as using the Com interface of Venus and then sending it HSL protocols to execute. It works, but it’s just a hacky fix and not a clean solution. So I was wondering if anyone has tried this before and if Agilent has already handed out the documentation.

1 Like

I agree that writing a vworks-independent version is better/required for a PLR backend. Not sure if they have documentation or whether this has been done before. Keep us posted!

Great idea for Bravo’s.

This would be great - I’d be really interested in it. There are a lot of ways that VWorks hamstrings you (protocols needing to end w/ tips off, the JS you’ve got to write for loops), being able to send discrete commands would make many operations a lot easier to implement.

2 Likes

task.skip(); in the JS for the tips off task lets you leave tips on at the end of protocols, but, yeah, discrete commands would be better/more flexible.