Hi @Brad,
@Huajiang 's posts pretty much covered it, but in an effort to hit what they pointed out as well as additional information I have consolidated within a single post below:
The 6 main files that make up a method can be broken down by 3 main categories: Execution Files, Layout Files, and Method Editor Files.
Execution Files are files used by Run Control to perform the actions that were coded. They are the lowest level of code that can be written within VENUS and are required for Run Control. These files include hsl and sub. They are ASCII based files that can opened with the HSL Method Editor or any text-based program.
hsl
- Libraries that are referenced are stored within this file
- All main Method tab steps are stored within this file
- If a device is used (ML_STAR for example), it is defined within this file using a layout file as reference
- When a method is being written with Method Editor, the steps are shown within the file with commented tags that reference line number and a unique value that is used to sync up all the files that contain the information that was stored
sub
- An extension of the hsl file but for any logic that has been stored within a submethod tab in the method
- The sub file will be referenced by the hsl and its functions are called within the hsl file as if they were library calls
- Utilizes the same comment tags as the hsl file
- Includes the OnAbort tab from the method editor file as it is considered a submethod as well
Layout Files store all the information regarding the deck. References to the ML_STAR device as well as any other device originating within the layout are also stored here (TrackGripper, EntryExit, etc). These files include lay and res files. The files are formatted by default as binary but can be configured to be ASCII as well. Anything that requires direct control over a system requires a Layout file that references a device to be controlled (ML_STAR).
lay
- Includes all of the labware information for the deck layout which includes file paths for labware, coordinates, sequences, properties, etc
- The deck layout editor parses/edits this file and displays the information as 3D visualizations of components in space
- the lay files are referenced by the hsl so that access to the relevant sequence and positions can be interpreted and sent to the Run Control program which turns each ML_STAR step into a firmware command to be sent to the instrument
res
- Stores resource information that was set by the Deck Layout editor
- By default, a ML_STAR resource is created, but this information is only needed for scheduled methods
- Defaults to ASCII based and can be opened with any text-based editor
Method Editor Files are files that are used by the Method Editor as an in between to store every single line of code within the method. These files include the med and stp files and are by default stored as binary but can also be configured to be ASCII. The method editor will read through every line within the hsl file and match the unique key associated with each step to a dictionary style lookup table with the same key within the med file. The result is the line of code that can be seen within the Method Editor.
med
- Includes every non device function within the hsl and sub files that are connected by a unique key value
- Parameters needed to show this line within the method editor are stored here (image of step, properties of the function, etc)
- Any custom dialog within the method will also have the information compiled within this file
- It is the lookup table for the method editor to turn line-based code into visual based code
stp
- Includes all the device-based commands within the method with their own unique key that corresponds to when they are used within the hsl or sub files
- Includes all error handling options and selected settings that were set for the command that was referenced
- Read only property for the med file is stored within this file to disable editing of the med file within the method editor
All of these files are utilized to read/write a method using the Method Editor. All of these files are also saved with a check sum that will throw an error at run time during analysis if any one of the files were edited outside of the Method Editor. Only hsl, sub, lay, and res files are needed for run control to analyze and compile the method.
The hsl, sub, med, and stp files must all have the same file name and be within the same folder. The lay and res files also must be within the same folder and share a file name, but does not have to be the same as the method.
Example:
Method Editor
hsl File
med File
DataDef,HxPars,3,6d371dbe_77f2_427f_a51d45f7aa65f862,
[
"1ReturnValue",
"t_strLabID",
"1FunctionName",
"SeqGetLabwareId",
"3FieldCount",
"1",
"(FunctionPars",
"3-534642658",
"0",
"(-533921770",
"(0",
"3-534642680",
"0",
"3-534642681",
"91",
"3-534642682",
"91",
"1-534642683",
"sequenceObj",
"1-534642685",
"C:\\Program Files (x86)\\Hamilton\\Library\\HSLSeqLib.hsl",
"3-534642642",
"4756",
"1-533921767",
"",
"3-533921768",
"0",
"3-534642677",
"2",
"1-533921769",
"",
")",
")",
"1-533921771",
"",
"1-534642685",
"HSLSeqLib.hsl",
"3-534642677",
"1",
")",
"3ParsCommandVersion",
"2",
"(BlockData",
"(1",
"1-533921782",
"SingleLibFunction.bmp",
"1-533921779",
"t_strLabID = SeqGetLabwareId(ML_STAR.SMP_CAR_24_15x100_A00_0001);",
")",
")",
"1Timestamp",
"2024-12-04 10:06:18",
"(ParamValue",
"1Value.0",
"ML_STAR.SMP_CAR_24_15x100_A00_0001",
")",
"(Variables",
"(-533921792",
"(SeqGetLabwareId",
"(0",
"10",
"FunctionName",
")",
")",
")",
"(-534118398",
"(t_strLabID",
"(0",
"10",
"ReturnValue",
")",
")",
")",
"(-534118399",
"(ML_STAR.SMP_CAR_24_15x100_A00_0001",
"(0",
"10",
"ParamValue",
"11",
"Value.0",
")",
")",
")",
")",
")"
];
DataDef,HxPars,3,2bf60795_6fbf_4115_a570f9b8dc10287d,
[
"1ReturnValue",
"t_strPosID",
"1FunctionName",
"SeqGetPositionId",
"3FieldCount",
"1",
"(FunctionPars",
"3-534642658",
"0",
"(-533921770",
"(0",
"3-534642680",
"0",
"3-534642681",
"90",
"3-534642682",
"90",
"1-534642683",
"sequenceObj",
"1-534642685",
"C:\\Program Files (x86)\\Hamilton\\Library\\HSLSeqLib.hsl",
"3-534642642",
"4676",
"1-533921767",
"",
"3-533921768",
"0",
"3-534642677",
"2",
"1-533921769",
"",
")",
")",
"1-533921771",
"",
"1-534642685",
"HSLSeqLib.hsl",
"3-534642677",
"1",
")",
"3ParsCommandVersion",
"2",
"(BlockData",
"(1",
"1-533921782",
"SingleLibFunction.bmp",
"1-533921779",
"t_strPosID = SeqGetPositionId(ML_STAR.SMP_CAR_24_15x100_A00_0001);",
")",
")",
"1Timestamp",
"2024-12-04 10:06:57",
"(ParamValue",
"1Value.0",
"ML_STAR.SMP_CAR_24_15x100_A00_0001",
")",
"(Variables",
"(-533921792",
"(SeqGetPositionId",
"(0",
"10",
"FunctionName",
")",
")",
")",
"(-534118398",
"(t_strPosID",
"(0",
"10",
"ReturnValue",
")",
")",
")",
"(-534118399",
"(ML_STAR.SMP_CAR_24_15x100_A00_0001",
"(0",
"10",
"ParamValue",
"11",
"Value.0",
")",
")",
")",
")",
")"
];