fix & add

1、在界面上实现选择相机类型的功能;
2、创建了一个光谱仪操作的纯虚基类(ImagerOperationBase)并实现了大部分的操作,具体类型的光谱仪应继承此类并实现纯虚函数;
3、添加了 resonon 的 nir 320 相机,修改 resonon 的 pica l 相机的实现:继承 ImagerOperationBase;
4、重构类 QMotorDoubleSlider,提高其通用性,所有马达相关的 slider 都使用此类;
5、适配 resonon nir 320 显微镜使用的 2 轴线性平台,有些特殊的马达参数设置(setMotorParamMicroscope 函数)绑定了 nir 的相机类型参数;
6、修改:将线性平台的量程信息保存在cfg配置文件中,并修改配置文件读写类来读写此量程信息;
This commit is contained in:
tangchao0503
2024-12-11 13:50:03 +08:00
parent 9fa9fc8efb
commit 6469bff15d
24 changed files with 1544 additions and 788 deletions

123
HPPA/utility_tc.cpp Normal file
View File

@ -0,0 +1,123 @@
#include "utility_tc.h"
#include <QDir>
QString formatTimeStr(char * format)
{
//获取系统时间
time_t timer;//time_t就是long int 类型
struct tm *tblock;
timer = time(NULL);//返回秒数(精度为秒)从1970-1-1,00:00:00 可以当成整型输出或用于其它函数
tblock = localtime(&timer);
//printf("Local time is: %s\n", asctime(tblock));
//格式化时间为需要的格式
char timeStr_tmp[256] = { 0 };
strftime(timeStr_tmp, sizeof(timeStr_tmp), format, tblock);//
QString timeStr2(timeStr_tmp);
// qDebug() << "time is:" << timeStr2;
return timeStr2;
}
QString getFileNameBaseOnTime()
{
using namespace std;
//获取系统时间
time_t timer;//time_t就是long int 类型
struct tm *tblock;
timer = time(NULL);//返回秒数(精度为秒)从1970-1-1,00:00:00 可以当成整型输出或用于其它函数
tblock = localtime(&timer);
//printf("Local time is: %s\n", asctime(tblock));
//格式化时间为需要的格式
char fileNameTmp[256] = { 0 };
char dirNameTmp[256] = { 0 };
strftime(fileNameTmp, sizeof(fileNameTmp), "%Y%m%d_%H%M%S", tblock);
strftime(dirNameTmp, sizeof(dirNameTmp), "%Y%m%d", tblock);
QString fileName(fileNameTmp);
QString dirName(dirNameTmp);
// QString fileName=QString::number(tblock->tm_year+1900)+QString::number(tblock->tm_mon+1)+QString::number(tblock->tm_mday)+"_"+QString::number(tblock->tm_hour)+QString::number(tblock->tm_min);//
//设置文件绝对路径
QDir path("/media/nvme");
if(!path.exists(dirName))
{
path.mkdir(dirName);
}
path.cd(dirName);
QString absoluteFilePath=path.path()+"/"+fileName;
// printf("absoluteFilePath is: %s\n", absoluteFilePath.c_str());
// qDebug() << "absoluteFilePath is:" << absoluteFilePath;
return absoluteFilePath;
}
void bubbleSort(unsigned short * a, int n)
{
// //排序实现1
// for(int i=0;i<numberOfPixel;i++)
// for(int j=1;j<numberOfPixel-i;j++)
// if(a[j-1]>a[j])
// swap(a+j-1,a+j);
//排序实现2
int j,k,flag;
flag = n;
while(flag>0)
{
k=flag;
flag=0;
for(j=1;j<k;j++)
if(a[j-1]>a[j])
{
swap(a+j-1,a+j);
flag=j;
}
}
}
void swap(unsigned short * a, unsigned short * b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
bool createDir(QString fullPath)
{
QDir dir(fullPath);
if (dir.exists()) {
return true;
} else {
bool ok = dir.mkpath(fullPath);//创建多级目录
return ok;
}
}
QList<QString> getFileInfo(QString file)
{
QFileInfo fileInfo = QFileInfo(file);
QString fileName, fileSuffix, filePath;
filePath = fileInfo.absolutePath();//绝对路径
fileName = fileInfo.fileName();//文件名
fileSuffix = fileInfo.suffix();//文件后缀
// qDebug() << fileName <<endl
// << fileSuffix<< endl
// << filePath<< endl;
QList<QString> result;
result.append(filePath);
result.append(fileName);
result.append(fileSuffix);
return result;
}