SDHLibrary-CPP 0.0.2.10SCHUNK GmbH & Co. KG
C++ access library for SCHUNK Dextrous Hand SDH

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)