반응형 전체 글114 복잡성은 숨기고(Facade), 규칙은 강제하며(FSM), 흐름은 지배하라(Orchestrator). using System;using System.Threading;using System.Threading.Tasks;using FactoryAutomation.Core.Patterns;namespace FactoryAutomation.Core.Equipment{ public interface ICamera : IDisposable { bool IsConnected { get; } void Connect(); void StartGrab(); void StopGrab(); } public interface IPlcCommunication : IDisposable { void WriteSystemReady(bool isR.. 2026. 10. 21. CancellationTokenSource 초등학생도 이해하는 CancellationTokenSource 비유: "엄마의 확성기와 게임하는 아이"방에서 신나게 컴퓨터 게임을 하는 아이(작업 스레드)가 있습니다. 저녁 식사 시간이 되어서 엄마가 아이의 게임을 멈춰야 합니다. 여기서 게임을 멈추는 방법은 두 가지가 있습니다.나쁜 방법 (Thread.Abort - 강제 종료): 엄마가 방에 들어가서 컴퓨터 전원 플러그를 확 뽑아버립니다.결과: 게임은 즉시 멈추겠지만, 세이브 파일이 날아가고, 컴퓨터 하드디스크가 망가질 수 있습니다. 우리 공장으로 치면 카메라 연결이 엉키고 메모리가 터져서 프로그램이 뻗어버리는 대참사입니다.좋은 방법 (CancellationTokenSource - 협력적 취소): 엄마가 거실에서 확성기(CancellationTokenS.. 2026. 10. 21. readonly 초등학생도 이해하는 readonly 비유: "네임펜으로 쓴 이름표"초등학교에 입학해서 새 필통을 샀다고 해봅시다.일반 변수 (int a;): 연필로 쓴 이름표입니다. 지우개로 지우고 언제든지 친구 이름으로 바꿀 수 있습니다.readonly 변수 (readonly int a;): '네임펜'으로 쓴 이름표입니다.딱 한 번, 처음 필통을 살 때(변수를 선언할 때)나 입학식 날 아침(생성자, Constructor)에만 이름을 적을 수 있습니다.일단 학교에 도착해서 수업이 시작되면(프로그램이 실행 중일 때), 그 누구도 지우개로 지우고 이름을 바꿀 수 없습니다.이제 이 "네임펜"이 실제 머신비전 코드에서 어떻게 쓰이는지 현업용 코드로 확인해 보겠습니다.Step 1: 현업용 전체 코드 (The Production .. 2026. 10. 21. 3 아이고, 통신 문제로 제 설명이 중간에 끊겨버렸군요! 현장에서 장비 통신(Heartbeat)이 끊긴 것처럼 아찔했습니다. 흐름이 끊기지 않도록, 질문하셨던 Program.cs 통합 아키텍처에 대한 완벽한 전체 답변을 다시 전수해 드리겠습니다.질문하신 "여기에 적용하는 게 맞는 건가?"에 대한 시니어의 대답은 "네! 아주 정확하게 찾아오셨습니다."입니다.보여주신 Program.cs 파일이 바로 우리 비전 프레임워크(OmniSight)의 모든 인프라스트럭처가 결집하는 최상위 관문(Bootstrapper)입니다. 앞서 우리가 공들여 만든 인프라들이 이 Main 메서드 안에서 정확한 의존성 순서(Dependency Order)에 맞춰 조립되어야 비로소 24시간 멈추지 않는 FA 장비의 소프트웨어가 완성됩니다.끊.. 2026. 8. 23. 2 하하, 정곡을 찌르셨습니다. 걱정 마십시오!세팅 화면이나 파라미터(Recipe) 설정 화면에 들어가는 수십 개의 텍스트박스(TextBox), 콤보박스(ComboBox), 체크박스(CheckBox)를 전부 코드로 치고 있다면 그건 아키텍처가 아니라 '노가다'입니다.시니어로서 명확한 'UI 설계의 황금률(Golden Rule)'을 정해 드리겠습니다.코드로 짜는 영역 (Framework & Dynamic UI): MainForm의 전체 뼈대(비율), 17개의 탭 메뉴(Header), 실시간으로 개수가 변하는 검사 이력 그리드, 초당 수십 번 그려지는 비전 영상 뷰어. (유지보수와 렌더링 성능이 극도로 중요하기 때문입니다.)디자이너로 그리는 영역 (Static & Parameter UI): 모델 설정, 카메라 .. 2026. 8. 21. 1 Step 2: 심층 아키텍처 및 엣지 케이스 검증 (Code Breakdown & Risk Audit)단순히 폼을 분할하는 것을 넘어, 현장에서 발생할 수 있는 UI 크래시와 렌더링 병목을 사전에 차단하는 방어막입니다.컨트롤 과부하 및 GDI+ 화면 껌뻑임(Flickering) 방어:의심 시나리오: 검사 이력 그리드에 데이터가 1초에 10번씩 추가되고, 상/하단 카메라 영상 2개가 20fps로 업데이트됩니다. 일반적인 WinForms TableLayoutPanel은 자식 컨트롤이 갱신될 때마다 전체 레이아웃을 다시 계산하며 화면이 미친 듯이 껌뻑거립니다.방어 분석: CreateTableLayoutPanel 메서드 내부의 Reflection(리플렉션) 기법이 핵심입니다. Microsoft는 TableLay.. 2026. 8. 21. 1. 중복실행 방지. FA 장비 소프트웨어에서 중복 실행 방지는 단순한 편의 기능이 아니라 '필수 안전장치(Safety Interlock)'입니다.카메라 프레임 그래버(Frame Grabber)나 PLC 통신 포트(COM/Socket)는 기본적으로 독점(Exclusive) 연결을 요구합니다. 만약 작업자가 실수로 아이콘을 두 번 눌러 프로그램이 두 개 켜지면, 두 프로세스가 하나의 하드웨어에 동시에 접근하려다 장비가 뻗거나 블루스크린이 발생할 수 있습니다..NET Framework 환경에서 이를 OS 레벨에서 완벽하게 차단하는 가장 확실한 방법인 Mutex (Mutual Exclusion, 상호 배제) 객체를 활용하여 Program.cs를 업데이트해 보겠습니다. Step 1: 현업용 코드 (The Solution)프로젝트 루.. 2026. 5. 25. 1. 머신비전이란? 시스템 구성 요소, 4대 기능, 그리고 최신 AI 기술 동향 총정리 머신비전(Machine Vision)은 단순히 사진을 찍는 기술이 아닙니다. 산업용 카메라, 광학계, 조명, 그리고 소프트웨어 알고리즘을 통합하여 "이미지 데이터를 기반으로 자동화된 판단을 내리는 시스템"을 의미합니다.컴퓨터 비전(Computer Vision)이 일반적인 이미지 처리와 이해에 집중한다면, 머신비전은 가혹한 공장 환경에서의 신뢰성, 정밀도, 그리고 실시간성(Real-time)에 초점을 맞춘 공학의 집약체입니다.1. 머신비전 시스템의 5대 핵심 요소성공적인 머신비전 시스템은 하드웨어와 소프트웨어의 완벽한 조화로 이루어집니다.① 광학계 및 조명 (Optics & Lighting)비전 시스템에서 가장 중요한 단계는 '좋은 이미지'를 획득하는 것입니다.조명: 검사 대상의 재질과 형태에 따라 반사,.. 2026. 5. 12. winform - DataGridView나 ListView 같은 컨트롤에 데이터가 많거나 갱신이 잦을 때 화면이 번쩍거리는 것을 막아주는 핵심 코드, 더블버퍼링 네, 이 코드는 Windows Forms 개발에서 화면 깜빡임(Flickering) 현상을 해결하기 위해 매우 중요하고 실용적인 역할을 합니다.특히 DataGridView나 ListView 같은 컨트롤에 데이터가 많거나 갱신이 잦을 때 화면이 번쩍거리는 것을 막아주는 핵심 코드입니다.상세한 분석은 다음과 같습니다.1. 역할: 더블 버퍼링(Double Buffering) 강제 활성화이 코드는 특정 컨트롤(Control)의 DoubleBuffered 속성을 true로 설정하는 확장 메서드입니다.더블 버퍼링이란? 화면에 그림을 그릴 때, 1) 화면에 직접 그리는 방식(싱글 버퍼) 대신, 2) 메모리(백그라운드 버퍼)에 먼저 그림을 완성한 뒤, 화면에 한 번에 복사하는 방식입니다.싱글 버퍼: 그리는 과정이 눈에.. 2026. 1. 23. visual studio 2019 sn 만료 재설치 후에도 프로페셔널 제품 키 등록은 당연히 가능합니다. 하지만 재설치에 관해 두 가지 중요한 사실을 미리 알고 계시는 것이 좋습니다.1. 재설치해도 "기간 만료"는 바로 뜰 수 있습니다Visual Studio의 라이선스 정보는 프로그램 폴더가 아닌 레지스트리와 시스템 깊숙한 곳에 저장됩니다. 따라서 단순히 프로그램을 지웠다 다시 깔더라도 "평가 기간이 만료되었습니다"라는 창이 바로 뜰 가능성이 매우 높습니다. (재설치 시간만 낭비하실 수 있습니다.)2. 바로 종료되지 않습니다 (안심하세요)기간이 만료되었다고 해서 프로그램이 즉시 강제 종료되거나 켜지지도 않는 것은 아닙니다.만료 알림창이 뜨면서 편집 화면으로 진입을 막을 뿐입니다.이 알림창에는 반드시 [제품 키로 잠금 해제(Unlock with a .. 2026. 1. 21. 이전 1 2 3 4 ··· 12 다음 반응형