Files
EJM_Display/PublicFunctions/Basic.h
2025-10-10 23:10:21 +08:00

85 lines
3.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef BASIC_H
#define BASIC_H
#include <GlobalDefinitions/DataType.h>
#include <QCoreApplication>
#include <QTime>
/**
* @brief map 映射函数,把x的值,映射到out_min到out_max的范围内
* @param x 需要映射的值
* @param in_min x有可能的最小值
* @param in_max x有可能的最大值
* @param out_min 输出的最小值
* @param out_max 输出的最大值
* @return 映射结果
*/
M_d64 map(M_d64 x, M_d64 in_min, M_d64 in_max, M_d64 out_min, M_d64 out_max);
/**
* @brief Sleep_ms 不占用线程的延时函数
* @param msec 需要延时的毫秒数
*/
void Sleep_ms(M_u16 msec);
/**
* @brief 获取 32 位数据的第 N 位状态
* @param data 32 位数据源(支持 uint32_t 或 int32_t
* @param bitIndex 位索引0 = 最低位/第1位31 = 最高位/第32位
* @param defaultValue 索引越界时的默认返回值(默认 false
* @return bool 位状态true = 1false = 0
*/
bool getBitOf32Data(uint32_t data, int bitIndex, bool defaultValue = false);
/**
* @brief 将 32 位数据的第 N 位设为 1
* @param data 原始 32 位数据(按引用修改)
* @param bitIndex 位索引0 = 最低位31 = 最高位)
* @return bool 成功返回 true若索引越界返回 false且不修改 data
*/
bool setBitOf32Data(uint32_t &data, int bitIndex);
/**
* @brief 将 32 位数据的第 N 位清 0
* @param data 原始 32 位数据(按引用修改)
* @param bitIndex 位索引0 = 最低位31 = 最高位)
* @return bool 成功返回 true若索引越界返回 false且不修改 data
*/
bool clearBitOf32Data(uint32_t &data, int bitIndex);
/**
* @brief 将 32 位数据的第 N 位设为指定状态
* @param data 原始 32 位数据(按引用修改)
* @param bitIndex 位索引0 = 最低位31 = 最高位)
* @param bitValue 要写入的位值true = 1false = 0
* @return bool 成功返回 true若索引越界返回 false且不修改 data
*/
bool writeBitOf32Data(uint32_t &data, int bitIndex, bool bitValue);
/**
* @brief 将 QVariant 按“先转字符串判断小数点”逻辑格式化
* @param variant待转换的 QVariant 数据
* @param decimalDigits需要保留的小数位数默认2位可自定义
* @return 格式化后的字符串
*/
QString variantToFormattedString(const QVariant& variant, int decimalDigits);
/**
* 通过索引提取uint32_t的8位部分
* @param data 要提取的32位无符号整数
* @param index 索引0=HH(高8位), 1=HL(次高8位), 2=LH(次低8位), 3=LL(低8位)
* @return 对应的8位部分
* @throws std::out_of_range 当索引超出0-3范围时
*/
uint8_t extractUInt32_8BitPart(uint32_t data, uint8_t index);
/**
* 通过索引提取uint32_t的16位部分
* @param data 要提取的32位无符号整数
* @param index 索引0=高16位, 1=低16位
* @return 对应的16位部分uint16_t类型
* @throws std::out_of_range 当索引超出0-1范围时
*/
uint16_t extractUInt32_16BitPart(uint32_t data, int index);
#endif // BASIC_H