UniSet 2.32.1
|
#include <Calibration.h>
Классы | |
class | Part |
struct | Point |
Открытые типы | |
typedef float | TypeOfValue |
typedef std::vector< Part > | PartsVec |
Открытые члены | |
Calibration (const std::string &name, const std::string &confile="calibration.xml", size_t reserv=50) | |
Calibration (xmlNode *node, size_t reserv=50) | |
long | getValue (const long raw, bool crop_raw=false) |
long | getMinValue () const noexcept |
long | getMaxValue () const noexcept |
long | getLeftValue () const noexcept |
long | getRightValue () const noexcept |
long | getRawValue (const long cal, bool range=false) const |
long | getMinRaw () const noexcept |
long | getMaxRaw () const noexcept |
long | getLeftRaw () const noexcept |
long | getRightRaw () const noexcept |
void | build (const std::string &name, const std::string &confile, xmlNode *node=0) |
long | tRound (const TypeOfValue &val) const |
void | setCacheSize (size_t sz) |
size_t | getCacheSize () const |
void | setCacheResortCycle (size_t n) |
size_t | getCacheResotrCycle () const noexcept |
std::string | getName () |
Статические открытые данные | |
static const TypeOfValue | ValueOutOfRange = std::numeric_limits<Calibration::TypeOfValue>::max() |
static const long | outOfRange = std::numeric_limits<long>::max() |
Защищенные члены | |
void | insertToCache (const long raw, const long val) |
Защищенные данные | |
long | minRaw |
long | maxRaw |
long | minVal |
long | maxVal |
long | rightVal |
long | leftVal |
long | rightRaw |
long | leftRaw |
Друзья | |
std::ostream & | operator<< (std::ostream &os, Calibration &c) |
std::ostream & | operator<< (std::ostream &os, Calibration *c) |
Класс позволяющий загружать калибровочную
характеристику из конфигурационного (xml)файла и получать по ней точки.
Сами диаграммы представляют из себя следующую секцию в xml x - сырое значение (по которому ведётся поиск) y - калиброванное значение
Диаграмма позволяет задать множество точек. На отрезках между точками используется линейная аппроксимация.
Т.к. часто большую часть времени (во многих задачах) аналоговое значение, меняется в небольших пределах, то добавлен кэш ( rawValue --> calValue ) по умолчанию на 5 значений. Размер кэша можно задать (поменять или отключить) при помощи Calibration::setCacheSize().
Помимо этого, с учётом того, что каждое попадание в кэш обновляет счётчик обращений к значению, необходимо пересортировывать весь кэш (чтобы наиболее часто используемые были в начале). Чтобы не делать эту операцию каждый раз, сделан счётчик циклов. Т.е. через какое количество обращений к кэшу, производить принудительную пересортировку. Значение по умолчанию - 5(размер кэша). Задать можно при помощи Calibration::setCacheResortCycle()
typedef float uniset::Calibration::TypeOfValue |
Тип для хранения значения
void uniset::Calibration::build | ( | const std::string & | name, |
const std::string & | confile, | ||
xmlNode * | node = 0 ) |
построение характеристики из конф. файла
name | - название характеристики в файле |
confile | - файл содержащий данные |
node | - если node!=0, то используется этот узел... |
|
inlinenoexcept |
Возвращает крайнее левое значение 'y' встретившееся в диаграмме (ПОСЛЕ СОРТИРОВКИ ПО ВОЗРАСТАНИЮ 'x'!)
|
inlinenoexcept |
Возвращает крайнее левое значение 'x' встретившееся в диаграмме (ПОСЛЕ СОРТИРОВКИ ПО ВОЗРАСТАНИЮ 'x'!)
|
inlinenoexcept |
Возвращает максимальное значение 'y' встретившееся в диаграмме
|
inlinenoexcept |
Возвращает максимальное значение 'x' встретившееся в диаграмме
|
inlinenoexcept |
Возвращает минимальное значение 'y' встретившееся в диаграмме
|
inlinenoexcept |
Возвращает минимальное значение 'x' встретившееся в диаграмме
long uniset::Calibration::getRawValue | ( | const long | cal, |
bool | range = false ) const |
Получение сырого значения по калиброванному
range=true | вернуть крайнее значение в диаграмме если cal < leftVal или cal > rightVal (т.е. выходит за диапазон) |
Если range=false, то может быть возвращено значение outOfRange.
|
inlinenoexcept |
Возвращает крайнее правое значение 'y' встретившееся в диаграмме (ПОСЛЕ СОРТИРОВКИ ПО ВОЗРАСТАНИЮ 'x'!)
|
inlinenoexcept |
Возвращает крайнее правое значение 'x' встретившееся в диаграмме (ПОСЛЕ СОРТИРОВКИ ПО ВОЗРАСТАНИЮ 'x'!)
long uniset::Calibration::getValue | ( | const long | raw, |
bool | crop_raw = false ) |
Получение калиброванного значения
raw | - сырое значение |
crop_raw | - обрезать переданное значение по крайним точкам |
|
inline |
преобразование типа для хранения в тип для аналоговых датчиков
|
static |
выход за границы диапазона
|
static |
выход за границы диапазона (TypeOfValue)