This lib is supposed to be used as a sensor's calibration or control program. This makes Cubic Spline Model from some sample plots(sets of (value, voltage)), and then discretize the model (dividing the range of voltage into some steps) in order to use the calibrated model data without getting the INVERSE function.

Revision:
13:16fc61b41eff
Parent:
12:db5110d9d494
Child:
14:a99bf22b919d
--- a/TRP105F_Spline.cpp	Tue Jun 07 04:35:15 2016 +0000
+++ b/TRP105F_Spline.cpp	Tue Jun 07 16:23:19 2016 +0000
@@ -577,7 +577,7 @@
         fwrite(&_Threshold[i],  sizeof(unsigned short), 1, fp);
         fputc(0x3b, fp);
     }
-    fwrite(&_Sample_Num, sizeof(int), 1, fp);
+    fwrite(&_Sample_Num, sizeof(unsigned short), 1, fp);
     fputc(0x3b, fp);
     for(int i = 0; i < _Sample_Num; i++) {
         fwrite(&_Sample_Set[i].x,    sizeof(unsigned short), 1, fp);
@@ -661,7 +661,7 @@
         fwrite(&_Threshold[i],  sizeof(unsigned short), 1, fp);
         fputc(0x3b, fp);
     }
-    fwrite(&_Sample_Num, sizeof(int), 1, fp);
+    fwrite(&_Sample_Num, sizeof(unsigned short), 1, fp);
     fputc(0x3b, fp);
     for(int i = 0; i < _Sample_Num; i++) {
         fwrite(&_Sample_Set[i].x,    sizeof(unsigned short), 1, fp);
@@ -739,50 +739,52 @@
     char buffer[3];
 
     for(int i = 0; i < _ENUM; i++) {
+        //Set X
         for(int j = 0; j < 3; j++) {
-            while(!com->readable());
-            buffer[j] 
-            = (*com).getc();
-        }
-        _Set[i].x       = static_cast<unsigned short>(0xFFFF & (buffer[0] << 8 | buffer[1]));
-        //tmp             = static_cast<  char        >(0xFF   & (buffer[2]));
-
-        for(int j = 0; j < 3; j++) {
-            while(!com->readable());
             buffer[j] = com->getc();
         }
-        _Set[i].y       = static_cast<unsigned short>(0xFFFF & (buffer[0] << 8 | buffer[1]));
-        //tmp             = static_cast<  char        >(0xFF   & (buffer[2]));
+        com->putc(0x06);        //return ACK
+        _Set[i].x       = static_cast<unsigned short>(0xFFFF & (buffer[1] << 8 | buffer[0]));
 
+        //Set Y
         for(int j = 0; j < 3; j++) {
-            while(!com->readable());
+            buffer[j] = com->getc();
+        }
+        com->putc(0x06);        //return ACK
+        _Set[i].y       = static_cast<unsigned short>(0xFFFF & (buffer[1] << 8 | buffer[0]));
+
+        //Threshold
+        for(int j = 0; j < 3; j++) {
             buffer[j] = com->getc();
         }
-        _Threshold[i]   = static_cast<unsigned short>(0xFFFF & (buffer[0] << 8 | buffer[1]));
-        //tmp             = static_cast<  char        >(0xFF   & (buffer[2]));
+        com->putc(0x06);        //return ACK
+        _Threshold[i]   = static_cast<unsigned short>(0xFFFF & (buffer[1] << 8 | buffer[0]));
     }
 
+    //Sample Num
     for(int j = 0; j < 3; j++) {
-        while(!com->readable());
         buffer[j] = com->getc();
     }
-    _Sample_Num         = static_cast<unsigned short>(0xFFFF & (buffer[0] << 8 | buffer[1]));
-    //tmp             = static_cast<  char        >(0xFF   & (buffer[2]));
+    com->putc(0x06);        //return ACK
+    _Sample_Num         = static_cast<unsigned short>(0xFFFF & (buffer[1] << 8 | buffer[0]));
 
     for(int i = 0; i < _Sample_Num; i++) {
+        //Sample Set X
         for(int j = 0; j < 3; j++) {
-            while(!com->readable());
             buffer[j] = com->getc();
         }
-        _Sample_Set[i].x= static_cast<unsigned short>(0xFFFF & (buffer[0] << 8 | buffer[1]));
-        //tmp             = static_cast<  char        >(0xFF   & (buffer[2]));
-        
+        com->putc(0x06);        //return ACK
+        _Sample_Set[i].x= static_cast<unsigned short>(0xFFFF & (buffer[1] << 8 | buffer[0]));
+
+        //Sample Set Y
         for(int j = 0; j < 3; j++) {
-            while(!com->readable());
             buffer[j] = com->getc();
         }
-        _Sample_Set[i].y= static_cast<unsigned short>(0xFFFF & (buffer[0] << 8 | buffer[1]));
-        //tmp             = static_cast<  char        >(0xFF   & (buffer[2]));
+        if(i != _Sample_Num - 1)
+            com->putc(0x06);        //return ACK
+        else
+            com->putc(0x04);        //return EOT
+        _Sample_Set[i].y= static_cast<unsigned short>(0xFFFF & (buffer[1] << 8 | buffer[0]));
     }
 }