mrDarker
2025-07-25 c856cf2dc2dca99f303458586dc6f70324228cf0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#ifndef SOFT_VISION_APP_H
#define SOFT_VISION_APP_H
 
#include <iostream>
#include <stdio.h>
#include "ISoftVisionApp.h"
class CSoftVisionApp : public ISoftVisionApp
{
public:
    CSoftVisionApp();
    ~CSoftVisionApp();
 
    static CSoftVisionApp* getInstance(void);
 
public:
    //1. ´ò¿ªÊÓ¾õ´°Ìå
    virtual int OpenVisionWindow(void);
    virtual CDialogEx* CreateVisionWindow(void);
    virtual int ReleaseWindow(CDialogEx *pDlg);
    virtual void ChangeDimension(CDialogEx *pDlg, int nDir);
    virtual void SetVisionOpen(BOOL isOpen);
 
    //2. ÉèÖÃÆÁ±Î
    virtual void OpenKeySetWindow(void);
 
    //3. ×ø±êת»»
    virtual Point2I getPose(int eDir, int xPoxPxl, int yPosPxl);
 
    //4. Ö´ÐÐÊÓ¾õ´¦Àí
    virtual int Execute(int eDir, NgInfo *ngArray);
    //5. ÉèÖûص÷ʱ¼ä
    virtual void setImageEventSignal(IVisionEvent *pEvent);
    //6. ×ø±êϵת»»
    virtual bool transformToStandard(int eDir, Point2I point, Point2I &result, Point2I &topResult, Point2I &botResult);
    //7. ¼ì²âCutÏß
    virtual bool findCutLine(int eDir, int toTopY, int toLineDist, int nEndThres, Point2I& result);
    virtual double DistancePL(Point2D pose, Line2D line);
 
    //8. ¼ì²âNorchȱÏÝ    
    virtual int findNorchDefect(int eDir, std::vector<Point2D> vPoints, CRect roiRect, int nThres, int nOffset, int nBinThres,
        int szType, int xFzSize, int yFzSize, CRect* aryResult);
 
    //9. ÉèÖÃÆ½Ì¨£¬0ÊÇÆ½Ì¨1£¬ 1ÊÇÆ½Ì¨2
    virtual void setStage(int nStage);
 
    //5. »ñÈ¡¾àÀëµÄ½á¹û
    int getDistResult(DimensionDir eDir, NgInfo *ngResult);
 
    //6. »ñÈ¡RCUTµÄȱÏÝ
    int getRcutResult(DimensionDir eDir, NgInfo *ngResult);
 
    //6.1 »ñÈ¡THres½á¹û
    int getThresResult(DimensionDir eDir, NgInfo *ngResult);
 
    //6. »ñÈ¡Hole½á¹û
    int getHoleResult(DimensionDir eDir, NgInfo *ngResult);
 
    //7. »ñÈ¡Grind½á¹û
    int getGrindResult(DimensionDir eDir, NgInfo *ngResult);
 
    //8. »ñÈ¡Cut½á¹û
    int getCutResult(DimensionDir eDir, NgInfo *ngResult);
 
    //9 ÉèÖûص÷ÐÅÏ¢ 
    void sendMessage(int code, int eDir);
 
    //10. ´òÓ¡ÈÕÖ¾
    void Log(int level, std::string strText);
 
private:
    IVisionEvent *m_pEvent;
    CRITICAL_SECTION m_criticalSection;
 
private:
    inline void Lock() { EnterCriticalSection(&m_criticalSection); }
    inline void Unlock() { LeaveCriticalSection(&m_criticalSection); }
 
    //1. Ö´ÐÐÊÓ¾õ¶¨Î»
    int ExecuteLoc(DimensionDir eDir);
 
    //2. GrendSize
    int ExecuteGrind(DimensionDir eDir);
 
    //3. ÊÓ¾õ¶¨Î»
    int ExecuteDist(DimensionDir eDir);
 
    //4. Cut¼ì²â
    int ExecuteCut(DimensionDir eDir);
 
    //5. RCUT¼ì²â
    int ExecuteRCUT(DimensionDir eDir);
 
    //6. ÊÓ¾õ¼ì²â
    int ExecuteThres(DimensionDir eDir);
 
    //7. Hole¼ì²â
    int ExecuteHole(DimensionDir eDir);
 
    //6. Êý¾Ý½á¹ûºÏ²¢
    int addResultToTotal(NgInfo *ngInfo, int nCount, NgInfo *ngTotal, int nTotal);
 
    //7. »ñÈ¡¾àÀë
    Point2I getPointCoor(DimensionDir dir, Point2I point, Point2I ptTop, Point2I ptBot,  Point2I bzTopPoint, Point2I bzBotPoint, int nType);
 
};
 
#endif