SDHLibrary-CPP 0.0.2.10 C++ access library for SCHUNK Dextrous Hand SDH

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

# Online help of demonstration programs

The provided demonstration programs have an online help which is shown below:

Online help for program `demo-benchmark`.exe

    Simple script to benchmark communication speed of the SDH:
    The hand will move to a start position in coordinated position control
    mode first. Then periodic movements are performed using the velocity
    with acceleration ramp controller while the communication and control
    rate is printed.

    - Example usage:
      - Make SDH connected via Ethernet move.
        The SDH has IP-Address 192.168.1.42 and is attached to TCP port 23.
        (Requires at least SDH-firmware v0.0.3.1)
        > demo-benchmark --tcp=192.168.1.42:23

      - Make SDH connected to port 2 = COM3 move:
        > demo-benchmark -p 2  --dsaport=3

      - Make SDH connected to USB to RS232 converter 0 move:
        > demo-benchmark --sdh_rs_device=/dev/ttyUSB0  --dsa_rs_device=/dev/ttyUSB1

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-benchmark --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected to:
        - port 2 = COM3 (joint controllers) and
        - port 3 = COM4 (tactile sensor controller)
        > demo-benchmark --port=2 --dsaport=3 -v

    usage: demo-benchmark [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

Online help for program `demo-contact-grasping`.exe

    Simple script to do grasping with tactile sensor info feedback:
    The hand will move to a pregrasp pose (open hand). You can then
    reach an object to grasp into the hand. The actual grasping
    is started as soon as a contact is detected. The finger
    joints then try to move inwards until a certain
    force is reached on the corresponding tactile sensors.

    - Example usage:
      - Make SDH and tactile sensors connected via Ethernet grasp.
        The SDH and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        TCP port 23 and the tactile sensors to TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-contact-grasping --tcp=192.168.1.42:23 --dsa_tcp=:13000

      - Make SDH connected to port 2 = COM3 with tactile sensors
        connected to port 3 = COM4 grasp:
        > demo-contact-grasping -p 2  --dsaport=3

      - Make SDH connected to USB to RS232 converter 0 and with tactile sensors
        connected to USB to RS232 converter 1 grasp:
        > demo-contact-grasping --sdh_rs_device=/dev/ttyUSB0  --dsa_rs_device=/dev/ttyUSB1

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-contact-grasping --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected to:
        - port 2 = COM3 (joint controllers) and
        - port 3 = COM4 (tactile sensor controller)
        > demo-contact-grasping --port=2 --dsaport=3 -v

    usage: demo-contact-grasping [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

    DSA options (tactile sensor):
      -q PORT, --dsaport=PORT
          use RS232 communication PORT to connect to to  tactile sensor controller
          of SDH  instead of default 1='COM2'='/dev/ttyS1'.

      --dsa_tcp[=[IP_OR_HOSTNAME][:PORT]]
          use TCP for communication with the tactile sensor controller.
          The tactile sensor can be reached via TCP/IP on port PORT at
          IP_OR_HOSTNAME, which can be a numeric IPv4 address or a hostname.
          The default is "192.168.1.42:13000"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.2)

      --dsa_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".  If
          the DEVICE_FORMAT_STRING contains '%d' then the dsa PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      --no_rle
          Do not use the RunLengthEncoding

Online help for program `demo-dsa-simple`.exe

Online help for program `demo-dsa`.exe

    Simple demo to test cDSA class of SDHLibrary-cpp.

    Remarks:
    - You must specify at least one of these options to see some output:
      -f | --fullframe
      -r | --resulting
      -c | --controllerinfo
      -s | --sensorinfoinfo
      -m | --matrixinfo=N

    - Example usage:
      - Read a single full frame from tactile sensors connected to port 3 = COM4:
        > demo-dsa --dsaport=3 -f

      - Read a single full frame from tactile sensors connected via TCP/IP (ethernet):
        The tactile sensors have IP-Address 192.168.1.42 and use TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-dsa --dsa_tcp=192.168.1.42:13000 -f

      - Read full frames continuously once per second from tactile sensors
        connected to port 3 = COM4:
        > demo-dsa --dsaport=3 -f -r 1

      - Read full frames continuously 10 times per second from tactile sensors
        connected to port 3 = COM4:
        > demo-dsa --dsaport=3 -f -r 10

      - Read full frames continuously as fast as possible (DSA push-mode)
        from tactile sensors connected to port 3 = COM4:
        > demo-dsa --dsaport=3 -f -r 30

      - Read a single full frame from tactile sensors connected to USB
        to RS232 converter 0:
        > demo-dsa --dsa_rs_device=/dev/ttyUSB0 -f

      - Read the sensor, controller, matrix 0 infos
        from tactile sensors connected to port 3 = COM4:
        > demo-dsa --dsaport=3 -s -c -m 0

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-dsa --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected to
        - port 2 = COM3 (joint controllers) and
        - port 3 = COM4 (tactile sensor controller)
        > demo-dsa -p 2 --dsaport=3 -v
      - Set the sensitivity of all tactile sensor matrixes to 0.75 temporarily.
        The value will be used only temporarily (until reset or power cycle).
        > demo-dsa --dsaport=3 --sensitivity=0.75

      - Set the sensitivity of all tactile sensor matrixes to 0.75 persistently.
        The value will be stored persistently (i.e. will remain after reset or
        power cycle).
        > demo-dsa --dsaport=3 --sensitivity=0.75 --persistent

      - Reset the sensitivity of all tactile sensor matrixes to factory default.
        > demo-dsa --dsaport=3 --sensitivity=0.75 --reset

      - Set the sensitivity of tactile sensor matrices 1 and 4 to individual
        values temporarily.
        The value will be used only temporarily (until reset or power cycle).
        Sensor 1 (distal sensor of finger 1) will be set to 0.1
        Sensor 4 (proximal sensor of finger 3) will be set to 0.4
        > demo-dsa --dsaport=3 --sensitivity1=0.1 --sensitivity4=0.4
      - Like for the sensitivity the thresholds can be adjusted via
        the --threshold=VALUE parameter.

    - Known bugs:
      - see the bug description for "cDSAException: Checksum Error on Windows
        console" in the Related Pages->Bug List section of the doxygen
        documentation

    usage: demo-dsa [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN

    DSA options (tactile sensor):
      -q PORT, --dsaport=PORT
          use RS232 communication PORT to connect to to  tactile sensor controller
          of SDH  instead of default 1='COM2'='/dev/ttyS1'.

      --dsa_tcp[=[IP_OR_HOSTNAME][:PORT]]
          use TCP for communication with the tactile sensor controller.
          The tactile sensor can be reached via TCP/IP on port PORT at
          IP_OR_HOSTNAME, which can be a numeric IPv4 address or a hostname.
          The default is "192.168.1.42:13000"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.2)

      --dsa_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".  If
          the DEVICE_FORMAT_STRING contains '%d' then the dsa PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      --no_rle
          Do not use the RunLengthEncoding

      -r, --framerate=FRAMERATE
          Framerate for acquiring full tactile sensor frames.  Default value 0
          means 'acquire a single frame only'.  Any value > 0 will make the
          DSACON32m controller in the SDH send data at the highest possible rate
          (ca. 30 FPS (frames per second)).

      -f, --fullframe
          Print acquired full frames numerically.

      -S, --sensorinfo
          Print sensor info from DSA (texel dimensions, number of texels...).

      -C, --controllerinfo
          Print controller info from DSA (version...).

      -M, --matrixinfo=MATRIX_INDEX
          Print matrix info for matrix with index MATRIX_INDEX from DSA.
          This includes the current setting for sensitivity and threshold
          of the addressed matrix (if supported by the tactile sensor firmware).      This option can be used multiple times.
      --sensitivity=SENSITIVITY
          Set the sensor sensitivity for all tactile sensor pads to the given
          value. The value SENSITIVITY must be in range [0.0 .. 1.0], where
          0.0 is minimum and 1.0 is maximum sensitivity.
          If --reset is given as well then SENSITIVITY is ignored and
          the sensitivity is reset to the factory default.
          To see the current setting for sensitivity use -M --matrixinfo
          For setting sensitivities individually for a specific sensor X [0..5]
          use --sensitivityX=SENSITIVITY

      --sensitivityX=SENSITIVITY
          X is a sensor index in range [0..5]. Set sensor sensitivity for a
          a specific sensor X. See also --sensitivity.
          This option can be used multiple times (with different X).

      --threshold=THRESHOLD
          Set the sensor threshold for all tactile sensor pads to the given
          value. The value THRESHOLD must be in range [0 .. 4095], where
          (0 is minimum, 4095 is maximum threshold).
          If --reset is given as well then THRESHOLD is ignored and
          the threshold is reset to the factory default.
      --thresholdX=THRESHOLD
          Set sensor threshold for a specific sensor X.
          X is a sensor index in range [0..5]. See also option --threshold.
          This option can be used multiple times (with different X).

      --reset
          If given, then the values given with --sensitivity(X)
          and/or --threshold(X) are reset to their factory default.

      --persistent
          If given, then all the currently set values for sensitivity
          and threshold are saved persistently in the configuration
          memory of the DSACON32m controller in the SDH.
          PLEASE NOTE: the maximum write endurance of the configuration memory
          is about 100.000 times!

      --showdsasettings
          If given, then current settings for sensitivity and
          threshold will be printed on stdout first.

Online help for program `demo-GetAxisActualAngle`.exe

    Print measured actual axis angles of SDH.
    (C++ demo application using the SDHLibrary-CPP library.)

    - Example usage:
      - Print actual angles of an SDH connected via Ethernet.
        The SDH has IP-Address 192.168.1.42 and is attached to TCP port 23.
        (Requires at least SDH-firmware v0.0.3.1)
        > demo-GetAxisActualAngle --tcp=192.168.1.42:23

      - Print actual angles of an SDH connected to port 2 = COM3 once:
        > demo-GetAxisActualAngle -p 2

      - Print actual angles of an SDH connected to port 2 = COM3 every 500ms:
        > demo-GetAxisActualAngle -p 2 -t 0.5

      - Print actual angles of an SDH connected to USB to RS232 converter 0 once:
        > demo-GetAxisActualAngle --sdh_rs_device=/dev/ttyUSB0

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-GetAxisActualAngle --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of an SDH connected to port 2 = COM3
        > demo-GetAxisActualAngle --port=2 -v

    usage: demo-GetAxisActualAngle [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

    Other options:
      -R, --radians
          Use radians and radians per second for angles and angular velocities
          instead of default degrees and degrees per second.
          (The demo programs provided might not evaluate this parameter
          correctly. Thus they might fail if this parameter is used.)

      -F, --fahrenheit
          Use degrees fahrenheit to report temperatures instead of default degrees
          celsius.

      -t PERIOD, --period=PERIOD
          For periodic commands only: Time period of measurements in seconds. The
          default of '0' means: report once only. If set then the time since start
          of measurement is printed at the beginning of every line.

Online help for program `demo-GetFingerXYZ`.exe

    Print measured XYZ position of fingertips of SDH.
    C++ demo application using the SDHLibrary-CPP library.)

    For every finger the actual axis angles and the finger tip coordinates
    are printed.

    - Example usage:
      - Print finger angles and finger tip xyz coordinates of an SDH connected
        via Ethernet. The SDH has IP-Address 192.168.1.42 and is attached to TCP
        port 23.
        (Requires at least SDH-firmware v0.0.3.1)
        > demo-GetFingerXYZ --tcp=192.168.1.42:23

      - Print finger angles and finger tip xyz coordinates of an SDH connected
        to port 2 = COM3 once:
        > demo-GetFingerXYZ -p 2

      - Print finger angles and finger tip xyz coordinates of an SDH connected
        to port 2 = COM3 every 500ms:
        > demo-GetFingerXYZ -p 2 -t 0.5

      - Print finger angles and finger tip xyz coordinates of an SDH connected
        to USB to RS232 converter 0 once:
        > demo-GetFingerXYZ --sdh_rs_device=/dev/ttyUSB0

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-GetFingerXYZ --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of an SDH connected to port 2 = COM3
        > demo-GetFingerXYZ --port=2 -v
    - Known bugs:
      - Command line parameter "-R" does not work when compiled
        with MS Visual Studio

    usage: demo-GetFingerXYZ [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

    Other options:
      -R, --radians
          Use radians and radians per second for angles and angular velocities
          instead of default degrees and degrees per second.
          (The demo programs provided might not evaluate this parameter
          correctly. Thus they might fail if this parameter is used.)

      -F, --fahrenheit
          Use degrees fahrenheit to report temperatures instead of default degrees
          celsius.

      -t PERIOD, --period=PERIOD
          For periodic commands only: Time period of measurements in seconds. The
          default of '0' means: report once only. If set then the time since start
          of measurement is printed at the beginning of every line.

Online help for program `demo-griphand`.exe

    Demonstrate the use of the GripHand command.
    (C++ demo application using the SDHLibrary-CPP library.)

    - Example usage:
      - Make SDH connected via Ethernet move.
        The SDH has IP-Address 192.168.1.42 and is attached to TCP port 23.
        (Requires at least SDH-firmware v0.0.3.1)
        > demo-griphand --tcp=192.168.1.42:23

      - Make SDH connected to port 2 = COM3 move:
        > demo-griphand -p 2

      - Make SDH connected to USB to RS232 converter 0 move:
        > demo-griphand --sdh_rs_device=/dev/ttyUSB0

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-griphand --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of an SDH connected to port 2 = COM3
        > demo-griphand --port=2 -v

    usage: demo-griphand [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

Online help for program `demo-mimic`.exe

    In case you have 2 SDHs you can operate one of them by moving the first
    hand manualy. You must give parameters for 2 hands on the command line.
    (C++ demo application using the SDHLibrary-CPP library.)

    - Example usage:
      - Mimic the manual movements of SDH on port 2 = COM3
        with the SDH on port 5 = COM6:
        > demo-mimic -p 2  -p 5

      - Mimic the manual movements of SDH with CAN IDs 0x01 and 0x11 on
        ESD CAN bus with the SDH with CAN IDs 0x02 and 0x2 on the same
        ESD CAN bus
        > demo-mimic --can --id_read 0x1 --id_write 0x11  --can --id_read 0x2 --id_write 0x22

    usage: demo-mimic [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

    Other options:
      -R, --radians
          Use radians and radians per second for angles and angular velocities
          instead of default degrees and degrees per second.
          (The demo programs provided might not evaluate this parameter
          correctly. Thus they might fail if this parameter is used.)

      -F, --fahrenheit
          Use degrees fahrenheit to report temperatures instead of default degrees
          celsius.

      -t PERIOD, --period=PERIOD
          For periodic commands only: Time period of measurements in seconds. The
          default of '0' means: report once only. If set then the time since start
          of measurement is printed at the beginning of every line.

Online help for program `demo-radians`.exe

    Move proximal and distal joints of finger 1 three times by 0.1745 rad (10 degrees).
    (C++ demo application using the SDHLibrary-CPP library.)

    - Example usage:
      - Make SDH connected via Ethernet move.
        The SDH has IP-Address 192.168.1.42 and is attached to TCP port 23.
        (Requires at least SDH-firmware v0.0.3.1)
        > demo-radians --tcp=192.168.1.42:23

      - Make SDH connected to port 2 = COM3 move:
        > demo-radians -p 2

      - Make SDH connected to USB to RS232 converter 0 move:
        > demo-radians --sdh_rs_device=/dev/ttyUSB0

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-radians --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of an SDH connected to port 2 = COM3
        > demo-radians --port=2 -v

    usage: demo-radians [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

Online help for program `demo-ref`.exe

    Do reference movement???

    usage: demo-ref [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

Online help for program `demo-simple-withtiming`.exe

    Move proximal and distal joints of finger 1 three times by 10 degrees and measure time for these actions.
    (C++ demo application using the SDHLibrary-CPP library.)

    usage: demo-simple-withtiming [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

Online help for program `demo-simple`.exe

    Move proximal and distal joints of finger 1 three times by 10 degrees.
    (C++ demo application using the SDHLibrary-CPP library.)

    - Example usage:
      - Make SDH connected via Ethernet move.
        The SDH has IP-Address 192.168.1.42 and is attached to TCP port 23.
        (Requires at least SDH-firmware v0.0.3.1)
        > demo-simple --tcp=192.168.1.42:23

      - Make SDH connected to port 2 = COM3 move:
        > demo-simple -p 2

      - Make SDH connected to USB to RS232 converter 0 move:
        > demo-simple --sdh_rs_device=/dev/ttyUSB0

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-simple --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of an SDH connected to port 2 = COM3
        > demo-simple --port=2 -v

    usage: demo-simple [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

Online help for program `demo-simple2`.exe

    Move proximal and distal joints of finger 1 three times by 10 degrees, stop movement when halfway done.
    (C++ demo application using the SDHLibrary-CPP library.)

    - Example usage:
      - Make SDH connected via Ethernet move.
        The SDH has IP-Address 192.168.1.42 and is attached to TCP port 23.
        (Requires at least SDH-firmware v0.0.3.1)
        > demo-simple2 --tcp=192.168.1.42:23

      - Make SDH connected to port 2 = COM3 move:
        > demo-simple2 -p 2

      - Make SDH connected to USB to RS232 converter 0 move:
        > demo-simple2 --sdh_rs_device=/dev/ttyUSB0

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-simple2 --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of an SDH connected to port 2 = COM3
        > demo-simple2 --port=2 -v

    usage: demo-simple2 [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

Online help for program `demo-simple3`.exe

    Move axes 1,2 and 3 to a specific point.
    (C++ demo application using the SDHLibrary-CPP library.)

    - Example usage:
      - Make SDH connected via Ethernet move.
        The SDH has IP-Address 192.168.1.42 and is attached to TCP port 23.
        (Requires at least SDH-firmware v0.0.3.1)
        > demo-simple3 --tcp=192.168.1.42:23

      - Make SDH connected to port 2 = COM3 move:
        > demo-simple3 -p 2

      - Make SDH connected to USB to RS232 converter 0 move:
        > demo-simple3 --sdh_rs_device=/dev/ttyUSB0

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-simple3 --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of an SDH connected to port 2 = COM3
        > demo-simple3 --port=2 -v

    usage: demo-simple3 [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

Online help for program `demo-temperature`.exe

    Print measured temperatures of SDH.
    (C++ demo application using the SDHLibrary-CPP library.)

    A vector of temperatures is reported. The first 7 temperatures
    are from sensors close to the corresponding axes motors.
    The 8th value is the temperature of the FPGA, the controller chip (CPU).
    The 9th value is the temperature of the PCB (Printed circuit board)
    in the body of the SDH.
    - Example usage:
      - Print temperatures of an SDH connected via Ethernet.
        The SDH has IP-Address 192.168.1.42 and is attached to TCP port 23.
        (Requires at least SDH-firmware v0.0.3.1)
        > demo-GetAxisActualAngle --tcp=192.168.1.42:23

      - Print temperatures of an SDH connected to port 2 = COM3 once:
        > demo-temperature -p 2

      - Print temperatures of an SDH connected to port 2 = COM3 every 500ms:
        > demo-temperature -p 2 -t 0.5

      - Print temperatures of an SDH connected to USB to RS232 converter 0 move:
        > demo-temperature --sdh_rs_device=/dev/ttyUSB0

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-GetAxisActualAngle --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of an SDH connected to port 2 = COM3
        > demo-temperature --port=2  -v

    usage: demo-temperature [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

    Other options:
      -R, --radians
          Use radians and radians per second for angles and angular velocities
          instead of default degrees and degrees per second.
          (The demo programs provided might not evaluate this parameter
          correctly. Thus they might fail if this parameter is used.)

      -F, --fahrenheit
          Use degrees fahrenheit to report temperatures instead of default degrees
          celsius.

      -t PERIOD, --period=PERIOD
          For periodic commands only: Time period of measurements in seconds. The
          default of '0' means: report once only. If set then the time since start
          of measurement is printed at the beginning of every line.

Online help for program `demo-test`.exe

    Tries to connect to SDH, read actual angles and exits.
    (C++ demo application using the SDHLibrary-CPP library.)

    usage: demo-test [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)

Online help for program `demo-velocity-acceleration`.exe

    Make the SDH move one finger in "velocity with acceleration ramp" control mode.
    (C++ demo application using the SDHLibrary-CPP library.)

      - Make SDH connected via Ethernet move.
        The SDH has IP-Address 192.168.1.42 and is attached to TCP port 23.
        (Requires at least SDH-firmware v0.0.3.1)
        > demo-velocity-acceleration --tcp=192.168.1.42:23

    - Example usage:
      - Make SDH connected to port 2 = COM3 move:
        > demo-velocity-acceleration -p 2

      - Make SDH connected to USB to RS232 converter 0 move:
        > demo-velocity-acceleration --sdh_rs_device=/dev/ttyUSB0

      - Get the version info of both the joint controllers and the tactile
        sensor firmware from an SDH connected via Ethernet.
        The joint controllers and the tactile sensors have a common IP-Address,
        here 192.168.1.42. The SDH controller is attached to the
        default TCP port 23 and the tactile sensors to the default TCP port 13000.
        (Requires at least SDH-firmware v0.0.3.2)
        > demo-velocity-acceleration --tcp=192.168.1.42 --dsa_tcp -v

      - Get the version info of an SDH connected to port 2 = COM3
        > demo-velocity-acceleration --port=2 -v

    usage: demo-velocity-acceleration [options]

    General options:
      -h, --help
          Show this help message and exit.

      -v, --version
          Print the version (revision/release names) and dates of application,
          library (and the attached SDH firmware, if found), then exit.

      -V, --version_check
          Check the firmware release of the connected SDH if it is the one
          recommended by this library. A message will be printed accordingly.

      -d LEVEL, --debug=LEVEL
          Print debug messages of level LEVEL or lower while executing the program.
          Level 0 (default): No messages,  1: application-level messages,
          2: cSDH-level messages, 3: cSDHSerial-level messages

      -l LOGFILE, --debuglog=LOGFILE
          Redirect the printed debug messages to LOGFILE instead of default
          standard error. If LOGFILE starts with '+' then the output will be
          appended to the file (without the leading '+'), else the file will be
          overwritten.

    Communication options:
      -p PORT, --port=PORT, --sdhport=PORT
          Use RS232 communication PORT to connect to the SDH instead of the default
          0='COM1'='/dev/ttyS0'.

      --sdh_rs_device=DEVICE_FORMAT_STRING
          Use DEVICE_FORMAT_STRING instead of the default "/dev/ttyS%d". Useful
          e.g. to use USB to RS232 converters available via "/dev/ttyUSB%d".
          If the DEVICE_FORMAT_STRING contains '%d' then the PORT must also be
          provided. If not then the DEVICE_FORMAT_STRING is the full device name.

      -T TIMEOUT, --timeout=TIMEOUT Timeout in seconds when waiting for data from
          SDH. The default -1 means: wait forever.

      -b BAUDRATE, --baud=BAUDRATE
          Use BAUDRATE in bit/s for communication. Default=115200 Bit/s for RS232
          and 1000000 Bit/s (1MBit/s) for CAN
      -c, --can, --canesd
          Use CAN bus via an ESD adapter to connect to the SDH instead of RS232.

      -n NET, --net=NET
          Use ESD CAN NET for CAN communication, default=0.

      --canpeak
          Use CAN bus via a PEAK adapter to connect to the SDH instead of RS232.

      -e ID_READ, --id_read=ID_READ
          Use CAN ID ID_READ for receiving CAN messages (default: 43=0x2B).

      -w ID_WRITE, --id_write=ID_WRITE
          Use CAN ID ID_WRITE for writing CAN messages (default: 42=0x2A).

      --tcp[=[IP_OR_HOSTNAME][:PORT]]
          Use TCP for communication with the SDH. The SDH can be reached via
          TCP/IP on port PORT at IP_OR_HOSTNAME, which can be a numeric IPv4
          address or a hostname. The default is "192.168.1.42:23"
          When using --tcp and --dsa_tcp then only the last set IP_OR_HOSTNAME
          is used for both.
          (This feature requires at least SDH firmware 0.0.3.1)