Răsfoiți Sursa

接入bond 接口

JonYang 3 săptămâni în urmă
părinte
comite
5d6e974b20

BIN
Output/bin/x64/Control.dll


BIN
Output/bin/x64/Control.pdb


BIN
Output/bin/x64/Module.dll


BIN
Output/bin/x64/Module.pdb


BIN
Output/config/db/ModuleConfig.db


BIN
Output/dll/x64/Control.dll


BIN
Output/dll/x64/Module.dll


+ 96 - 0
Output/inc/Control/CViewInterface.h

@@ -174,6 +174,102 @@ namespace ns_module
 		long RunButtonByThread(ST_BUTTON_FUN stInfo);
 
 		long RunTest(ST_BUTTON_FUN stInfo);
+
+#pragma region 晶圆接口
+		/// <summary>
+		/// 获取所有晶圆信息
+		/// </summary>
+		/// <param name="stPointInfo">晶圆信息</param>
+		/// <returns>成功返回0,否则返回错误码</returns>
+		long GetWaferAllPointInfo(vector<WAFER_MATRIX_POINT_INFO_STRUCT>& stPointInfo);
+
+		/// <summary>
+		/// 获取晶环尺寸
+		/// </summary>
+		/// <param name="iSize">获取到的尺寸</param>
+		/// <returns>成功返回0,否则返回错误码</returns>
+		long GetWaferSize(int& iSize);
+
+		/// <summary>
+		/// 获取晶圆尺寸
+		/// </summary>
+		/// <param name="iLong">长</param>
+		/// <param name="iWide">宽</param>
+		/// <returns>成功返回0,否则返回错误码</returns>
+		long GetDieSize(int& iLong, int& iWide);
+
+		/// <summary>
+		/// 移动到指定的点
+		/// </summary>
+		/// <param name="iDieIndex"></param>
+		/// <returns>成功返回0,否则返回错误码</returns>
+		long MoveWaferToPoint(int iDieIndex);
+
+		/// <summary>
+		/// 从底层获取模板图片
+		/// </summary>
+		/// <param name="image">获取到的图片</param>
+		/// <returns>成功返回0,否则返回错误码</returns>
+		long GetWaferRefImage(ImageInfo& image);
+
+		/// <summary>
+		/// 获取晶圆台角度
+		/// </summary>
+		/// <param name="angle">获取到的角度</param>
+		/// <returns>成功返回0,否则返回错误码</returns>
+		long GetWaferTableAngle(double& angle);
+
+		/// <summary>
+		/// 设置矩形边界
+		/// </summary>
+		/// <param name="nDieMatrixId">矩阵Id</param>
+		/// <param name="row1">左上角行号</param>
+		/// <param name="col1">左上角列号</param>
+		/// <param name="row2">右下角行号</param>
+		/// <param name="col2">右下触目列号</param>
+		/// <returns></returns>
+		long SetWaferRectBorder(int nDieMatrixId, int row1, int col1, int row2, int col2);
+
+
+#pragma endregion
+
+#pragma region 载具物料接口
+		/// <summary>
+		/// 获取所有晶圆信息
+		/// </summary>
+		/// <param name="stPointInfo">晶圆信息</param>
+		/// <returns>成功返回0,否则返回错误码</returns>
+		long GetBondAllPointInfo(vector<POINT_INFO_STRUCT>& stPointInfo);
+
+		/// <summary>
+		/// 移动到指定的点
+		/// </summary>
+		/// <param name="iDieIndex"></param>
+		/// <returns>成功返回0,否则返回错误码</returns>
+		long MoveBondToPoint(int iDieIndex);
+
+		/// <summary>
+		/// 从底层获取模板图片
+		/// </summary>
+		/// <param name="image">获取到的图片</param>
+		/// <returns>成功返回0,否则返回错误码</returns>
+		long GetBondRefImage(ImageInfo& image);
+
+		/// <summary>
+		/// 设置矩形边界
+		/// </summary>
+		/// <param name="nPackMatrixId">华夫盒矩阵 Id</param>
+		/// <param name="nDieMatrixId">矩阵Id</param>
+		/// <param name="row1">左上角行号</param>
+		/// <param name="col1">左上角列号</param>
+		/// <param name="row2">右下角行号</param>
+		/// <param name="col2">右下触目列号</param>
+		/// <returns></returns>
+		long SetBondRectBorder(int nPackMatrixId, int nDieMatrixId, int row1, int col1, int row2, int col2);
+
+
+#pragma endregion
+
 #pragma endregion
 	};
 

+ 2 - 2
Output/inc/Module/CAxis.h

@@ -31,7 +31,7 @@ enum SPEED {
 class C_AXIS_DLL_API CAxis
 {
 public:
-	enum AXIS_TYPE { X = 0, Y, Z, R, FORCE };
+	enum AXIS_TYPE { X = 0, Y, Z, R, FORCE, Z1 };
 private:
 	AXIS_TYPE m_eAxisType = AXIS_TYPE::X;
 	string m_strAxisType;
@@ -63,7 +63,7 @@ public:
 	string GetStringModuleType() { return m_strModuleType; };
 	AXIS_TYPE GetAxisType() { return m_eAxisType; };
 
-
+	//LONG SetJogMotionMode
 
 	LONG GetAxisStatus(AxisStatus& axisStatus);
 	LONG GetActualPos(double &pos); //·´À¡Î»ÖÃ

+ 1 - 0
Output/inc/Module/CBondMatrix.h

@@ -177,6 +177,7 @@ namespace ns_mat
 		//UINT GetCurrentIndex();							//获取当前固晶点
 		//LONG SetCurrentIndex(UINT nIndex);				//设置当前固晶点
 
+		LONG GetAllBondMatrixInfo(std::vector <POINT_INFO_STRUCT>& stPointInfo);
 		//获取包括当前固晶点开始的下个固晶点
 		UINT GetNextBondIndex(UINT nIndex);							//获取从当前固晶点开始的下个固晶点
 		UINT GetPrevBondIndex(UINT nIndex);

BIN
Output/lib/x64/Common.lib


BIN
Output/lib/x64/Control.lib


BIN
Output/lib/x64/Module.lib


+ 23 - 5
View/die-bonder-ui/CameraMaterialGroupWnd/CameraImage/CameraImageHandler.cpp

@@ -1,7 +1,8 @@
 #include "CameraImageHandler.h"
 #include "CameraMaterialGroupWnd/Group.h"
 
-CameraImageHandler::CameraImageHandler(int iCameraId) {
+CameraImageHandler::CameraImageHandler(int iCameraId) 
+{
     captureAndConvertImage(iCameraId);
 }
 
@@ -15,9 +16,14 @@ void CameraImageHandler::captureAndConvertImage(int iCameraId) {
     // if (result == 0) {
     //     initGroup(iCameraId);
     // }
+    m_pCViewInterface = ns_module::CViewInterface::GetInstance();
+    if (m_pCViewInterface == nullptr);
+    {
+        // 目前不做处理,为了兼容    
+    }
 
-
-     initGroup(iCameraId);
+    initGroup(iCameraId);
+    
     // if (result == 0) {
     //     qDebug() << "Image width: " << image.width;
     //     qDebug() << "Image height: " << image.height;
@@ -68,7 +74,7 @@ MaterialBox* CameraImageHandler::getMaterialBox() const
 }
 
 Bond* CameraImageHandler::getBond() const {
-    return bond;
+    return m_pBond;
 }
 
 void CameraImageHandler::initGroup(int CameraId) {
@@ -88,7 +94,19 @@ void CameraImageHandler::initGroup(int CameraId) {
     if (CameraId == 1)
     {
         MaterialWindowType = 4;
-        bond = new Bond(0);
+
+        m_pBond = new Bond(0);
+        if (m_pCViewInterface != nullptr)
+        {
+            std::vector<ns_mat::POINT_INFO_STRUCT> stPointInfo;
+            m_pCViewInterface->GetBondAllPointInfo(stPointInfo);
+            m_pBond->UpdataVal(stPointInfo);
+        }
+        else
+        {
+            m_pBond->UpdataGenerateTestData();
+        }
+
         m_pGroup = new Group(CameraId, ":/images/test_image/image_1.png", MaterialWindowType, dispmodel1, this);
     } 
     else if (CameraId == 2) 

+ 6 - 1
View/die-bonder-ui/CameraMaterialGroupWnd/CameraImage/CameraImageHandler.h

@@ -13,6 +13,7 @@
 #include "CameraMaterialGroupWnd/MaterialWindow/Wafer.h"
 #include "CameraMaterialGroupWnd/MaterialWindow/Waffle.h"
 #include "CameraMaterialGroupWnd/MaterialWindow/Bond.h"
+#include <CViewInterface.h>
 
 
 class CameraImageHandler : public QWidget {
@@ -46,9 +47,13 @@ private:
 
     MaterialBox* materialBox = nullptr;
 
-    Bond* bond = nullptr;
+    Bond* m_pBond = nullptr;
 
     int MaterialWindowType; // 物料窗口类型标识,1代表圆晶 后面接口获取标识
+
+    /**接口指针
+     */
+    ns_module::CViewInterface* m_pCViewInterface;
 };
 
 #endif // CAMERAIMAGEHANDLER_H

+ 26 - 12
View/die-bonder-ui/CameraMaterialGroupWnd/MaterialWindow/Bond.cpp

@@ -5,11 +5,14 @@
 #include <QMap>
 #include <cmath>
 
-Bond::Bond(QWidget* parent) : QWidget(parent) {
-    generateTestData();
+Bond::Bond(QWidget* parent) 
+    : QWidget(parent) 
+{
+    
 }
 
-void Bond::generateTestData() {
+void Bond::UpdataGenerateTestData() 
+{
     // 生成测试数据:2x2 PCB,每个PCB 2x2 PT矩阵,每个PT矩阵 2x3固晶点
     int pcbIndex = 0;
     int dieIndex = 0;
@@ -46,8 +49,8 @@ void Bond::generateTestData() {
 }
 
 void Bond::initFrom(QWidget* parent) {
-    scene = new QGraphicsScene(parent);
-    view = new BondGraphicsView(scene);
+    m_pScene = new QGraphicsScene(parent);
+    m_pView = new BondGraphicsView(m_pScene);
 
     int width = parent->width();
     int height = parent->height();
@@ -108,7 +111,7 @@ void Bond::initFrom(QWidget* parent) {
                 // 绘制PCB背景
                 QGraphicsRectItem* pcbItem = new QGraphicsRectItem(rect);
                 pcbItem->setBrush(QColor("#e1d4e6"));
-                scene->addItem(pcbItem);
+                m_pScene->addItem(pcbItem);
 
                 // 添加PCB标签
                 QGraphicsTextItem* text = new QGraphicsTextItem(QString(tr("PCB%1")).arg(pcbId));
@@ -123,7 +126,7 @@ void Bond::initFrom(QWidget* parent) {
                 }
 
                 text->setPos(rect.x(), rect.y());
-                scene->addItem(text);
+                m_pScene->addItem(text);
             }
         }
     }
@@ -168,7 +171,7 @@ void Bond::initFrom(QWidget* parent) {
             // 绘制PT矩阵背景
             QGraphicsRectItem* ptItem = new QGraphicsRectItem(ptRect);
             ptItem->setBrush(QColor("#d5e4f8"));
-            scene->addItem(ptItem);
+            m_pScene->addItem(ptItem);
 
             // 添加PT矩阵标签
             QGraphicsTextItem* ptText = new QGraphicsTextItem(QString(tr("PT矩阵%1")).arg(ptId));
@@ -182,7 +185,7 @@ void Bond::initFrom(QWidget* parent) {
             }
 
             ptText->setPos(ptRect.x(), ptRect.y());
-            scene->addItem(ptText);
+            m_pScene->addItem(ptText);
 
             // Step 5: 绘制固晶点
             QList<ns_mat::POINT_INFO_STRUCT> points = groupedData[pcbId][ptId];
@@ -215,7 +218,7 @@ void Bond::initFrom(QWidget* parent) {
                 // 绘制固晶点
                 BondItem* dieItem = new BondItem(point);
                 dieItem->setRect(dieRect);
-                scene->addItem(dieItem);
+                m_pScene->addItem(dieItem);
 
                 // 添加固晶点编号
                 QGraphicsTextItem* dieText = new QGraphicsTextItem(dieItem);
@@ -227,8 +230,8 @@ void Bond::initFrom(QWidget* parent) {
         }
     }
 
-    view->setScene(scene);
-    view->resize(width, height);
+    m_pView->setScene(m_pScene);
+    m_pView->resize(width, height);
 }
 
 void Bond::paintInitFrom(QWidget* parent) {
@@ -263,6 +266,9 @@ void Bond::paintInitFrom(QWidget* parent) {
     int pcbRows = maxPcbRow + 1;
     int pcbCols = maxPcbCol + 1;
 
+    //TODO:yang
+    maxPcbCol = 1;
+
     // Step 2: 计算PCB布局参数
     qreal margin = width / maxPcbCol * 0.05;
     qreal pcbSpacing = margin;
@@ -386,6 +392,14 @@ QColor Bond::getColorByStatus(ns_mat::DIE_STATUS status) {
     }
 }
 
+void Bond::UpdataVal(std::vector<ns_mat::POINT_INFO_STRUCT>& stPointInfo)
+{
+    for (auto&a: stPointInfo)
+    {
+        bondData.append(a);
+    }
+}
+
 QPixmap Bond::getGlobalPixmap() const {
     return globalPixmap;
 }

+ 11 - 6
View/die-bonder-ui/CameraMaterialGroupWnd/MaterialWindow/Bond.h

@@ -16,17 +16,22 @@ public:
     void paintInitFrom(QWidget* parent);
     QPixmap getGlobalPixmap() const;
 
-    BondGraphicsView* view;
-    QGraphicsScene* scene;
+    void UpdataGenerateTestData();
+    QColor getColorByStatus(ns_mat::DIE_STATUS status);
+
+    /**更新值
+     */
+    void UpdataVal(std::vector<ns_mat::POINT_INFO_STRUCT>& stPointInfo);
+
+public:
+    BondGraphicsView*   m_pView = nullptr;
+    QGraphicsScene*     m_pScene = nullptr;
 
 private:
     QList<ns_mat::POINT_INFO_STRUCT> bondData;
     QMap<int, QPair<int, int>> pcbDimensions;
     QMap<int, QMap<int, QPair<int, int>>> ptDimensions;
-    QPixmap globalPixmap;
-
-    void generateTestData();
-    QColor getColorByStatus(ns_mat::DIE_STATUS status);
+    QPixmap                                 globalPixmap;
 };
 
 #endif // BOND_H

+ 2 - 2
View/die-bonder-ui/Src/RewriteControl/ControlOperationPage.cpp

@@ -190,8 +190,8 @@ void ControlOperationPage::KindsofWidget(kinds kind)
         {
             isRun = true;
             m_bond->initFrom(ui->Operatewidget);
-            layout->addWidget(m_bond->view);
-            m_currentView = m_bond->view;
+            layout->addWidget(m_bond->m_pView);
+            m_currentView = m_bond->m_pView;
         }
     }