Index: src/client/c/hu/varadiistvan/xplra/XPlane.cc
===================================================================
--- src/client/c/hu/varadiistvan/xplra/XPlane.cc	(revision 14)
+++ src/client/c/hu/varadiistvan/xplra/XPlane.cc	(revision 15)
@@ -132,5 +132,5 @@
 //------------------------------------------------------------------------------
 
-int XPlane::getInt(const char* name) throw(Exception)
+void XPlane::getScalar(const char* name, uint8_t type) throw(Exception)
 {
     checkStream();
@@ -138,5 +138,5 @@
     stream->writeU8(Protocol::COMMAND_GET_SINGLE);
     stream->writeString(name, strlen(name));
-    stream->writeU8(Protocol::TYPE_INT);
+    stream->writeU8(type);
     if (!stream->flush()) checkStream();
 
@@ -144,6 +144,35 @@
     checkStream();
     checkResult(result);
+}
+
+//------------------------------------------------------------------------------
+
+int XPlane::getInt(const char* name) throw(Exception)
+{
+    getScalar(name, Protocol::TYPE_INT);
 
     int value = stream->readS32();
+    checkStream();
+    return value;
+}
+
+//------------------------------------------------------------------------------
+
+float XPlane::getFloat(const char* name) throw(Exception)
+{
+    getScalar(name, Protocol::TYPE_FLOAT);
+
+    float value = stream->readFloat();
+    checkStream();
+    return value;
+}
+
+//------------------------------------------------------------------------------
+
+double XPlane::getDouble(const char* name) throw(Exception)
+{
+    getScalar(name, Protocol::TYPE_DOUBLE);
+
+    double value = stream->readDouble();
     checkStream();
     return value;
Index: src/client/c/hu/varadiistvan/xplra/XPlane.h
===================================================================
--- src/client/c/hu/varadiistvan/xplra/XPlane.h	(revision 14)
+++ src/client/c/hu/varadiistvan/xplra/XPlane.h	(revision 15)
@@ -108,4 +108,14 @@
     int getInt(const char* name) throw(Exception);
 
+    /**
+     * Get a float value.
+     */
+    float getFloat(const char* name) throw(Exception);
+
+    /**
+     * Get a double value.
+     */
+    double getDouble(const char* name) throw(Exception);
+
 private:
     /**
@@ -119,4 +129,10 @@
      */
     void checkResult(uint8_t result) throw(ProtocolException);
+
+    /**
+     * Issue the command to get a single, scalar value. The result is
+     * also checked, but the value should be read by the caller.
+     */
+    void getScalar(const char* name, uint8_t type) throw(Exception);
 };
 
Index: test/basictest.cc
===================================================================
--- test/basictest.cc	(revision 14)
+++ test/basictest.cc	(revision 15)
@@ -37,4 +37,5 @@
 using hu::varadiistvan::xplra::XPlane;
 using hu::varadiistvan::xplra::Exception;
+using hu::varadiistvan::xplra::ProtocolException;
 
 //------------------------------------------------------------------------------
@@ -47,16 +48,34 @@
         printf("Connecting to X-Plane...\n");
         xplane.connect();
-        printf("Connected to X-Plane.\n");
+        printf("Connected to X-Plane.\n\n");
 
         printf("Querying the number of the engines...\n");
         int numEngines = xplane.getInt("sim/aircraft/engine/acf_num_engines");
-        printf("The number of engines: %d\n", numEngines);
+        printf("The number of engines: %d\n\n", numEngines);
 
-        printf("Querying an invalid dataref...\n");
-        xplane.getInt("sim/aircraft/engine/num_engines");
+        try {
+            printf("Querying an invalid dataref...\n");
+            xplane.getInt("sim/aircraft/engine/num_engines");
+            printf("\n>>>>>>>>>>>> Succeeded!!!!!!!!!!!!!!!!!!!!!!\n\n");
+        } catch(const ProtocolException& exception) {
+            printf("Exception caugth: %s\n\n", exception.what());
+        }
+
+        printf("Querying the spool time of a jet engine...\n");
+        float spoolTime = xplane.getFloat("sim/aircraft/engine/acf_spooltime_jet");
+        printf("The spool time: %f\n\n", spoolTime);
+
+        printf("Querying the spool time of a propeller...\n");
+        spoolTime = xplane.getFloat("sim/aircraft/engine/acf_spooltime_prop");
+        printf("The spool time: %f\n\n", spoolTime);
+
+        printf("Querying the coordinates...\n");
+        double latitude = xplane.getDouble("sim/flightmodel/position/latitude");
+        double longitude = xplane.getDouble("sim/flightmodel/position/longitude");
+        printf("The coordinates: %f, %f\n\n", latitude, longitude);
 
         return 0;
     } catch(const Exception& exception) {
-        printf("Exception caugth: %s\n", exception.what());
+        printf("\n>>>>>>>>>>>>>>>>> Exception caugth: %s\n", exception.what());
 
         return 1;
