DiagnosisPage.cpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. #include "DiagnosisPage.h"
  2. #include "../common/JQCommon.h"
  3. DiagnosisPage::DiagnosisPage(QWidget *parent)
  4. : QWidget(parent)
  5. {
  6. ui.setupUi(this);
  7. Init();
  8. }
  9. DiagnosisPage::~DiagnosisPage()
  10. {}
  11. void DiagnosisPage::Init()
  12. {
  13. this->setAttribute(Qt::WA_DeleteOnClose);
  14. ui.axisSwitchTabPage->tabBar()->hide();
  15. ui.axisSwitchTabPage->setCurrentIndex(0);
  16. ui.axisListTree->setHeaderHidden(true);
  17. ui.axisListTree->setEditTriggers(QAbstractItemView::NoEditTriggers);
  18. ns_module::CViewInterface* pCViewInterface = ns_module::CViewInterface::GetInstance();
  19. if (pCViewInterface)
  20. {
  21. m_veCAxis = pCViewInterface->GetViewMotion()->GetAxisList();
  22. // 创建模型
  23. m_model = new QStandardItemModel(this);
  24. QString strModeA;
  25. QStandardItem* pModeType = nullptr;
  26. QStandardItem* rooto = m_model->invisibleRootItem();
  27. QStandardItem* root1 = new QStandardItem(tr("Diagnosis Page", "诊断页面"));
  28. rooto->appendRow(root1);
  29. root1->setFlags(root1->flags() | Qt::ItemIsEnabled);
  30. for (auto a: m_veCAxis)
  31. {
  32. QString strMode = QString::fromLocal8Bit(a->GetModuleType().c_str());
  33. if (strModeA != strMode)
  34. {
  35. pModeType = new QStandardItem(strMode);
  36. root1->appendRow(pModeType);
  37. strModeA = strMode;
  38. }
  39. // 添加二级节点
  40. QStandardItem* pAisType = new QStandardItem(QString::fromLocal8Bit(a->GetStringAxisType().c_str()));
  41. pModeType->appendRow(pAisType);
  42. }
  43. ui.axisListTree->setModel(m_model);
  44. ui.axisListTree->expandAll();
  45. }
  46. // 控件状态
  47. JQCommon::SetQLineEditLimit(ui.negLineEdit);
  48. JQCommon::SetQLineEditLimit(ui.posLineEdit);
  49. JQCommon::SetQLineEditLimit(ui.speedLineEdit);
  50. }
  51. void DiagnosisPage::SwitchOperationAxisPage(bool isSwitch)
  52. {
  53. if (isSwitch)
  54. {
  55. QString strMode = QString::fromLocal8Bit(m_pCurrOpenCAxis->GetAxisName().c_str());
  56. ui.titleLable->setText(strMode);
  57. // 设置状态
  58. m_IsDriveEnabled = m_pCurrOpenCAxis->JIsDriveEnabled();
  59. ui.xAxisEnabledRadioBut->setChecked(m_IsDriveEnabled);
  60. // 获取正负限位是否打开
  61. bool bEnabledNeg, bEnabledPos;
  62. m_pCurrOpenCAxis->JGetSoftLimitEnableStatus(bEnabledNeg, bEnabledPos);
  63. if (bEnabledNeg && bEnabledPos)
  64. {
  65. double dSoftLimitNeg, dSoftLimitPos, dSoftTravelRange;
  66. m_pCurrOpenCAxis->JGetSoftLimit(dSoftLimitNeg, dSoftLimitPos, dSoftTravelRange);
  67. ui.negLineEdit->setText(QString::number(dSoftLimitNeg,'f',2));
  68. ui.posLineEdit->setText(QString::number(dSoftLimitPos,'f',2));
  69. }
  70. //ui.speedLineEdit->setText(QString::number(0));
  71. // 设置定时获取速度
  72. const int nRunTime = 300; //所有新开的定时器都用这个
  73. m_nTimerID = startTimer(nRunTime);
  74. }
  75. else
  76. {
  77. killTimer(m_nTimerID);
  78. m_nTimerID = 0;
  79. ui.axisSwitchTabPage->setCurrentIndex(0);
  80. }
  81. }
  82. void DiagnosisPage::timerEvent(QTimerEvent* event)
  83. {
  84. if (m_nTimerID == event->timerId())
  85. {
  86. if (m_pCurrOpenCAxis)
  87. {
  88. double doPos = 0.0;
  89. m_pCurrOpenCAxis->GetActualPos(doPos);
  90. ui.xPositionLineEdit->setText(QString::number(doPos, 'f', 2));
  91. }
  92. }
  93. }
  94. void DiagnosisPage::on_axisListTree_doubleClicked(const QModelIndex& index)
  95. {
  96. if (index.isValid())
  97. {
  98. QString itemName = index.data().toString();
  99. if (!m_model->hasChildren(index)) // 没有子节点
  100. {
  101. // 表示想要切换到轴控制
  102. QModelIndex parentIndex = index.parent();
  103. QString currentItem = parentIndex.data().toString();
  104. currentItem += "_";
  105. currentItem += itemName;
  106. // 给轴窗口
  107. ui.axisSwitchTabPage->setCurrentIndex(1);
  108. for (auto& a : m_veCAxis)
  109. {
  110. QString strMode = QString::fromLocal8Bit(a->GetAxisName().c_str());
  111. if (strMode == currentItem)
  112. {
  113. //m_pCurrOpenCAxis.reset(a);
  114. m_pCurrOpenCAxis = a;
  115. SwitchOperationAxisPage(true);
  116. break;
  117. }
  118. }
  119. }
  120. }
  121. }
  122. void DiagnosisPage::on_xAxisDisable_clicked()
  123. {
  124. QString strText = tr("Disable", "关使能");
  125. if (m_IsDriveEnabled)
  126. {
  127. m_pCurrOpenCAxis->AxisOff();
  128. strText = tr("Enable", "开使能");
  129. }
  130. else
  131. {
  132. m_pCurrOpenCAxis->AxisOn();
  133. }
  134. ui.xAxisDisable->setText(strText);
  135. }
  136. void DiagnosisPage::on_xAxisHomeBut_clicked()
  137. {
  138. m_pCurrOpenCAxis->Home();
  139. }
  140. void DiagnosisPage::on_setPosBut_clicked()
  141. {
  142. double xNeg = ui.negLineEdit->text().toDouble();
  143. double xPos = ui.posLineEdit->text().toDouble();
  144. m_pCurrOpenCAxis->JSetSoftLimit(xNeg, xPos);
  145. }
  146. void DiagnosisPage::on_setNegBut_clicked()
  147. {
  148. double xNeg = ui.negLineEdit->text().toDouble();
  149. double xPos = ui.posLineEdit->text().toDouble();
  150. m_pCurrOpenCAxis->JSetSoftLimit(xNeg, xPos);
  151. }
  152. void DiagnosisPage::on_setSpeedBut_clicked()
  153. {
  154. double doSpeed = ui.speedLineEdit->text().toDouble();
  155. m_pCurrOpenCAxis->JSetTargetVel(doSpeed);
  156. }
  157. void DiagnosisPage::on_retBut_clicked()
  158. {
  159. SwitchOperationAxisPage(false);
  160. }