More on Bio-lab Automation – Software for Controlling FIAlab Devices for Microfluidics

Posted by – October 9, 2009

Perl software to control lab syringe pump and valve device, for biology automation, initial version finished today. Works great.  Next, need to add the network code, it can be controlled remotely and in synchronization with other laboratory devices, including the bio-robot.  This software will be used in the microfluidics project.  The software is also part of the larger Perl Robotics project, and a new release will be posted to CPAN next week.
FIAlab MicroSIA Valve and Syringe System FIAlab MicroSIA Experimental Setup

More details on the software follow:

Working FIAlab command compiler and probe using example fialab1.pl with Perl Robotics

  • automatically probes for connected FIAlab devices on all USB/serial ports, and determines which type of device is connected.  (i.e. probes ttyUSB0, ttyUSB1, etc)
  • handles separate FIAlab devices on separate USB/serial ports, or an integrated FIAlab device on a single USB/serial port
  • user application uses 1 object to access all FIAlab devices
  • user application can send “named commands” to each device by specifying the device type, or defaults to previous device addressed.  If device is not connected, command is ignored.
  • All commands sent to device are error checked for proper values, and defaults are used if argument is not specified.

The software illustrating the commands which are sent to the hardware are in the code here:

The trace logs captured from the device are also illustrative of how these lab devices operate. It’s good data to have on hand if reverse engineering a system.

Device Trace Data

Syringe Pump

%OPENED PROGRAM AND LOGGED ON
%Syringe pump active
%

Port opened by process "fialab5.exe" (PID: 3444)

Request: 10/6/2009 5:46:36 PM.35964

 2F 31 23 52 0D                                    /1#R.           

Answer: 10/6/2009 5:46:36 PM.56164 (+0.2018 seconds)

 2F 30 60 31 38 34 38 34 03 0D 0A                  /0`18484...     

Request: 10/6/2009 5:46:36 PM.56164 (+0.0000 seconds)

 1B 02 41                                          ..A             

Port closed

Port opened by process "fialab5.exe" (PID: 3444)

 2F 31 23 52 0D                                    /1#R.           

Answer: 10/6/2009 5:46:44 PM.25164 (+0.2031 seconds)

 2F 30 60 31                                       /0`1            

Request: 10/6/2009 5:46:44 PM.25164 (+0.0000 seconds)

 1B 02 41                                          ..A             

Port closed

Port opened by process "fialab5.exe" (PID: 3444)

 2F 31 23 52 0D                                    /1#R.           

Answer: 10/6/2009 5:46:45 PM.26764 (+0.2031 seconds)

 2F 30 60 31 38 34 38 34 03                        /0`18484.       

Request: 10/6/2009 5:46:45 PM.26764 (+0.0000 seconds)

 1B 02 41                                          ..A             

Port closed

Port opened by process "fialab5.exe" (PID: 3444)

Port closed

Port opened by process "fialab5.exe" (PID: 3444)

 1B 02 41 2F 31 5A 31 52 0D 1B 02 41               ..A/1Z1R...A    

Answer: 10/6/2009 5:46:53 PM.00164 (+0.1094 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:46:53 PM.01764 (+0.0156 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:46:53 PM.22064 (+0.2031 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:46:53 PM.48564 (+0.2656 seconds)

 1B 02 41 2F 31 51 0D                              ..A/1Q.         

Answer: 10/6/2009 5:46:54 PM.82964 (+0.2188 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:46:54 PM.84564 (+0.0156 seconds)

 1B 02 41 2F 31 51 0D                              ..A/1Q.         

Answer: 10/6/2009 5:46:54 PM.15764 (+0.2031 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:46:54 PM.42364 (+0.2656 seconds)

 1B 02 41 2F 31 51 0D                              ..A/1Q.         

Answer: 10/6/2009 5:46:54 PM.73564 (+0.2031 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:46:55 PM.90764 (+0.1719 seconds)

 1B 02 41 2F 31 4F 52 0D 1B 02 41                  ..A/1OR...A     

Answer: 10/6/2009 5:46:55 PM.73564 (+0.2188 seconds)

 2F 30 4F 03 0D 0A                                 /0O...          

Request: 10/6/2009 5:46:55 PM.75164 (+0.0156 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:46:56 PM.86064 (+0.1094 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:46:57 PM.26764 (+1.4063 seconds)

 1B 02 41 2F 31 51 0D                              ..A/1Q.         

Answer: 10/6/2009 5:46:57 PM.11464 (+0.1250 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:46:57 PM.28664 (+0.1719 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:46:58 PM.39564 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:46:58 PM.55164 (+0.1563 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:46:58 PM.66164 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:46:58 PM.83264 (+0.1719 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:46:58 PM.94264 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

%PULLED IN 75 UL AT FLOWRATE 50 UL/SEC
%
%

Request: 10/6/2009 5:48:42 PM.84864 (+103.9063 seconds)

 1B 02 41 2F 31 56 36 30 30 52 0D                  ..A/1V600R.     

Answer: 10/6/2009 5:48:43 PM.42664 (+0.3906 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:48:43 PM.70764 (+0.2813 seconds)

 1B 02 41 2F 31 3F 0D                              ..A/1?.         

Answer: 10/6/2009 5:48:43 PM.17664 (+0.2031 seconds)

 2F 30 60 30 03 0D 0A                              /0`0...         

Request: 10/6/2009 5:48:44 PM.34864 (+0.1719 seconds)

 1B 02 41 2F 31 50 34 35 30 52 0D 1B 02 41         ..A/1P450R...A  

Answer: 10/6/2009 5:48:44 PM.14564 (+0.2188 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:48:44 PM.14564 (+0.0000 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:48:44 PM.27064 (+0.1250 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:48:46 PM.67664 (+1.4063 seconds)

 1B 02 41 2F 31 51 0D                              ..A/1Q.         

Answer: 10/6/2009 5:48:46 PM.00464 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:48:46 PM.20764 (+0.2031 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:48:47 PM.39564 (+0.1875 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:48:47 PM.55164 (+0.1563 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:48:47 PM.66164 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:48:47 PM.81764 (+0.1563 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:48:47 PM.92664 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:48:47 PM.19264 (+0.2656 seconds)

 1B 02 41 2F 31 3F 0D                              ..A/1?.         

Answer: 10/6/2009 5:48:48 PM.61464 (+0.2031 seconds)

 2F 30 60 34 35 30 03 0D 0A                        /0`450...       

%SWITCHED SYRINGE VALVE FROM OUTPUT TO INPUT
%
%

Request: 10/6/2009 5:49:39 PM.30164 (+7.8438 seconds)

 1B 02 41 2F 31 49 52 0D                           ..A/1IR.        

%SWITCHED SYRINGE VALVE FROM INPUT TO OUTPUT
%
%

Request: 10/6/2009 5:50:03 PM.97364 (+23.5625 seconds)

 1B 02 41 2F 31 4F 52 0D                           ..A/1OR.        

%INJECTED 75 UL AT 50 UL/SEC
%
%

Request: 10/6/2009 5:51:03 PM.58264 (+7.5938 seconds)

 1B 02 41 2F 31 56 36 30 30 52 0D                  ..A/1V600R.     

Answer: 10/6/2009 5:51:03 PM.12964 (+0.3750 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:51:04 PM.41164 (+0.2813 seconds)

 1B 02 41 2F 31 3F 0D                              ..A/1?.         

Answer: 10/6/2009 5:51:04 PM.87964 (+0.2031 seconds)

 2F 30 60 34 35 30 03 0D 0A                        /0`450...       

Request: 10/6/2009 5:51:04 PM.03664 (+0.1563 seconds)

 1B 02 41 2F 31 44 34 35 30 52 0D 1B 02 41         ..A/1D450R...A  

Answer: 10/6/2009 5:51:05 PM.86464 (+0.2188 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:51:05 PM.86464 (+0.0000 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:51:05 PM.97364 (+0.1094 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:51:07 PM.41164 (+1.4375 seconds)

 1B 02 41 2F 31 51 0D                              ..A/1Q.         

Answer: 10/6/2009 5:51:07 PM.75464 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:51:07 PM.92664 (+0.1719 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:51:07 PM.03664 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:51:07 PM.19264 (+0.1563 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:51:07 PM.30164 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:51:08 PM.45764 (+0.1563 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:51:08 PM.56764 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:51:08 PM.83264 (+0.2656 seconds)

 1B 02 41 2F 31 3F 0D                              ..A/1?.         

Answer: 10/6/2009 5:51:08 PM.25464 (+0.2031 seconds)

 2F 30 60 30 03 0D 0A                              /0`0...         

%ASPIRATED 90 UL AT 70 UL/SEC
%
%

Request: 10/6/2009 5:53:09 PM.88464 (+120.6299 seconds)

 1B 02 41 2F 31 56 38 34 30 52 0D                  ..A/1V840R.     

Answer: 10/6/2009 5:53:10 PM.44964 (+0.3966 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:53:10 PM.73664 (+0.2864 seconds)

 1B 02 41 2F 31 3F 0D                              ..A/1?.         

Answer: 10/6/2009 5:53:10 PM.20764 (+0.2021 seconds)

 2F 30 60 30 03 0D 0A                              /0`0...         

Request: 10/6/2009 5:53:11 PM.35964 (+0.1516 seconds)

 1B 02 41 2F 31 50 35 34 30 52 0D 1B 02 41         ..A/1P540R...A  

Answer: 10/6/2009 5:53:11 PM.23564 (+0.2021 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:53:11 PM.23564 (+0.0000 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:53:12 PM.33664 (+0.1011 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:53:13 PM.76864 (+1.4319 seconds)

 1B 02 41 2F 31 51 0D                              ..A/1Q.         

Answer: 10/6/2009 5:53:13 PM.08864 (+0.1011 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:53:13 PM.24064 (+0.1516 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:53:14 PM.34164 (+0.1011 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:53:14 PM.50964 (+0.1685 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:53:14 PM.62764 (+0.1179 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:53:14 PM.77964 (+0.1516 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:53:14 PM.89764 (+0.1179 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:53:14 PM.14964 (+0.2527 seconds)

 1B 02 41 2F 31 3F 0D                              ..A/1?.         

Answer: 10/6/2009 5:53:15 PM.58764 (+0.2021 seconds)

 2F 30 60 35 34 30 03 0D 0A                        /0`540...       

%INJECTED 45 UL AT 80 UL/SEC
%
%

Request: 10/6/2009 5:53:57 PM.86464 (+42.2763 seconds)

 1B 02 41 2F 31 56 39 36 30 52 0D                  ..A/1V960R.     

Answer: 10/6/2009 5:53:58 PM.37964 (+0.3750 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:53:58 PM.67664 (+0.2969 seconds)

 1B 02 41 2F 31 3F 0D                              ..A/1?.         

Answer: 10/6/2009 5:53:58 PM.11464 (+0.2188 seconds)

 2F 30 60 35 34 30 03 0D 0A                        /0`540...       

Request: 10/6/2009 5:53:58 PM.28564 (+0.1719 seconds)

 1B 02 41 2F 31 44 32 37 30 52 0D 1B 02 41         ..A/1D270R...A  

Answer: 10/6/2009 5:53:59 PM.08264 (+0.2188 seconds)

 2F 30 40 03 0D 0A                                 /0@...          

Request: 10/6/2009 5:53:59 PM.08264 (+0.0000 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:53:59 PM.19264 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:54:00 PM.34864 (+0.1563 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:54:00 PM.45764 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:54:00 PM.72364 (+0.2656 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:54:00 PM.83264 (+0.1094 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:54:00 PM.00464 (+0.1719 seconds)

 2F 31 51 0D                                       /1Q.            

Answer: 10/6/2009 5:54:00 PM.19264 (+0.1875 seconds)

 2F 30 60 03 0D 0A                                 /0`...          

Request: 10/6/2009 5:54:01 PM.50464 (+0.3125 seconds)

 1B 02 41 2F 31 3F 0D                              ..A/1?.         

Answer: 10/6/2009 5:54:01 PM.92664 (+0.2031 seconds)

 2F 30 60 32 37 30 03 0D 0A                        /0`270...       

%SHUTDOWN
%
%

Port closed

Port opened by process "fialab5.exe" (PID: 3444)

Request: 10/6/2009 5:56:07 PM.86764 (+125.4375 seconds)

 1B 02 41 2F 31 54 52 0D 1B 02 41 2F 31 54 52 0D   ..A/1TR...A/1TR.

Multiposition Valve

%OPENED PROGRAM AND LOGGED ON
%VALVE ACTIVE
%

Port opened by process "fialab5.exe" (PID: 3820)

Request: 10/6/2009 5:57:39 PM.39864

 1B 02 43 4E 50 31 30 0D 4E 50 31 30 0D 1B 02 43   ..CNP10.NP10...C
 4E 50 31 30 0D 4E 50 31 30 0D 1B 02 43 47 4F 31   NP10.NP10...CGO1
 0D 47 4F 31 0D 1B 02 43 47 4F 31 0D 47 4F 31 0D   .GO1...CGO1.GO1.

Port closed

%CHANGED TO PORT 8
%
%

Port opened by process "fialab5.exe" (PID: 3820)

Request: 10/6/2009 5:58:16 PM.32064 (+35.1875 seconds)

 1B 02 43 47 4F 38 0D 47 4F 38 0D 1B 02 43 47 4F   ..CGO8.GO8...CGO
 38 0D 47 4F 38 0D                                 8.GO8.

Enjoy, biohackers!

2 Comments on More on Bio-lab Automation – Software for Controlling FIAlab Devices for Microfluidics

  1. Tito says:

    Beautiful! Thanks, Jonathan

    Tito

  2. UNCATEGORIZED - TI Intros New OMAP DM5x Coprocessors - TechBlog says:

    […] More on Bio-lab Automation – Software for Controlling FIALab … […]