代码拉取完成,页面将自动刷新
#include "util.h"
Util::Util()
{
}
bool Util::loadString( const QString &fname, QString &retStr )
{
if ( fname.isEmpty() )
return false;
QFile txtfile( fname );
if ( !txtfile.exists() )
return false;
if( !txtfile.open( QIODevice::ReadOnly | QIODevice::Text ) )
{
return false;
}
QTextStream ts( &txtfile );
retStr = ts.readAll();
return true;
}
bool Util::saveStrng( const QString &fname, const QString &srcstr )
{
QFile txtfile( fname );
if( !txtfile.open( QIODevice::WriteOnly ) )
{
return false;
}
QTextStream ts( &txtfile );
ts << srcstr;
return true;
}
uint16_t Util::modbus_crc16( QByteArray senddata )
{
int len = senddata.size();
uint16_t wcrc=0XFFFF;
uint8_t temp;
int i = 0, j = 0;
for ( i = 0; i < len; i++ )
{
temp = senddata.at( i );
wcrc ^= temp;
for ( j = 0; j < 8; j++ )
{
if ( wcrc&0X0001 )
{
wcrc >>= 1;
wcrc^=0XA001;
}
else
wcrc>>=1;
}
}
temp = wcrc;
return wcrc;
}
QByteArray Util::int_to_four_byte_array(int val)
{
QByteArray ary;
ary.append( ( val >> 24 ) & 0xFF );
ary.append( ( val >> 16 ) & 0xFF );
ary.append( val >> 8 & 0xFF );
ary.append( val & 0xff );
return ary;
}
QByteArray Util::int_to_two_byte_array(qint16 val)
{
QByteArray ary;
ary.append( ( val >> 8 ) & 0xff );
ary.append( val & 0xff );
return ary;
}
void Util::sleep( int msec )
{
QEventLoop eventloop;
QTimer timer;
QObject::connect( &timer, &QTimer::timeout, &eventloop, &QEventLoop::quit );
timer.start( msec );
eventloop.exec();
timer.stop();
}
QJsonObject Util::get_json_root_obj(const QString &filename)
{
QFile jsonfile( filename );
if ( !jsonfile.open( QFile::ReadOnly ) )
{
return QJsonObject();
}
QByteArray data = jsonfile.readAll();
jsonfile.close();
QJsonParseError err;
QJsonDocument doc = QJsonDocument::fromJson( data, &err );
if ( doc.isNull() || !doc.isObject() )
{
qDebug() << __FUNCTION__ << "parse json file " << jsonfile << " failed, " << "err=" << err.errorString();
return QJsonObject();
}
return doc.object();
}
QJsonArray Util::get_json_array(const QString &filename)
{
QFile jsonfile( filename );
if ( !jsonfile.open( QFile::ReadOnly ) )
{
qDebug() << __FUNCTION__ << "error : open file failed!" << jsonfile.fileName();
return QJsonArray();
}
QByteArray data = jsonfile.readAll();
QJsonParseError err;
QJsonDocument jsondoc = QJsonDocument::fromJson( data, &err );
if ( jsondoc.isNull() )
{
qDebug() << __FUNCTION__ << "err : parse json file " << jsonfile.fileName() << "failed, err=" << err.errorString();
return QJsonArray();
}
QJsonArray data_ary = jsondoc.array();
return data_ary;
}
QJsonObject Util::get_json_obj(const QString &filename, const QString &obj_name)
{
QJsonObject root_obj = get_json_root_obj( filename );
if ( root_obj.isEmpty() )
return QJsonObject();
auto it = root_obj.find( obj_name );
if ( it == root_obj.end() )
return QJsonObject();
QJsonObject jsobj = it.value().toObject();
return jsobj;
}
bool Util::save_json_obj(const QString &filename, const QJsonObject &jsobj)
{
if ( filename.isEmpty() )
return false;
QJsonDocument savedoc;
savedoc.setObject( jsobj );
QByteArray ary = savedoc.toJson();
QString jsonstr( ary );
QFile jsonfile( filename );
if ( !jsonfile.open( QFile::ReadWrite | QFile::Truncate ) )
{
qDebug() << __FUNCTION__ << " open file failed! ";
return false;
}
QTextStream writer( &jsonfile );
writer.setCodec("UTF-8");
writer.setGenerateByteOrderMark( true );
writer << jsonstr;
jsonfile.close();
return true;
}
bool Util::save_json_array(const QString &filename, const QJsonArray &array)
{
if ( filename.isEmpty() )
return false;
QJsonDocument savedoc;
savedoc.setArray( array );
QByteArray bt_ary = savedoc.toJson();
QString jsonstr( bt_ary );
QFile jsonfile( filename );
if ( !jsonfile.open( QFile::ReadWrite | QFile::Truncate ) )
{
qDebug() << __FUNCTION__ << " open file failed! ";
return false;
}
QTextStream writer( &jsonfile );
writer << jsonstr;
writer.setCodec("UTF-8");
writer.setGenerateByteOrderMark( true );
jsonfile.close();
return true;
}
QString Util::num_superscript(int n)
{
wchar_t c;
switch ( n )
{
case 6:
c = L'\u2076';
break;
}
return QString(c);
}
QString Util::decimals( QString s , int n )
{
float tmp = s.toFloat();
return decimal( tmp, n );
}
QString Util::decimal( float num, int n )
{
return QString::number( num, 'f', n );
}
QString Util::get_nums_from_character(QString characts)
{
QString num="";
for(QChar ch:characts){
if(ch.isDigit()){
num.append(ch);
}
}
return num;
}
QString Util::claculate_data(QByteArray array1)
{
bool ok;
int sign=1;
// QByteArray array(425ae78f);
QString tmpStr=array1.toHex(0);
QByteArray array=tmpStr.toLatin1();
array=QByteArray::number(array.toLongLong(&ok,16),2);
if(array.length()==32){
if(array.at(0)=='1') sign = -1;
array.remove(0,1);
}
QByteArray fraction = array.right(23); //取小数
double mantissa=0;
for(int i=0;i<fraction.length();i++) //迭代数组,以小数形式计算分数
if(fraction.at(i)=='1') mantissa+=1.0/(pow(2,i+1));
int exponent =array.left(array.length()-23).toLongLong(&ok,2)-127;
QString calcu_Data =QString::number(sign*pow(2,exponent)*(mantissa+1.0),'f',5);
qDebug()<<__FUNCTION__<<"number="<<QString::number(sign*pow(2,exponent)*(mantissa+1.0),'f',5);
return calcu_Data;
}
QStringList Util::secondsToHMS(int seconds)
{
int hours = seconds / 3600;
int minutes = (seconds % 3600) / 60;
int secs = seconds % 60;
return QStringList()<<QString("%1:%2").arg(hours, 2, 10, QChar('0'))
.arg(minutes, 2, 10, QChar('0'))
<<QString("%3").arg(secs, 2, 10, QChar('0'));
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。