Ver código fonte

功能改进:添加所有相机绑定

JonYang 1 semana atrás
pai
commit
127e2a5004

+ 1 - 1
View/die-bonder-ui/CameraMaterialGroupWnd/Group.cpp

@@ -207,7 +207,7 @@ void Group::UpDataImageShowSlots(const QPixmap& imageData)
     QPixmap scaledPixmap = imageData.scaled(size_left, Qt::KeepAspectRatio, Qt::SmoothTransformation);
     ui->Imagewidget_left->setPixmap(scaledPixmap);
 
-    emit SetUpDataImageShowSig(imageData);
+    //emit SetUpDataImageShowSig(imageData);
 }
 
 void Group::showEvent(QShowEvent *event) {

+ 54 - 15
View/die-bonder-ui/OriginalWnd/ChartsAndCamerasWnd.cpp

@@ -231,8 +231,8 @@ void ChartsAndCamerasWnd::initFrom() {
         //connect(widget,&Group::send_button_Signal,this,&ChartsAndCamerasWnd::showAndHide);
         if (widget != nullptr) 
         {
-            connect(widget, &Group::sendUpdateGroupState,
-                this, &ChartsAndCamerasWnd::checkSettings);
+            CameraConnectUpdateImageFun(i, widget);
+
             layout->addWidget(widget);
             widgets.append(widget);
         }
@@ -326,47 +326,86 @@ void ChartsAndCamerasWnd::updateMaterialWidget( int materialWndType, int groupId
 }
 
 
-
-
-
-
 void ChartsAndCamerasWnd::InitMainCameraBind(CameraBind* pCameraBind)
 {
     m_pMainCameraBind = pCameraBind;
     initFrom();
 }
 
-void ChartsAndCamerasWnd::UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData)
+void ChartsAndCamerasWnd::UnCameraBind()
 {
 
 }
 
-void ChartsAndCamerasWnd::UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData)
+void ChartsAndCamerasWnd::UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData)
 {
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals0(QPixmap::fromImage(image));
+}
 
+void ChartsAndCamerasWnd::UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData)
+{
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals1(QPixmap::fromImage(image));
 }
 
 void ChartsAndCamerasWnd::UpdateCameraDisplay2(int iCameraId, JVision::ImageInfo imageData)
 {
-
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals2(QPixmap::fromImage(image));
 }
 
 void ChartsAndCamerasWnd::UpdateCameraDisplay3(int iCameraId, JVision::ImageInfo imageData)
 {
-
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals3(QPixmap::fromImage(image));
 }
 
 void ChartsAndCamerasWnd::UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData)
 {
-
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals4(QPixmap::fromImage(image));
 }
 
-//void ChartsAndCamerasWnd::UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData)
-//{
-//
-//}
+void ChartsAndCamerasWnd::CameraConnectUpdateImageFun(int nIndex, Group* widget, bool isUnCameraBind /*= false*/)
+{
+    auto BinCamerasImage = [&](void (ChartsAndCamerasWnd::* pCamerasImage)(const QPixmap& imageData))
+    {
+        if (isUnCameraBind)
+        {
+            //disconnect(widget, &Group::SetCurrentSelectSig, this, &ChartsAndCamerasWnd::GetCurrentSelectSlots);
+            disconnect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
+        }
+        else
+        {
+            //共用函数
+            connect(widget, &Group::sendUpdateGroupState,this, &ChartsAndCamerasWnd::checkSettings);
+            connect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
+        }
 
+    };
 
+    if (nIndex == 0)
+    {
+        BinCamerasImage(&ChartsAndCamerasWnd::UpDataImageShowSignals0);
+    }
+    else if (nIndex == 1)
+    {
+        BinCamerasImage(&ChartsAndCamerasWnd::UpDataImageShowSignals1);
+    }
+    else if (nIndex == 2)
+    {
+        BinCamerasImage(&ChartsAndCamerasWnd::UpDataImageShowSignals2);
+    }
+    else if (nIndex == 3)
+    {
+        BinCamerasImage(&ChartsAndCamerasWnd::UpDataImageShowSignals3);
+    }
+    else if (nIndex == 4)
+    {
+        BinCamerasImage(&ChartsAndCamerasWnd::UpDataImageShowSignals4);
+    }
+}
 
 void ChartsAndCamerasWnd::wheelEvent(QWheelEvent *event)
 {

+ 10 - 1
View/die-bonder-ui/OriginalWnd/ChartsAndCamerasWnd.h

@@ -38,13 +38,22 @@ protected:
 
 private:
     void InitMainCameraBind(CameraBind* pCameraBind) override;
+    void UnCameraBind() override;
+
     void UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData) override;
     void UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData) override;
     void UpdateCameraDisplay2(int iCameraId, JVision::ImageInfo imageData) override;
     void UpdateCameraDisplay3(int iCameraId, JVision::ImageInfo imageData) override;
     void UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData) override;
 
-public slots: // 确保这里声明了槽函数
+    void CameraConnectUpdateImageFun(int nIndex, Group* widget, bool isUnCameraBind = false) override;
+
+signals:
+    void UpDataImageShowSignals0(const QPixmap& imageData);
+    void UpDataImageShowSignals1(const QPixmap& imageData);
+    void UpDataImageShowSignals2(const QPixmap& imageData);
+    void UpDataImageShowSignals3(const QPixmap& imageData);
+    void UpDataImageShowSignals4(const QPixmap& imageData);
 
 private slots:
     

+ 54 - 1
View/die-bonder-ui/OriginalWnd/JOriginalMainWnd.h

@@ -64,11 +64,19 @@ public:
 
     ~JOriginalMainWnd();
 
-public:
+public: //--- 这里任何逻辑都不要动,先等完善在精简
     /**必须绑定它, 没必要一直new ,只是控制
      */
     virtual void InitMainCameraBind(CameraBind* pCameraBind) = 0;
 
+    /**窗口切换或者销毁必须解绑
+     */
+    virtual void UnCameraBind() = 0;
+
+    /**绑定相机画面
+    */
+    virtual void CameraConnectUpdateImageFun(int nIndex, Group* widget, bool isUnCameraBind = false) = 0;
+
     virtual void UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData) = 0;
     virtual void UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData) = 0;
     virtual void UpdateCameraDisplay2(int iCameraId, JVision::ImageInfo imageData) = 0;
@@ -81,6 +89,10 @@ public:
    // virtual void DelBind() = 0;
 
 public: // 通用模板函数
+    template<class Y>
+    void CameraConnectUpdateImageFunA(Y calssFun,int nIndex, Group* widget, bool isUnCameraBind = false);
+
+
     template<class Y>
     void InitAllCamerPage(STR_TEMPLATE strFun,Y Fun);
 
@@ -99,6 +111,47 @@ public:
     CameraBind* m_pMainCameraBind = nullptr;
 };
 
+template<class Y>
+void JOriginalMainWnd::CameraConnectUpdateImageFunA(Y calssFun, int nIndex, Group* widget, bool isUnCameraBind /*= false*/)
+{
+    auto BinCamerasImage = [&](void (calssFun::* pCamerasImage)(const QPixmap& imageData))
+    {
+        if (isUnCameraBind)
+        {
+            //disconnect(widget, &Group::SetCurrentSelectSig, this, &ChartsAndCamerasWnd::GetCurrentSelectSlots);
+            disconnect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
+        }
+        else
+        {
+            //共用函数
+            connect(widget, &Group::sendUpdateGroupState, this, &SingleCameraOperationWnd::checkSettings);
+            connect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
+        }
+
+    };
+
+    if (nIndex == 0)
+    {
+        BinCamerasImage(&calssFun::UpDataImageShowSignals0);
+    }
+    else if (nIndex == 1)
+    {
+        BinCamerasImage(&calssFun::UpDataImageShowSignals1);
+    }
+    else if (nIndex == 2)
+    {
+        BinCamerasImage(&calssFun::UpDataImageShowSignals2);
+    }
+    else if (nIndex == 3)
+    {
+        BinCamerasImage(&calssFun::UpDataImageShowSignals3);
+    }
+    else if (nIndex == 4)
+    {
+        BinCamerasImage(&calssFun::UpDataImageShowSignals4);
+    }
+}
+
 template <typename Y, typename T>
 void JOriginalMainWnd::SwitchToConfigAAAAA(void (Y::* switchMethod)(const T&))
 {

+ 31 - 14
View/die-bonder-ui/OriginalWnd/MainAndSecondaryCamerasWnd.cpp

@@ -40,7 +40,7 @@ MainAndSecondaryCamerasWnd::MainAndSecondaryCamerasWnd(QWidget *parent)
 
 MainAndSecondaryCamerasWnd::~MainAndSecondaryCamerasWnd()
 {
-
+    UnCameraBind();
     delete ui;
 }
 
@@ -82,10 +82,13 @@ void MainAndSecondaryCamerasWnd::initFrom()
 
 
 
-    if (lastIndex == 1) {
+    if (lastIndex == 1) 
+    {
         GetCurrentSelectSlots(lastGroupId, lastIndex);
     }
-    if(index == 1){
+
+    if(index == 1)
+    {
         GetCurrentSelectSlots(groupId, index);
     }
 
@@ -181,16 +184,23 @@ void MainAndSecondaryCamerasWnd::InitPage()
     } 
 }
 
-void MainAndSecondaryCamerasWnd::CameraConnectUpdateImageFun(int nIndex, Group* widget)
+void MainAndSecondaryCamerasWnd::CameraConnectUpdateImageFun(int nIndex, Group* widget, bool isUnCameraBind /*= false*/)
 {    
     auto BinCamerasImage = [&](void (MainAndSecondaryCamerasWnd::* pCamerasImage)(const QPixmap& imageData))
     {
-        //共用函数
-        //connect(widget, &Group::send_button_Signal, this, &MainAndSecondaryCamerasWnd::CheckIs);
-        connect(widget, &Group::SetCurrentSelectSig, this, &MainAndSecondaryCamerasWnd::GetCurrentSelectSlots);
+        if (isUnCameraBind)
+        {
+           disconnect(widget, &Group::SetCurrentSelectSig, this, &MainAndSecondaryCamerasWnd::GetCurrentSelectSlots);
+           disconnect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
+        }
+        else
+        {
+            //共用函数
+            //connect(widget, &Group::send_button_Signal, this, &MainAndSecondaryCamerasWnd::CheckIs);
+            connect(widget, &Group::SetCurrentSelectSig, this, &MainAndSecondaryCamerasWnd::GetCurrentSelectSlots);
+            connect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
+        }
 
-        // 相机图片
-        connect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
     };
 
     if (nIndex == 0)
@@ -317,15 +327,20 @@ void MainAndSecondaryCamerasWnd::updateMaterialWidget(int  side,int materialWndT
     }
 }
 
-
-
-
 void MainAndSecondaryCamerasWnd::InitMainCameraBind(CameraBind* pCameraBind)
 {
     m_pMainCameraBind = pCameraBind;
     initFrom();
 }
 
+void MainAndSecondaryCamerasWnd::UnCameraBind()
+{
+    for (size_t i = 0; i < m_allGroup.size(); i++)
+    {
+        CameraConnectUpdateImageFun(i, m_allGroup[i], true);
+    }
+}
+
 void MainAndSecondaryCamerasWnd::UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData)
 {
     // TODO: 这里需要改动
@@ -351,12 +366,14 @@ void MainAndSecondaryCamerasWnd::UpdateCameraDisplay1(int iCameraId, JVision::Im
 
 void MainAndSecondaryCamerasWnd::UpdateCameraDisplay2(int iCameraId, JVision::ImageInfo imageData)
 {
-
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals2(QPixmap::fromImage(image));
 }
 
 void MainAndSecondaryCamerasWnd::UpdateCameraDisplay3(int iCameraId, JVision::ImageInfo imageData)
 {
-
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals3(QPixmap::fromImage(image));
 }
 
 void MainAndSecondaryCamerasWnd::UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData)

+ 2 - 1
View/die-bonder-ui/OriginalWnd/MainAndSecondaryCamerasWnd.h

@@ -27,7 +27,7 @@ public:
 
     /**绑定相机画面
      */
-    void CameraConnectUpdateImageFun(int nIndex, Group* widget);
+    void CameraConnectUpdateImageFun(int nIndex, Group* widget, bool isUnCameraBind = false);
 
     /**初始化界面运动控制轴
      */
@@ -73,6 +73,7 @@ private slots:
     void GetUpDataImageShowSignals4(const QPixmap& imageData);
 private:
     void InitMainCameraBind(CameraBind* pCameraBind) override;
+    void UnCameraBind() override;
 
     void UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData) override;
     void UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData) override;

+ 60 - 16
View/die-bonder-ui/OriginalWnd/SingleCameraOperationWnd.cpp

@@ -46,9 +46,9 @@ void SingleCameraOperationWnd::initFrom() {
         Group* widget = manager->getGroup();
         //connect(widget,&Group::send_button_Signal,this,&SingleCameraOperationWnd::showAndHideButton);
 		//connect(widget,&Group::send_ComboBox_singal,this,&SingleCameraOperationWnd::handleComBoxChange);
-        if (widget != nullptr) {
-            connect(widget, &Group::sendUpdateGroupState,
-                this, &SingleCameraOperationWnd::checkSettings);
+        if (widget != nullptr) 
+        {
+            CameraConnectUpdateImageFun(i, widget);
             layout->addWidget(widget);
             widgets.append(widget);
 			groupMap[num] = widget;
@@ -142,50 +142,94 @@ void SingleCameraOperationWnd::loadGroupSettings(int Id, int Index) {
 
 }
 
-void SingleCameraOperationWnd::updateMaterialWidget( int materialWndType, int groupId){
-    
-        switch (materialWndType) {
+void SingleCameraOperationWnd::updateMaterialWidget( int materialWndType, int groupId)
+{
+    switch (materialWndType) 
+    {
         case 1: ui->viewwidgetgroup->setWafer(waferMap.value(lastGroupId)); break;
         case 2: ui->viewwidgetgroup->setWaffle(waffleMap.value(lastGroupId)); break;
         case 3: ui->viewwidgetgroup->setMaterialBox(materialBoxMap.value(lastGroupId)); break;
-        }
-   
+    }
 }
 
+void SingleCameraOperationWnd::InitMainCameraBind(CameraBind* pCameraBind)
+{
 
+}
 
+void SingleCameraOperationWnd::UnCameraBind()
+{
 
+}
 
-
-
-void SingleCameraOperationWnd::InitMainCameraBind(CameraBind* pCameraBind)
+void SingleCameraOperationWnd::CameraConnectUpdateImageFun(int nIndex, Group* widget, bool isUnCameraBind /*= false*/)
 {
+    auto BinCamerasImage = [&](void (SingleCameraOperationWnd::* pCamerasImage)(const QPixmap& imageData))
+    {
+        if (isUnCameraBind)
+        {
+            //disconnect(widget, &Group::SetCurrentSelectSig, this, &ChartsAndCamerasWnd::GetCurrentSelectSlots);
+            disconnect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
+        }
+        else
+        {
+            //共用函数
+            connect(widget, &Group::sendUpdateGroupState, this, &SingleCameraOperationWnd::checkSettings);
+            connect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
+        }
+
+    };
 
+    if (nIndex == 0)
+    {
+        BinCamerasImage(&SingleCameraOperationWnd::UpDataImageShowSignals0);
+    }
+    else if (nIndex == 1)
+    {
+        BinCamerasImage(&SingleCameraOperationWnd::UpDataImageShowSignals1);
+    }
+    else if (nIndex == 2)
+    {
+        BinCamerasImage(&SingleCameraOperationWnd::UpDataImageShowSignals2);
+    }
+    else if (nIndex == 3)
+    {
+        BinCamerasImage(&SingleCameraOperationWnd::UpDataImageShowSignals3);
+    }
+    else if (nIndex == 4)
+    {
+        BinCamerasImage(&SingleCameraOperationWnd::UpDataImageShowSignals4);
+    }
 }
 
 void SingleCameraOperationWnd::UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData)
 {
-
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals0(QPixmap::fromImage(image));
 }
 
 void SingleCameraOperationWnd::UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData)
 {
-
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals1(QPixmap::fromImage(image));
 }
 
 void SingleCameraOperationWnd::UpdateCameraDisplay2(int iCameraId, JVision::ImageInfo imageData)
 {
-
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals2(QPixmap::fromImage(image));
 }
 
 void SingleCameraOperationWnd::UpdateCameraDisplay3(int iCameraId, JVision::ImageInfo imageData)
 {
-
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals3(QPixmap::fromImage(image));
 }
 
 void SingleCameraOperationWnd::UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData)
 {
-
+    QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
+    emit UpDataImageShowSignals4(QPixmap::fromImage(image));
 }
 
 void SingleCameraOperationWnd::wheelEvent(QWheelEvent *event)

+ 9 - 0
View/die-bonder-ui/OriginalWnd/SingleCameraOperationWnd.h

@@ -59,6 +59,8 @@ public:
     /**必须绑定它, 没必要一直new ,只是控制
      */
     virtual void InitMainCameraBind(CameraBind* pCameraBind);
+    void UnCameraBind() override;
+    void CameraConnectUpdateImageFun(int nIndex, Group* widget, bool isUnCameraBind = false) override;
 
     virtual void UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData);
     virtual void UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData);
@@ -66,6 +68,13 @@ public:
     virtual void UpdateCameraDisplay3(int iCameraId, JVision::ImageInfo imageData);
     virtual void UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData);
 
+signals:
+    void UpDataImageShowSignals0(const QPixmap& imageData);
+    void UpDataImageShowSignals1(const QPixmap& imageData);
+    void UpDataImageShowSignals2(const QPixmap& imageData);
+    void UpDataImageShowSignals3(const QPixmap& imageData);
+    void UpDataImageShowSignals4(const QPixmap& imageData);
+
 private : 
     Ui::SingleCameraOperationWnd *ui;