2、resonon nir 采集白板崩溃:重连相机解决; 3、去掉 imageViewer 的边缘黑框; 4、解决问题:当采集白板数据后,采集影像拉伸问题:硬编码的4096 → 自动计算最大值; 5、记录上次软件布局状态信息,再次打开时恢复; 6、轨迹规划界面文字居中; 7、将 groupbox 换成 dockwidget,然后再菜单栏添加 dock 的开关;
112 lines
2.7 KiB
C++
112 lines
2.7 KiB
C++
#include "stdafx.h"
|
||
#include "QMotorDoubleSlider.h"
|
||
QMotorDoubleSlider::QMotorDoubleSlider(QWidget* pParent /*= NULL*/) :QSlider(pParent)
|
||
{
|
||
connect(this, SIGNAL(valueChanged(int)), this, SLOT(notifyValueChanged(int)));
|
||
|
||
setSingleStep(1);
|
||
|
||
setOrientation(Qt::Horizontal);
|
||
setFocusPolicy(Qt::NoFocus);
|
||
|
||
m_Multiplier = 0;
|
||
}
|
||
|
||
void QMotorDoubleSlider::setMultiplier(float lead, float stepAnglemar, float scaleFactor, int subdivisionParam)
|
||
{
|
||
//根据公式将脉冲换算为距离:1脉冲距离(m_Multiplier)=导程/(360/步距角*细分倍数);网址:https://wenku.baidu.com/view/4b2ea88bd0d233d4b14e69b8.html
|
||
//m_Multiplier(0.00054496986),//上海农科院,修改前:0.00052734375/5=0.00010546875;修改后准确值为0.000544969862759644,近似为0.00054496986/5=0.000108993972,因为有个机械装置1脉冲距离需要除以5;
|
||
//m_Multiplier(0.00054496986)//兴安盟农研所
|
||
m_Multiplier = lead / (360 / stepAnglemar * getValidSubdivision(subdivisionParam)) * scaleFactor;
|
||
}
|
||
|
||
int QMotorDoubleSlider::getValidSubdivision(int subdivisionParam)
|
||
{
|
||
if (subdivisionParam == 2)
|
||
return 4;
|
||
else if (subdivisionParam == 3)
|
||
return 8;
|
||
else if (subdivisionParam == 4)
|
||
return 16;
|
||
else if (subdivisionParam == 5)
|
||
return 32;
|
||
else if (subdivisionParam == 6)
|
||
return 64;
|
||
else if (subdivisionParam == 7)
|
||
return 128;
|
||
else if (subdivisionParam == 8)
|
||
return 256;
|
||
}
|
||
|
||
//向外发射
|
||
void QMotorDoubleSlider::notifyValueChanged(int Value)
|
||
{
|
||
emit valueChanged((double)Value * m_Multiplier);//////////
|
||
}
|
||
|
||
//接收外边
|
||
void QMotorDoubleSlider::setValue(double Value, bool BlockSignals)
|
||
{
|
||
QSlider::blockSignals(BlockSignals);
|
||
|
||
QSlider::setValue(Value / m_Multiplier);////////////
|
||
|
||
if (!BlockSignals)
|
||
emit valueChanged(Value);
|
||
|
||
QSlider::blockSignals(false);
|
||
}
|
||
|
||
void QMotorDoubleSlider::setRange(double Min, double Max)
|
||
{
|
||
QSlider::setRange(Min / m_Multiplier, Max / m_Multiplier);//////
|
||
|
||
emit rangeChanged(Min, Max);
|
||
}
|
||
|
||
void QMotorDoubleSlider::setMinimum(double Min)
|
||
{
|
||
QSlider::setMinimum(Min / m_Multiplier);//////
|
||
|
||
emit rangeChanged(minimum(), maximum());
|
||
}
|
||
|
||
double QMotorDoubleSlider::minimum() const
|
||
{
|
||
return QSlider::minimum() * m_Multiplier;/////
|
||
}
|
||
|
||
void QMotorDoubleSlider::setMaximum(double Max)
|
||
{
|
||
QSlider::setMaximum(Max / m_Multiplier);//////
|
||
|
||
emit rangeChanged(minimum(), maximum());
|
||
}
|
||
|
||
double QMotorDoubleSlider::maximum() const
|
||
{
|
||
return QSlider::maximum() * m_Multiplier;///////
|
||
}
|
||
|
||
double QMotorDoubleSlider::value() const
|
||
{
|
||
int Value = QSlider::value();
|
||
return (double)Value * m_Multiplier;//////
|
||
}
|
||
|
||
double QMotorDoubleSlider::OriginalValue() const
|
||
{
|
||
int Value = QSlider::value();
|
||
return (double)Value;
|
||
}
|
||
|
||
long QMotorDoubleSlider::getPositionPulse(double position)
|
||
{
|
||
return position / m_Multiplier;
|
||
}
|
||
|
||
double QMotorDoubleSlider::getDistanceFromPulse(int pulse)
|
||
{
|
||
return pulse * m_Multiplier;
|
||
}
|