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.
Diff: TRP105F_Spline.cpp
- 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])); } }