Rsh API  SDK 2.1
Документация по программированию
 Указатель Классы Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы Страницы
Функции
Файл RshFunctions.h

Прототипы глобальных функций. Подробнее...

#include "RshDefChk.h"
#include "RshBufferType.h"
Граф включаемых заголовочных файлов для RshFunctions.h:
Граф файлов, в которые включается этот файл:

См. исходные тексты.

Функции

U64 RshMix ()
 Генерация уникального числа Подробнее...
 
U64 RshMix (U64 seed)
 Генерация уникального числа Подробнее...
 
U32 RshCRC32 (U8 *buf, size_t len)
 Вычисление контрольной суммы CRC32. Подробнее...
 
double RshLsbToVoltCoef (U32 gain, double range, U8 bitSize)
 Вычисление коэффициента преобразования [МЗР/Вольт]. Подробнее...
 
double RshVoltToLsbCoef (U32 gain, double range, U8 bitSize)
 Вычисление коэффициента преобразования [Вольт/МЗР]. Подробнее...
 
double RshVoltToLsb (double voltage, U32 gain, double range, U8 bitSize)
 Преобразование данных из вольт в МЗР Подробнее...
 
double RshLsbToVolt (double lsb, U32 gain, double range, U8 bitSize)
 Преобразование данных из МЗР в вольты Подробнее...
 
double RshRoundD (double value, double precision)
 Округление числа с заданной точностью Подробнее...
 
const wchar_t * RshConvertToUTF16 (const char *pStr)
 Преобразование строки в кодировку UTF-16 из UTF-8. Подробнее...
 
template<typename T , RshDataTypes dataCode>
U32 RshCopyStringToBuffer (const char *str, RshBufferType< T, dataCode > &userBuffer)
 Копирование данных из строки в буфер RSH_BUFFER_U8 или RSH_BUFFER_S8. Подробнее...
 
template<typename T , RshDataTypes dataCode>
U32 RshFillBufferWithRandomNumbers (RshBufferType< T, dataCode > &userBuffer, U32 seed=0)
 Заполнение буфера случайными числами. Подробнее...
 
template<typename T >
RshCutV (T v, T min, T max)
 Корректировка значения переменной - попадание в границы диапазона. Подробнее...
 
template<typename T >
void RshCut (T &v, T min, T max)
 Корректировка значения переменной - попадание в границы диапазона. Подробнее...
 
template<typename T >
void RshMiMa (T v, T &min, T &max)
 Сравнение значения с текущим максимумом и минимумом Подробнее...
 

Подробное описание

Прототипы глобальных функций.

Дата
28.12.2015
Версия
1.0 [SDK 2.1]

В этом файле содержатся прототипы функций, часто используемых в RSH SDK.

Функции

const wchar_t* RshConvertToUTF16 ( const char *  pStr)

Преобразование строки в кодировку UTF-16 из UTF-8.

Данная функция используется в основном для инициализации строк std::wstring значениями строковых констант. Дело в том, что если исходник имеет кодировку UTF-8, возникают проблемы с кирилическими символами (по крайней мере в Windows) при преобразовании их в формат UTF-16. Данная функция позволяет обойти эту проблему.

Аргументы
[in]pStrСтрока в кодировке UTF-8
Возвращает
Строка в кодировке UTF-16
Предупреждения
Текущая реализации функции не очень хорошая, используется статический буфер размером 1024 символа (отсюда максимальная длина строки), плюс этот буфер перезаписывается каждый раз при вызове функции, т.е. результат преобразования может использоваться только для инициализации других переменных - иначе данные будут потеряны при следующем вызове функции.
template<typename T , RshDataTypes dataCode>
U32 RshCopyStringToBuffer ( const char *  str,
RshBufferType< T, dataCode > &  userBuffer 
)

Копирование данных из строки в буфер RSH_BUFFER_U8 или RSH_BUFFER_S8.

Данная функция может быть использована для того, чтобы скопировать данные из строки в буфер. Тип буфера должен быть rshBufferTypeU8 или rshBufferTypeS8, иначе будет возвращен код ошибки.

Аргументы
[in]strСтрока, которая будет скопирована в буфер. Должна завершаться нулем, т.к. для определения длины строки используется вызов strlen()
[in,out]userBufferБуфер, в который будут скопированы данные строки
Возвращает
RSH_API_SUCCESS или код ошибки.

Перекрестные ссылки RSH_API_PARAMETER_NOTSUPPORTED.

U32 RshCRC32 ( U8 buf,
size_t  len 
)

Вычисление контрольной суммы CRC32.

Данная функция вычисляет crc32 заданной строки.

Аргументы
[in]bufУказатель на буфер с данными (строку).
[in]lenКоличество символов в заданной строке, по которым будет производиться вычисление контрольной суммы.
Возвращает
Вычисленное значение crc32 или ноль, если входные параметры неверны.
template<typename T >
void RshCut ( T &  v,
min,
max 
)
inline

Корректировка значения переменной - попадание в границы диапазона.

Аргументы
[in,out]vСсылка на переменную, значение которой нужно откорректировать
[in]minНижняя граница диапазона
[in]maxВерхняя граница диапазона

Новое "обрезанное" значение переменной. Если начальное значение v лежит внутри границ [min;max], будет возвращено это значение.
Если v было меньше, чем min, будет возвращено значение min.
Если v было больше, чем max, будет возвращено значение max.
Данная функция - аналог RshCutV(), но "обрезка" выполняется на месте, т.к. значение v передается по ссылке.

template<typename T >
T RshCutV ( v,
min,
max 
)
inline

Корректировка значения переменной - попадание в границы диапазона.

Аргументы
[in]vНачальное значение переменной
[in]minНижняя граница диапазона
[in]maxВерхняя граница диапазона
Возвращает
Новое "обрезанное" значение переменной. Если начальное значение v лежит внутри границ [min;max], будет возвращено это значение.
Если v было меньше, чем min, будет возвращено значение min.
Если v было больше, чем max, будет возвращено значение max.
template<typename T , RshDataTypes dataCode>
U32 RshFillBufferWithRandomNumbers ( RshBufferType< T, dataCode > &  userBuffer,
U32  seed = 0 
)

Заполнение буфера случайными числами.

Аргументы
[in]seedЗерно для функции std::srand(). По умолчанию (seed = 0) будет использовано значение, полученное с помощью функции RshMix().

Буфер будет заполнен случайными числами, сгенеренными функцией std::rand(). После выполнения этого метода, поле RshBufferType::Size() станет равным RshBufferType::PSize().

Перекрестные ссылки RSH_API_PARAMETER_NOTSUPPORTED.

double RshLsbToVolt ( double  lsb,
U32  gain,
double  range,
U8  bitSize 
)

Преобразование данных из МЗР в вольты

Данная функция выполняет действие, обратное вызову RshVoltToLsb() - преобразовывает данные из МЗР в вольты.

См. также
RshVoltToLsb()

Перекрестные ссылки RshVoltToLsbCoef().

Граф вызовов:

double RshLsbToVoltCoef ( U32  gain,
double  range,
U8  bitSize 
)

Вычисление коэффициента преобразования [МЗР/Вольт].

Данная функция вычисляет коэффициент, который может быть использован для преобразования данных из Вольт в МЗР (и наоборот).
Например, если нужно загрузить буфер с данными в ГСПФ, можно подготовить буфер с отсчетами в вольтах (результат вычисления некой функции, к примеру), и затем преобразовать данный буфер в формат МЗР, который уже можно загрузить в устройство. Для этого каждый отсчет нужно домножить на коэффициент, который и рассчитывает данная функция.

Аргументы
[in]gainКоэффициент усиления, используемый устройством или каналом, данные для которого нужно преобразовать.
[in]rangeПолный входной диапазон устройства (при коэффициенте усиления равном 1). Можно получить максимальное положительное значение напряжения используя метод IRshDevice::Get() с параметром RSH_GET_DEVICE_INPUT_RANGE_VOLTS, и затем умножить полученное значение на 2, чтобы получить полный входной диапазон.
[in]bitSizeКоличество бит. Данное значение определяет максимальный диапазон в МЗР (диапазон = 1<<bitSize) Метод RshApi IRshDevice::GetData() сдвигает данные влево, чтобы был заполнен максимальный значащий разряд, поэтому при работе с этими данными размер bitSize будет равен 8, 16, или 32 (а не разрядности АЦП/ЦАП).
Возвращает
Рассчитанный коэффициент, который может быть использован для преобразования данных
Прим.
"LSB to volt" в названии функции означает, что расчитанный коэффициент будет иметь размерность [МЗР/Вольт] и можно его испольовать как для преобразования данных из вольт в МЗР (для этого данные нужно на коэффициент домножить), так и для преобразования из МЗР в вольты (для этого данные нужно на коэффициент поделить).

Перекрестные ссылки RSH_CMPDOUBLE.

Используется в RshVoltToLsb().

Граф вызова функции:

template<typename T >
void RshMiMa ( v,
T &  min,
T &  max 
)
inline

Сравнение значения с текущим максимумом и минимумом

Аргументы
[in]vЗначение, которое нужно сравнить
[in,out]minСсылка на переменную, в которой хранится текущее значение минимума
[in,out]maxСсылка на переменную, в которой хранится текущее значение максимума

Данная функция может использоваться в циклах для определения максимума и минимума в массиве или буфере.

Уст.:
Нет необходимости использовать эту функцию, так как доступны STL аналоги.
U64 RshMix ( )

Генерация уникального числа

Данная функция генерирует 64битное число, используя текущее время, идентификатор процесса и данные функции clock().

Возвращает
Сгенерированное уникальное число

Перекрестные ссылки __rshgetpid и NULL.

Используется в RshFillBufferWithRandomNumbers< double, rshBufferTypeDouble >(), RshFillBufferWithRandomNumbers< float, rshBufferTypeFloat >(), RshFillBufferWithRandomNumbers< S16, rshBufferTypeS16 >(), RshFillBufferWithRandomNumbers< S32, rshBufferTypeS32 >(), RshFillBufferWithRandomNumbers< S8, rshBufferTypeS8 >(), RshFillBufferWithRandomNumbers< U16, rshBufferTypeU16 >(), RshFillBufferWithRandomNumbers< U32, rshBufferTypeU32 >() и RshFillBufferWithRandomNumbers< U8, rshBufferTypeU8 >().

Граф вызова функции:

U64 RshMix ( U64  seed)

Генерация уникального числа

Данная функция генерирует 64битное число, используя заданное начальное значение (seed). Генерация числа также зависит от текущего времени и идентификатора процесса

Аргументы
[in]seedИсходное число
Возвращает
Сгенерированное уникальное число

Перекрестные ссылки __rshgetpid и NULL.

double RshRoundD ( double  value,
double  precision 
)

Округление числа с заданной точностью

Данная функция округляет число с плавающей точкой до заданного количества знаков после запятой.
Например, если передать в функцию значение 3.14159 и указать precision=2, результат будет равено 3.14

Аргументы
[in]valueЧисло, которое нужно округлить
[in]precisionЖелаемая точность (количество знаков после запятой)
Возвращает
Результат округления
double RshVoltToLsb ( double  voltage,
U32  gain,
double  range,
U8  bitSize 
)

Преобразование данных из вольт в МЗР

Данная функция преобразует значение напряжения в вольтах соответствующий ему код АЦП в МЗР.

Аргументы
[in]voltageЗначение напряжения, которое необходимо преобразовать
[in]gainКоэффициент усиления, используемый устройством или каналом, данные для которого нужно преобразовать.
[in]rangeПолный входной диапазон устройства (при коэффициенте усиления равном 1). Можно получить максимальное положительное значение напряжения используя метод IRshDevice::Get() с параметром RSH_GET_DEVICE_INPUT_RANGE_VOLTS, и затем умножить полученное значение на 2, чтобы получить полный входной диапазон.
[in]bitSizeКоличество бит. Данное значение определяет максимальный диапазон в МЗР (диапазон = 1<<bitSize) Метод RshApi IRshDevice::GetData() сдвигает данные влево, чтобы был заполнен максимальный значащий разряд, поэтому при работе с этими данными размер bitSize будет равен 8, 16, или 32 (а не разрядности АЦП/ЦАП).
Возвращает
Код АЦП в МЗР
Прим.
Данная функция удобна, когда нужно сделать небольшое количество преобразований. Если предполагается многократный вызов данной функции (при обработке массива, например), лучше воспользоваться одной из функций RshVoltToLsbCoef() или RshLsbToVoltCoef(), и использовать полученный коэффициент для преобразования данных в массиве.

Перекрестные ссылки RshLsbToVoltCoef().

Граф вызовов:

double RshVoltToLsbCoef ( U32  gain,
double  range,
U8  bitSize 
)

Вычисление коэффициента преобразования [Вольт/МЗР].

Данная функция - аналог функции RshLsbToVoltCoef() function, но вычисляет обратный коэффициент.
RshVoltToLsbCoef() = 1/RshLsbToVoltCoef();
Добавлена для удобства.

См. также
RshLsbToVoltCoef()

Используется в RshLsbToVolt().

Граф вызова функции: