From 3ce48f6dbeb537e252edb0d62c88a28796e36674 Mon Sep 17 00:00:00 2001 From: SWK <sungwk82@diteam.co.kr> Date: 월, 26 12월 2022 15:04:42 +0900 Subject: [PATCH] ongoing60 #4403 CF AOI Review TACT 지연 개선 1. 신호 출력 방식 재개선 - 유지 시간이 없는 신호는 바로 출력 진행하도록 변경 2. 불필요 Delay 제거 및 시퀀스 변경 - 얼라인 측정 종료 처리 간 제어 신호 먼저 출력 후 카메라 Stop으로 변경 - 물류 정보 읽기 처리 후 1000ms Delay 삭제 - 얼라인 측정 시작(카메라 Live Start) 후 Delay 300ms -> 100ms(이미지 들어오는 시간 확보 필요) - ReadRawFile 처리 시작 전 500ms Delay 삭제 - Path Scheduling 완료 후 Review Ready 신호 출력 전 1000ms Delay 삭제 3. 버그 수정 - 이미지 저장 경로 생성 간 예외 처리 부분 버그 수정 4. 로그 시간 출력 불합리 개선 - 로그 시간이 파일 출력 시점으로 작성되어 로그 스래드 지연 시 시간이 맞지 않는 불합리 있음 - 로그 시간은 로그 발생 시점에 시간 저장, 해당 시간 이용하여 파일에 기록하도록 변경 --- ReviewHistory/include/akGridCtrl/CellRange.h | 148 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 148 insertions(+), 0 deletions(-) diff --git a/ReviewHistory/include/akGridCtrl/CellRange.h b/ReviewHistory/include/akGridCtrl/CellRange.h new file mode 100644 index 0000000..9d96b4b --- /dev/null +++ b/ReviewHistory/include/akGridCtrl/CellRange.h @@ -0,0 +1,148 @@ +/////////////////////////////////////////////////////////////////////// +// CellRange.h: header file +// +// MFC Grid Control - interface for the CCellRange class. +// +// Written by Chris Maunder <cmaunder@mail.com> +// Copyright (c) 1998-2002. All Rights Reserved. +// +// This code may be used in compiled form in any way you desire. This +// file may be redistributed unmodified by any means PROVIDING it is +// not sold for profit without the authors written consent, and +// providing that this notice and the authors name and all copyright +// notices remains intact. +// +// An email letting me know how you are using it would be nice as well. +// +// This file is provided "as is" with no expressed or implied warranty. +// The author accepts no liability for any damage/loss of business that +// this product may cause. +// +// For use with CGridCtrl v2.20+ +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_CELLRANGE_H__F86EF761_725A_11D1_ABBA_00A0243D1382__INCLUDED_) +#define AFX_CELLRANGE_H__F86EF761_725A_11D1_ABBA_00A0243D1382__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +// The code contained in this file is based on the original +// WorldCom Grid control written by Joe Willcoxson, +// mailto:chinajoe@aol.com +// http://users.aol.com/chinajoe + +class CCellID +{ +// Attributes +public: + int row, col; + +// Operations +public: + explicit CCellID(int nRow = -1, int nCol = -1) : row(nRow), col(nCol) {} + + int IsValid() const { return (row >= 0 && col >= 0); } + int operator==(const CCellID& rhs) const { return (row == rhs.row && col == rhs.col); } + int operator!=(const CCellID& rhs) const { return !operator==(rhs); } +}; + +class CCellRange +{ +public: + + CCellRange(int nMinRow = -1, int nMinCol = -1, int nMaxRow = -1, int nMaxCol = -1) + { + Set(nMinRow, nMinCol, nMaxRow, nMaxCol); + } + + void Set(int nMinRow = -1, int nMinCol = -1, int nMaxRow = -1, int nMaxCol = -1); + + int IsValid() const; + int InRange(int row, int col) const; + int InRange(const CCellID& cellID) const; + int Count() { return (m_nMaxRow - m_nMinRow + 1) * (m_nMaxCol - m_nMinCol + 1); } + + CCellID GetTopLeft() const; + CCellRange Intersect(const CCellRange& rhs) const; + + int GetMinRow() const {return m_nMinRow;} + void SetMinRow(int minRow) {m_nMinRow = minRow;} + + int GetMinCol() const {return m_nMinCol;} + void SetMinCol(int minCol) {m_nMinCol = minCol;} + + int GetMaxRow() const {return m_nMaxRow;} + void SetMaxRow(int maxRow) {m_nMaxRow = maxRow;} + + int GetMaxCol() const {return m_nMaxCol;} + void SetMaxCol(int maxCol) {m_nMaxCol = maxCol;} + + int GetRowSpan() const {return m_nMaxRow - m_nMinRow + 1;} + int GetColSpan() const {return m_nMaxCol - m_nMinCol + 1;} + + void operator=(const CCellRange& rhs); + int operator==(const CCellRange& rhs); + int operator!=(const CCellRange& rhs); + +protected: + int m_nMinRow; + int m_nMinCol; + int m_nMaxRow; + int m_nMaxCol; +}; + +inline void CCellRange::Set(int minRow, int minCol, int maxRow, int maxCol) +{ + m_nMinRow = minRow; + m_nMinCol = minCol; + m_nMaxRow = maxRow; + m_nMaxCol = maxCol; +} + +inline void CCellRange::operator=(const CCellRange& rhs) +{ + if (this != &rhs) Set(rhs.m_nMinRow, rhs.m_nMinCol, rhs.m_nMaxRow, rhs.m_nMaxCol); +} + +inline int CCellRange::operator==(const CCellRange& rhs) +{ + return ((m_nMinRow == rhs.m_nMinRow) && (m_nMinCol == rhs.m_nMinCol) && + (m_nMaxRow == rhs.m_nMaxRow) && (m_nMaxCol == rhs.m_nMaxCol)); +} + +inline int CCellRange::operator!=(const CCellRange& rhs) +{ + return !operator==(rhs); +} + +inline int CCellRange::IsValid() const +{ + return (m_nMinRow >= 0 && m_nMinCol >= 0 && m_nMaxRow >= 0 && m_nMaxCol >= 0 && + m_nMinRow <= m_nMaxRow && m_nMinCol <= m_nMaxCol); +} + +inline int CCellRange::InRange(int row, int col) const +{ + return (row >= m_nMinRow && row <= m_nMaxRow && col >= m_nMinCol && col <= m_nMaxCol); +} + +inline int CCellRange::InRange(const CCellID& cellID) const +{ + return InRange(cellID.row, cellID.col); +} + +inline CCellID CCellRange::GetTopLeft() const +{ + return CCellID(m_nMinRow, m_nMinCol); +} + +inline CCellRange CCellRange::Intersect(const CCellRange& rhs) const +{ + return CCellRange(max(m_nMinRow,rhs.m_nMinRow), max(m_nMinCol,rhs.m_nMinCol), + min(m_nMaxRow,rhs.m_nMaxRow), min(m_nMaxCol,rhs.m_nMaxCol)); +} + +#endif // !defined(AFX_CELLRANGE_H__F86EF761_725A_11D1_ABBA_00A0243D1382__INCLUDED_) -- Gitblit v1.9.3