初始化設定

在硬體與 KINGSTAR 子系統建立 EtherCAT 連結時,我們需在連接狀態變為 Op 之前初始化一些設定,OPFlag 代表了連結狀態,其為 false 時,List Box 將被清空:m_MotorList.GetCount 獲取 List Box 中的軸數,然後 for 迴圈重複執行 m_MotorList.DeleteString(0) 以刪除 List Box 中的所有項目。

之後,初始化設定即配置完成,而程式設定運動軌跡、轉換單位、啟用單位轉換,並獲取軸的信息,為展示所有軸,我們將各軸的名稱傳送至 CString 物件 strSlave,接著使用 m_MotorList.AddString 將名稱添加到 List Box,所有軸顯示後,我們使用 m_MotorList.SetCurSel(0) 來選擇第一個軸,並將 OPFlag 設為 true。

if (OPFlag == false)
{
   int nSel = m_MotorList.GetCount();
   for (int i = 0; i < nSel; i++)
   {
      m_MotorList.DeleteString(0);
   }

   for (int i = 0; i < KSMStatus.AxesCount; i++)
   {
      //Configures the motion settings of an axis.
      ::SetAxisMotionProfile(i, profileUnitPerSecond, ProfileSettings);

      //Sets the conversion ratio of user-defined position unit to the count (pulse) unit used by the axis.
      ::SetAxisCountsPerUnit(i, Numerator, Denominator, Reverse);

      //Enables the axis to use a real-world unit. 
      ::EnableAxisUnitConversion(i, TRUE);
   }

   for (int i = 0; i < KSMStatus.AxesCount; i++)
   {
      //Gets the details information of an axis.
      ::GetAxisByIndex(i, &KSMSlaveStatus[i], &Resolution[i], &InputValue[i], &OutputValue[i]);
   }

   for (int i = 0; i < KSMStatus.AxesCount; i++)
   {
      CString strSlave(KSMSlaveStatus[i].Name);
      m_MotorList.AddString(strSlave);
   }
   m_MotorList.SetCurSel(0);
   OPFlag = true;
}