Code Snippets

Code Snippets are, as name says, pieces of code in CANScript used as building blocks for complex logic of EDT content. These objects have very simple capabilities but executes very complex logic when put together. They are used wherever custom logic or interaction is required.
There are many code snippets, but can logically grouped in 13:

  1. CAN Communication:

    1. Call CalcFendtKey ODX Service: The purpose of the snippet is to launch Challenger EOL for X1000 tractors.
    2. Call ODX Service: The purpose of this snippet is provide a 'what' to interact with the CANBus from the CANScript.
    3. Close Shared Connection: This is generally to avoid multiple thread connections typically used for ODX call service.
    4. Process Environment Data: The purpose of this snippet is to convert environment data datatype (extended information gathered from DTCs) into variables for CANScript usage.
  2. Conditional Logic

    1. If/Else: The purpose of this snippet is to associate multiple conditions to a variable defined based on outcome of the previous condition. {If [this],do [that]; OR if [this] do [that]; OR do [that]}
    2. Switch: The Purpose of this snippet is to create a conditional clause based on comparison with known values or variables and allow the multiple value or expression to change the control flow of program, this could require any default expression of variable with there is no known category.
    3. Wait: The purpose of this snippet is to insert delays or wait-time between 2 lines in a CANScript execution.
    4. While Loop: The purpose of this snippet is to associate a conditional clause to a variable defined, to get an outcome or display a message. {While [this], do [that]}
  3. Conversion Functions

    1. Convert ASCII to String: The purpose of this snippet is to convert values stored in Record set of ASCII(American Standard Code for Information Interchange) to a string of values.
    2. Convert String to ASCII: The purpose of this snippet is to convert values stored from a string of values to a record set of ASCII(American Standard Code for Information Interchange).
    3. Convert Type: The purpose of the snippet is to convert a type of data from to different data form.
    4. Convert Units: The purpose of this snippet is to convert values below to Metric, Imperial or USA units for different Engineering values.
  4. Database

    1. Create Database Connection: The Purpose of this snippet to provide an Ethernet connection to an SQL Compatible ECU (eg: NT0x)/Server and read/write Information). The SQL Connection requires User ID and Password and Database name.
      Example: connectionString = "User Id=admin;Password=blubber;Host=192.168.0.1;Database=fendt;"
    2. Define RecordSet: The purpose of this snippet is to provide a way to define a record set having related data during CANScript execution.
    3. Get Postgre Data: The Purpose of this snippet to provide an Ethernet connection to an SQL Compatible ECU/Server and get Query Data/Information and save it into a record set of values (which is multiple values).
      The SQL Connection requires User ID and Password and Database name.
    4. RecordSet Checksum: The Purpose of this snippet to provide Security Checksum for ASCII Data.
    5. Update Postgre Data: The Purpose of this snippet to provide an Ethernet connection to an SQL Compatible ECU/Server and Update Query Data/Information.
    6. Read from Database: The purpose of this snippet is to read data from a database into the CANScript during execution.
  5. Debug Functions

    1. Debug Output Line: The purpose of this snippet is to print he value of a variable in the debug mode of a CANScript execution.
  6. Diagnostic Fault Tree

    1. Find FaultTree File: This snippet is used to find a fault tree file from a predetermined fault tree file from the default directory. (Eg: C:\Program Files ……”)
    2. Set FaultTree Index: The purpose of the snippet is to define the fault tree index file name. It is available only in VariableSetup script and Connection script.
    3. Show FaultTree File: This snippet is used to show fault tree file.
    4. Show FaultTree Index: This snippet is used to show the fault tree index is with appropriate filename eg: index.index.htm”
  7. EDT Functions

    1. Get CAN-USB Status: The purpose of this snippet to get Boolean state for VCI connected to the laptop/PC.
    2. Get Power Status: The purpose of this snippet to get Percentage of Battery power of laptop/PC, Estimated battery life in minutes.
  8. File I/O

    1. Extract Archive: The purpose of this snippet is to extract files from an archive to a directory during the CANScript execution.
    2. Get INI: The purpose of this snippet is to retrieve a value from an INI file during a CANScript execution.
    3. Set INI: The purpose of this snippet is to create an INI file and set a value in it during a CANScript execution.
    4. ByteArray Encryption/Decryp: The purpose of the snippet is encrypt/decrypt a bytearray.
    5. Decompress gz file: the purpose of this snippet to decompress a file in .gz format
    6. Extract Archive without Formatting: The purpose of this snippet is to extract files from an archive to a directory without formatting the drive(hard drive, USB etc.) during the CANScript execution.
    7. File Checksum: This Snippet is used to check a given file for integrity of the file.
    8. File Encryption/Decryption: This Snippet is used to Encrypt/Decrypt a given file for integrity of the file. There are 2 modes: Encrypt and Decrypt. Below are the options for this snipped to be used:
      1. AES
      2. NT03
      3. RSA (AGCO Power Engine Logs): Content Author can use this snippet in for generating a signature to meet security requirements of AP Engine logs.
        Input Parameters: Input Bytes (Array:Byte) - required
        Output Parameters:
        • Output Bytes (Array:Byte) - required
        • Result (Boolean)
        • Error (String)





        This can be used only in "Encrypt" mode. An error is displayed if a user selects "Decrypt" mode.
    9. File Open Dialog: This snippet is used to open a file per user selection.
    10. File Save Dialog: This snippet is used to save a file per user selection.
    11. Format Removable Drive: This snipped is used to fully format a removable drive so that it can be used in an NT03 flash by Service Technicians.
      The variables needed for this snippet shall be defined prior to using it. The snippet looks like below:

      Input Parameters:
      • User Instructions (Global String) - Required
      • Format (only supports FAT32) - Required
      Output Parameters:
      • Path (String) - Required
      • Result (Boolean) - Required
      • Error (String) - Required
      Note: This snippet only detects removable drives. FAT32 supports drives less than or equal to 32GB.





    12. Get Special Folder: This snippet is used to use a pre-defined special Folder at that specified location. The list of available locations for this snippet are:
      • Programs: The directory that contains the user's program groups.
        Ex: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
      • MyDocuments: The 'My Documents' folder.
        Ex: C:\Users\<username>\Documents
      • Favorites: The directory that serves as a common repository for the user's favorite items.
        Ex: C:\Users\<username>\Favorites
      • Startup: The directory that corresponds to the user's startup program.
        Ex: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
      • Recent: The directory that contains the user's most recently used documents.
        Ex: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent
      • SendTo:The directory that contains the Send To menu items.
        Ex: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\SendTo
      • StartMenu: The directory that contains the Start menu items.
        Ex: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu
      • MyMusic: The My Music Folder.
        Ex: C:\Users\<username>\Music
      • MyVideos: The file system directory that serves as a repository for videos that belong to a user. Added in the .NET Framework 4.
        Ex: C:\Users\<username>\Videos
      • DesktopDirectory: The directory used to physically store file objects on the desktop.
        Ex: C:\Users\<username>\Desktop
      • NetworkShortcuts: A file system directory that contains the link objects that may exist in the My Network Places virtual folder. Added in the.NET Framework 4.
        Ex: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Network Shortcuts
      • Fonts: A virtual folder that contains fonts. Added in the .NET Framework 4.
        Ex: C:\WINDOWS\Fonts
      • Templates: The directory that serves as a common repository for the document templates.
        Ex: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Templates
      • ContentStartMenu: The file system directory that contains the programs and folders that appear on the Start menu for all users. This special folder is valid only for Windows NT systems. Added in the .NET Framework 4.
        Ex: C:\ProgramData\Microsoft\Windows\Start Menu
      • ContentPrograms: A folder for components that are shared across applications. This special folder is valid only for Windows NT, Windows 2000, and Windows XP systems. Added in .NET Framework 4.
        Ex: C:\ProgramData\Microsoft\Windows\Start Menu\Programs
      • CommonStartup: A file system directory that contains the programs that appear in the Startup folder for all users. This special folder is valid only for Windows NT systems. Added in the .NET Framework 4.
        Ex: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
      • CommonDesktopDirectory: A file system directory that contains files and folders that appear on the desktop for all users. This special folder is valid only for Windows NT systems. Added in .NET Framework 4.
        Ex: C:\Users\Public\Desktop
      • ApplicationData: The directory that serves as a common repository for application-specific data for the current roaming user.
        Ex: C:\Users\<username>\AppData\Roaming
      • PrinterShortcurts: A file system directory that contains the link objects that can exist in the Printers virtual folder. Added in the .NET Framework 4.
        Ex: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
      • LocalApplicationData: The directory that serves as a common repository for application-specific data that is used by the current, non-roaming user.
        Ex: C:\Users\<username>\AppData\Local
      • InternetCache: The directory that serves as a common repository for temporary Internet files.
        Ex: C:\Users\<username>\AppData\Local\Microsoft\Windows\INetCache
      • Cookies: The directory that serves as a common repository for Internet cookies.
        Ex: C:\Users\<username>\AppData\Local\Microsoft\Windows\INetCookies
      • History: The directory that serves a common repository for Internet History items.
        Ex: C:\Users\<username>\AppData\Local\Microsoft\Windows\History
      • CommonApplicationData: The directory that serves as a common repository for application-specific data that is used by all users.
        Ex: C:\ProgramData
      • Windows: The Windows directory or SYSROOT. This corresponds to the %windir% or %SYSTEMROOT% environment variables. Added in the .NET Framework 4.
        Ex: C:\WINDOWS
      • System: The system directory.
        Ex: C:\WINDOWS\system32
      • ProgramFiles: The program files directory. On a non-x86 system, passing System.Environment.SpecialFolder.ProgramFile to the System.Environment.GetFolderPath(System.Environment.SpecialFolder) method returns the path for non-x86 programs. To get x86 program files directory on a non-x86 system, use the System.Environment.SpecialFolder.ProgramFilesX86 member.
        Ex: C:\Program Files (x86)
      • MyPictures: The 'My Pictures' folder.
        Ex: C:\Users\<username>\Pictures
      • UserProfile: The user's profile folder. Applications should not create files or folders at this level; they should put their data under the locations referred to by Systems.Environment.SpecialFolder.ApplicationData. Added in .NET Framework 4.
        Ex: C:\Users\<username>
      • SystemX86: The Windows System folder. Added in .NET Framework 4.
        Ex: C:\WINDOWS\SysWOW64
      • ProgramFilesX86: The x86 Program Files folder. Added in .NET Framework 4.
        Ex: C:\Program Files (x86)
      • CommonProgramFiles: The directory for components that are shared across applications to get the x86 common program files directory on a non-x86 system, use the System.Environment.SpecialFolder.ProgramFilesX86 member.
        Ex: C:\Program Files (x86)\Common Files
      • CommonProgramFilesX86: The program files folder. Added in the .NET Framework 4.
        Ex: C:\Program Files (x86)\Common Files
      • CommonTemplates: The file system directory that contains the templates that are available to all users. This special folder is valid only for Windows NT systems. Added .NET Framework 4.
        Ex: C:\ProgramData\Microsoft\Windows\Templates
      • CommonDocuments: The file system directory that contains documents that are common to all users. This special folder is valid for Windows NT systems, Windows 95, and Windows 98 systems with Shfolder.dll installed. Added in .NET Framework 4.
        Ex: C:\Users\Public\Documents
      • CommonAdminTools: The file system directory that contains administrative tools for all users of the computer. Added in the .NET Framework 4.
        Ex: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
      • AdminTools: The file system directory that is used to store administrative tools for an individual user. The Microsoft Management Console (MMC) will save customized consoles to this directory, and it will roam with the user. Added in the .NET Framework 4.
        Ex: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools
      • CommonMusic: The file system directory that serves as a repository for music files common to all users. Added in the .NET Framework 4.
        Ex: C:\Users\Public\Music
      • CommonPictures: The file system directory that serves as a repository for image files common to all users. Added in the .NET Framework 4.
        Ex: C:\Users\Public\Pictures
      • CommonVideos: The file system directory that serves as a repository for video files common to all users. Added in the .NET Framework 4.
        Ex: C:\Users\Public\Videos
      • Resources: The file system directory that contains resource data. Added in the .NET Framework 4.
        Ex: C:\WINDOWS\resources
      • CDBurning:  The file system directory that acts as a staging area for files waiting to be written to a CD. Added in the .NET Framework 4.
        Ex: C:\Users\<username>\AppData\Local\Microsoft\Windows\Burn\Burn
      • EdtApplication: The application directory that the EDT application is installed into.
        Ex: C:\\AGCO Corporation\EDT
      • EdtTemp: The temporary directory used by the EDT application for the current user.
        Ex: C:\Users\<username>\AppData\Local\Temp\EDT
      • EDTMCF: The directory where TCD downloads the MCF file to. This directory contains the Tech Connect environment as part of the directory structure.
        Ex:
        Series: "%ProgramData%\AGCO Corporation\TechConnectDiagnostics\Content\Flashfiles\CONFIG"
        All others: "%ProgramData%\AGCO Corporation\TechConnectDiagnostics\\Content\Flashfiles\CONFIG"
        This snippet is available in all CAN Scripts. Using 'EDTMCF'- GetSpecialFolder snippet helps the Content Author retrieve the directory to which Tech Connect Diagnostics downloads the MCF File to. This is environment specific as shown in above examples:



        and when the script is executed in EDT the result is shown beside the variable.

        Other related documentation to this can be found in EDT URL Navigation

  9. General Functions

    • Call Method: The purpose of the snippet is to call a method on a record set for performing some operation during the CANScript execution.
    • Get Property: The purpose of this snippet is to obtain a property of a control and store it in an appropriate variable during the CANScript execution.
    • Set Property: The purpose of this snippet is to set a property of a control with an appropriate value during the CANScript execution.
    • Create Validation: The purpose of this snippet is to specify a validation object for a value list or a numerical value in the CANScript.
    • Formula: The purpose of this snippet is to specify a formula for calculation during the CANScript execution.
    • Set Variable: The purpose of this snippet is to introduce a variable and set its value in the CANScript.
    • Byte Array Checksum: This snippet is used to calculate different types of checksum for an array of bytes of Hex values of data.
    • Define Dll: This script is used to directly call the DLL’s.
      Dll Handling provides a way to load a dll and call methods from that dll from a CANScript.
      Set Up the Dll Definition --> Select the Define Dll snippet.

      Filename is the name of the dll that is to be loaded.Dll Definition is the output dll defintion. Select Add Method to define a method that the dll provides.

      Method Name is the name of the method to be used in the script. This will be the method name you will see in the Call Method snippet. Entry Point is the name of the method provided by the dll. Calling Convention is the method used for passing parameters. Return Type is the data type the method returns. See Dll Data Types for more information.
      Select Add Parameter to add a parameter.

      Name is the name of the parameter to be used in the script. This parameter name will be an input parameter in the Call Method snippet. Type is the data type of the parameter. See Dll Data Types for more information.
      Using the Dll: All methods that were defined in the dll can be accessed through the Call Method snippet.

      Dll Data Types: These data types provide the mapping between the script data types and the types used by the dll.

      • Array (String) Types:

        • LPSTR - A pointer to a null-terminated string of 8-bit (ANSI) characters. When used as a parameter, the string may be altered by the function.
          Script Type: String
        • LPCSTR - A pointer to a constant null-terminated string of 8-bit (ANSI) characters.
          Script Type: String
        • LPTSTR - A pointer to a null-terminated string of 8-bit (ANSI) or 16-bit (Unicode) characters, determined by the platform. When used as a parameter, the string may be altered by the function.
          Script Type: String
        • LPCTSTR - A pointer to a constant null-terminated string of 8-bit (ANSI) or 16-bit (Unicode) characters, determined by the platform.
          Script Type: String
        • LPWSTR - A pointer to a null-terminated string of 16-bit (Unicode) characters. When used as a parameter, the string may be altered by the function.
          Script Type: String
        • LPCWSTR - A pointer to a constant null-terminated string of 16-bit (Unicode) characters.
          Script Type: String
        • LPBYTEARRAY - A pointer to a byte array. When used as a parameter, the array may be altered by the function.
          Script Type: Array- Byte
      • Integer Types:

        • BOOL - A boolean value in a 32 bit container.
          Script Type: Bool
        • BYTE - A byte (8 bits).
          Script Type: Byte
        • LPBYTE - A pointer to a byte. When used as a parameter the value of the byte may be altered by the function.
          Script Type: Byte
        • INT16 - A 16 bit signed integer.
          Script Type: Integer
        • LPINT16 - A pointer to an INT16.
          Script Type: Integer
        • UINT16 - A 16 bit unsigned integer.
          Script Type: Integer
        • LPUINT16 - A pointer to a UINT16.
          Script Type: Integer
        • INT32 - A 32 bit signed integer.
          Script Type: Integer
        • LPINT32 - A pointer to an INT32.
          Script Type: Integer
        • UINT32 - A 32 bit unsigned integer.
          Script Type: Integer
        • LPUINT32 - A pointer to a UINT32.
          Script Type: Integer
        • INT64 - A 64 bit signed integer.
          Script Type: Integer
        • LPINT64 - A pointer to an INT64.
          Script Type: Integer
      • Floating Point Types:

        • FLOAT - A single precision (32 bit) floating point.
          Script Type: Float
        • LPFLOAT - A pointer to a FLOAT.
          Script Type: Float
        • DOUBLE - A double precision (64 bit) floating point.
          Script Type: Float
        • LPDOUBLE - A pointer to a DOUBLE.
          Script Type: Float

    PhidgetController.dll: This is a library that can be used to change the state of digital outputs on a Phidget IO board. The library provides two functions: GetState and SetState. It is intended to extend these function to CANScript using the Define Dll snippet. This library uses the Cdecl calling convention.

    INT32 GetState (LPUINT32 State, UINT32 Timeout): Gets the current state of the Phidget IO board's digital outputs. A return value of 0 indicates that the operation was successful. A return value of 1 indicates that the Phidget IO board was not available before the Timeout elapsed (i.e. it was not found or was locked by another process). Any other return value indicates an unspecified error. If the operation was successful, State will contain the current state of the Phidget IO board's digital outputs. The state of each digital output is represented by 1 bit of the State value with digital output 0 being represented by the least significant bit. Timeout sets the maximum amount of time to wait for the Phidget IO board to become available.

    INT32 SetState (UINT32 State, UINT32 Timeout): Sets the current state of the Phidget IO board's digital outputs. A return value of 0 indicates that the operation was successful. A return value of 1 indicates that the Phidget IO board was not available before the Timeout elapsed (i.e. it was not found or was locked by another process). Any other return value indicates an unspecified error. If the operation was successful, the state of the Phidget IO board's digital outputs has be changed to the state specified by State. The state of each digital output is represented by 1 bit of the State value with digital output 0 being represented by the least significant bit. Timeout sets the maximum amount of time to wait for the Phidget IO board to become available.

    Exporting Functions from a C# dll: In order to expose function in a C# dll to EDT or an unmanaged application, the function must be exported. The abilty to export C# functions is not natively present in Visual Studio, so it requires an additional process after compiling to add the necessary IL to export the function. These articles describe this process in more detail.
    How to Automate Exporting .NET functions to Unmanaged Programs.
    Unamanage Code can Unwrap managed methods.

    Using ExportDll: Export Dll consists of a dll which must be referenced by your dll, and an executable which must run after your dll is compiled. Methods that you want to export must have the ExportDllAttribute.

    • Add Reference to ExportDllAttribute.dll (This dependency will be removed by ExportDll.exe)
    • Add ExportDll attribute to the methods you want to export.

    • Verify the paths for ildasm and ilasm in ExportDll.exe.config (see documentation below for other possible paths)
      <applicationSettings>
      <ExportDll.Properties.Settings>
      <setting name="ildasmpath" serializeAs="String">
      <value>C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe</value>
      </setting>
      <setting name="ilasmpath" serializeAs="String">
      <value>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe</value>
      </setting>
      </ExportDll.Properties.Settings>
      </applicationSettings>
    • Add a Post Build commandline to the project to call ExportDll.exe [CompiledDll] /[BuildConfiguration]
      • Example: "$(ProjectDir)ExportDll.exe" "$(TargetPath)" /$(ConfigurationName)
        Data Types: For the definition of these Windows Data Types see Dll Handling in CANScript.

        Sample Project:
        CSharpDllExport This Project was created with Visual Studio 2005.
        SampleDllExport ​This Calibration Script shows how to use the dll in CANScript.
        If the CSharpDllExport project produces an error after compile, please check the paths in SampleDllExport\ExportDll.exe.config
        <applicationSettings>
        <ExportDll.Properties.Settings>
        <setting name="ildasmpath" serializeAs="String">
        <value>C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe</value>
        </setting>
        <setting name="ilasmpath" serializeAs="String">
        <value>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe</value>
        </setting>
        </ExportDll.Properties.Settings>
        </applicationSettings>
        ildasmpath (MSIL Disassembler) Some other possible paths are:
      • C:\Program Files\Microsoft Visual Studio 2003\SDK\v2.0\Bin\ildasm.exe
      • C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
      • C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin
        ilasmpath (MSIL Assembler) The ilasm.exe is generally found in C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 or the relative folder for the desired framework version.
    • Define Script Signal: This script is used to define any specific signal that is used from ODX script.
    • Get Current Language: This snippet provides what the current Language ID is set/used in EDT. Returns the value in Integer (please ask Ty/Seth what is definition of numbers).
    • Get GPS Week Time: This snippet provides the value of GPS week time.
    • Get Timestamp: This Snippet provides the value of current Return Time value in milliseconds.
    • Is Running Automation: This Snippet is used to set the Boolean variable is set to True.
    • String Functions: The purpose of this snippet is to define a function for an input string to deliver an output/return variable. Below are the types of functions that can be defined for a string

      For an undefined variable as an input string, use double quotes to give a value. Based on the function selected for the the input string additional fields will open up for information, based on which the output variables are returned.
    • Upload to Server: This snippet is used to up-loaded a log file to server by tagging with a 5 digit code so that Engineering/user can access this log file later to study.
  10. Registry Management

    1. Get Registry Key: The purpose of this snippet is to extract a value from the registry using a key during the CANScript execution.
    2. Set Registry Key: The purpose of this snippet is to create/Modify/Delete a value in the registry using a key during the CANScript execution.
    3. Edit Registry: The purpose of this snippet is to edit a value in the registry using a key during the CANScript execution.
  11. Script Management

    1. Comment Line: The purpose of this snippet is add inline documentation to a script.
    2. Get Script Return Code: The purpose of this snippet is to obtain the result of the last script during the CANScript execution.
    3. Set Script Return Code: The purpose of this snippet is to set the result of the last script during the CANScript execution.
  12. Security Functions

    1. Check Password: This snippet is used to validate a known password.
    2. Define Authorization Code: This is used to define the Authorization code algorithm to prevent un-authorized changes with a valid Dealer/Technician who has purchase EDT.
    3. Get EDT ID: This Snippet is used to read EDT ID that is unique for each laptop /PC. [Serial Number in the Footer Area of EDT.]
  13. User Interface

    1. Prompt: Driver Browser: The purpose of this snippet is to provide a way to browse to a drive on the computer during CANScript execution.
    2. Show Message Box: The purpose of this snippet is to insert messages into the CANScript that are displayed when the script is run.
    3. Prompt: Numerical Input: The purpose of this snippet is to allow the user running the CANScript to input numerical data during execution into the variable.
    4. Report Progress: The purpose of this snippet is to report the progress of an activity in terms of percentage during the CANScript execution.
    5. Run Executable: The purpose of this snippet is to run an executable file during the CANScript execution.
    6. Prompt: Text Input: The purpose of this snippet is to allow the user running the CANScript to input text during execution into an available string.
    7. Step: The purpose of this snippet is to display information about a step during CANScript execution.
    8. Set Surface Status: The purpose of this snippet is to set the status of a surface during the CANScript execution.
    9. Run Surface: The purpose of this script is to create and run a surface during CANScript execution.
    10. Launch Fendt EOL: The purpose of the snippet is to launch Challenger EOL for X1000 tractors.
    11. Play Sound: The purpose of this snippet is to play a sound during the CANScript execution.
    12. Prompt: Select COM Port: The purpose of this snippet is to specify a line in the script that prompts the user to select a COM port during the CANScript execution.
    13. Show Popup Surface: This snippet allows the user to design a surface shown in a pop-up window. This opens to a pop-up surface script allowing a user to design a graphical suface for pop-up window.