From bd93dbb92da512a1bd585ed29bc46a5e8fc60015 Mon Sep 17 00:00:00 2001 From: Callum Date: Wed, 30 Oct 2013 00:45:28 +0800 Subject: [PATCH] Added a dilatometer "sensor" --- server/sensor.c | 3 ++- server/sensors/dilatometer.c | 27 ++++++++++++++++++--------- server/sensors/dilatometer.h | 11 ++++++++++- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/server/sensor.c b/server/sensor.c index a87a4d8..bc424c3 100644 --- a/server/sensor.c +++ b/server/sensor.c @@ -92,7 +92,8 @@ void Sensor_Init() //Sensor_Add("pressure1", PRESSURE1, Pressure_Read, Pressure_Init, 5000,0,5000,0); //Sensor_Add("pressure_feedback", PRESSURE_FEEDBACK, Pressure_Read, Pressure_Init, 5000,0,5000,0); //Sensor_Add("enclosure", ENCLOSURE, Enclosure_Read, Enclosure_Init, 1,1,1,1); - Sensor_Add("dilatometer", 0, Dilatometer_Read, Dilatometer_Init, Dilatometer_Cleanup, NULL); + Sensor_Add("dilatometer_pos", DIL_POS, Dilatometer_Read, Dilatometer_Init, Dilatometer_Cleanup, NULL); + Sensor_Add("dilatometer_diff",DIL_DIFF, Dilatometer_Read, Dilatometer_Init, Dilatometer_Cleanup, NULL); } /** diff --git a/server/sensors/dilatometer.c b/server/sensors/dilatometer.c index 4358acc..3b05c5f 100644 --- a/server/sensors/dilatometer.c +++ b/server/sensors/dilatometer.c @@ -159,7 +159,7 @@ void CannyThreshold() * @param samples - Number of rows to scan (increasing will slow down performance!) * @returns true on successful read */ -bool Dilatometer_GetExpansion( double * value, int samples) +bool Dilatometer_GetExpansion( int id, double * value, int samples) { bool result = false; double average = 0; @@ -221,12 +221,21 @@ bool Dilatometer_GetExpansion( double * value, int samples) { result = true; // Successfully found an edge // If the experiment has already been initialised - if( lastPosition > 0) - { - // Find the rate of expansion and convert to mm. Will give a negative result for compression. - *value = (average - lastPosition) * SCALE; - lastPosition = average; // Current position now becomes the last position - } + switch (id) + { + case DIL_POS: + *value = average*SCALE; + return result; + case DIL_DIFF: + if( lastPosition > 0) + { + // Find the rate of expansion and convert to mm. Will give a negative result for compression. + *value = (average - lastPosition) * SCALE; + lastPosition = average; // Current position now becomes the last position + } + return result; + default: + return false; } } return result; } @@ -238,7 +247,7 @@ bool Dilatometer_GetExpansion( double * value, int samples) */ bool Dilatometer_Read(int id, double * value) { - bool result = Dilatometer_GetExpansion(value, SAMPLES); + bool result = Dilatometer_GetExpansion(id, value, SAMPLES); return result; } @@ -250,7 +259,7 @@ bool Dilatometer_Init(const char * name, int id) // Make an initial reading (will allocate memory the first time only). double val; lastPosition = 0; // Reset the last position - bool result = Dilatometer_GetExpansion(&val, 1); + bool result = Dilatometer_GetExpansion(DIL_POS, &val, 1); return result; } diff --git a/server/sensors/dilatometer.h b/server/sensors/dilatometer.h index 52831e1..d224051 100644 --- a/server/sensors/dilatometer.h +++ b/server/sensors/dilatometer.h @@ -17,9 +17,18 @@ #define RATIO 3 #define KERNELSIZE 3 -//Scaling factor required to change from pixels to mm +//Scaling factor required to change from pixels to nm #define SCALE 1 // Note camera has not been calibrated yet so result will be in pixels +/** + * Enum of Dilatometer IDs + */ +typedef enum +{ + DIL_POS, + DIL_DIFF +} DilatometerID; + extern bool Dilatometer_Init(const char * name, int id); // Initialise the dilatometer extern bool Dilatometer_Cleanup(int id); // Cleanup extern bool Dilatometer_Read(int id, double * value); // Read the Dilatometer -- 2.20.1