2025-08-20 23:06:28 +08:00
|
|
|
|
#ifndef BASIC_H
|
|
|
|
|
|
#define BASIC_H
|
|
|
|
|
|
#include <GlobalDefinitions/DataType.h>
|
2025-10-20 22:28:37 +08:00
|
|
|
|
#include <GlobalDefinitions/Variable.h>
|
2025-08-20 23:06:28 +08:00
|
|
|
|
#include <QCoreApplication>
|
|
|
|
|
|
#include <QTime>
|
2025-10-20 22:28:37 +08:00
|
|
|
|
#include <QRegularExpression>
|
2025-08-20 23:06:28 +08:00
|
|
|
|
|
2025-10-10 23:10:21 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* @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 = 1,false = 0
|
|
|
|
|
|
*/
|
2025-09-15 22:28:43 +08:00
|
|
|
|
bool getBitOf32Data(uint32_t data, int bitIndex, bool defaultValue = false);
|
2025-10-10 23:10:21 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 将 32 位数据的第 N 位设为 1
|
|
|
|
|
|
* @param data 原始 32 位数据(按引用修改)
|
|
|
|
|
|
* @param bitIndex 位索引(0 = 最低位,31 = 最高位)
|
|
|
|
|
|
* @return bool 成功返回 true;若索引越界返回 false,且不修改 data
|
|
|
|
|
|
*/
|
2025-09-15 22:28:43 +08:00
|
|
|
|
bool setBitOf32Data(uint32_t &data, int bitIndex);
|
2025-10-10 23:10:21 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 将 32 位数据的第 N 位清 0
|
|
|
|
|
|
* @param data 原始 32 位数据(按引用修改)
|
|
|
|
|
|
* @param bitIndex 位索引(0 = 最低位,31 = 最高位)
|
|
|
|
|
|
* @return bool 成功返回 true;若索引越界返回 false,且不修改 data
|
|
|
|
|
|
*/
|
2025-09-15 22:28:43 +08:00
|
|
|
|
bool clearBitOf32Data(uint32_t &data, int bitIndex);
|
2025-10-10 23:10:21 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 将 32 位数据的第 N 位设为指定状态
|
|
|
|
|
|
* @param data 原始 32 位数据(按引用修改)
|
|
|
|
|
|
* @param bitIndex 位索引(0 = 最低位,31 = 最高位)
|
|
|
|
|
|
* @param bitValue 要写入的位值:true = 1,false = 0
|
|
|
|
|
|
* @return bool 成功返回 true;若索引越界返回 false,且不修改 data
|
|
|
|
|
|
*/
|
2025-09-15 22:28:43 +08:00
|
|
|
|
bool writeBitOf32Data(uint32_t &data, int bitIndex, bool bitValue);
|
2025-10-10 23:10:21 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @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);
|
2025-10-20 22:28:37 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief getNodeValue 获取节点内的值
|
|
|
|
|
|
* @param nodeId 欲获取的节点文本
|
|
|
|
|
|
* @return 类型:QVariant 节点的值
|
|
|
|
|
|
*/
|
|
|
|
|
|
QVariant getNodeValue(const QString &nodeId);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief getColorStr 获取颜色文本
|
|
|
|
|
|
* @param Str 欲获取的文本内容
|
|
|
|
|
|
* @return 返回颜色文本
|
|
|
|
|
|
*/
|
|
|
|
|
|
QString getColorStr(QString Str);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief getColor
|
|
|
|
|
|
* @param str 任意颜色字符串
|
|
|
|
|
|
* @return QColor(无效 QColor 表示解析失败)
|
|
|
|
|
|
*/
|
|
|
|
|
|
QColor getColor(const QString &str);
|
2025-08-20 23:06:28 +08:00
|
|
|
|
#endif // BASIC_H
|