목록전체 글 (27)
노주현 개인 블로그

EtherCAT 이란? Ethernet for Control Automation Technology Ehternet + 자동화 제어 기술 Ethernet 기반의 산업용 통신 방식을 의미 한다. (Real-Time 실시간성 통신 방식) 이더넷 표준 IEEE 802.3 에 정의된 표준 프레임과 물리 계층을 사용. IEC-표준 61158 을 따른다 (외우지 않아도 됨) -> 하위 프로토콜 계층 뿐만 아니라 어플리케이션 계층과 드라이브와 같은 디바이스 프로파일을 포함 일반 이더넷 특징 (이더캣, 실시간의 반대 개념) 1. CSMA/CD (Carrier Sense Multiple Access/Colision Detection) 통신 회선 내에 다른 신호 (Carrier) 가 있는지 감지 (Sense) 하고, 다른..

라운드 로빈 스케쥴링 (Round Robin Scheduling, RR) 시분할 시스템을 위해 설계된 선점형 스케쥴링의 하나로서 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간 단위로 CPU 를 할당하는 방식의 CPU 스케쥴링 알고리즘이다. 또 다른 설명으로 컴퓨터 리소스를 프로세스 들에게 공정하게 부여하기 위한 방법으로서, 각 프로세스에 일정 시간을 할당하고 할당된 시간이 지나면 그 프로세스는 잠시 보류하여 다른 프로세스에게 기회를 주고, 또 다른 프로세스에게 반복하는 방식 보통 시간 단위 10~100ms 정도로 할당 되며, 시간 단위동안 수행한 프로세스는 준비 큐의 끝으로 밀려나게 되고 문맥 전환의 오버헤드가 큰 반면에 응답시간이 짧아지는 장점이 있어 실시간 시스템에 유리 하다. CPU 스케쥴..
RTOS 란? Real Time Operating System 의 약어로서 Real-time System 에서 사용되는 OS 이다. Real-time System : 정해진 시간 제약을 해결할 수 있는 시스템 -> 주어진 시간 내에 어떠한 일을 반드시 처리해야 한다는 뜻 대체로 선점형 스케쥴링 시스템을 사용한다. 낮은 우선순위에 있는 Task 동작 중에 갑자기 높은 우선 순위에 있는 Task 가 등장하면, 높은 우선 순위에 있는 Task를 먼저 처리 한다. 일반 OS 는 리소스를 효율적으로 사용하는데 초점이 맞춰져 있으나 RTOS 는 효율적인 것도 중요하지만 속도를 더 중시한다. 대표적인 RTOS 는 VxWorks, FreeROTS 가 있다. RTOS 의 특징 1. 실시간 운영 체제는 신뢰성(Depend..

Designer 에서 ListBox 를 사용할 때 아래와 같이 사용 하는 경우 처음 Page 를 열거나, 리스트 박스를 클릭할 때 2~3번 이상 여러번 실행되는 경우가 있음 원인 분석 및 확인 결과 위와 같이 Camera List 를 추가하는 코드에서 기존 : DeleteAll 실행 -> 원하는 item 을 하나씩 AddRow 해서 추가 AddRow 할 때 인덱스가 0이 되면서 여러번 타게 된다고 생각했었다. 수차례 확인 결과 DeleteAll 해서 하나씩 지워질 때 1번 인덱스 -> 0번 인덱스로 밀리면서 On Value Changed 가 실행되고 계속 Item Index 가 0 이 들어오는 현상이 발생하였다. 변경 : Item Index 를 -1로 변경 -> DeleteAll 실행 -> 원하는 ite..
if (System.Diagnostics.Debugger.IsAttached) System.Diagnostics.Debugger.Break(); $System.Debug.Break();

동기 1. 상대방의 일정 신호(결과 신호)에 의해서 다음 동작으로 이뤄짐 2. 어떤 루틴을 완전히 끝내고 제어를 반납 비동기 1. 상대방의 상태와 관계없이 일방적으로 동작하면 비동기 2. 동작이 안 끝났어도 일단 제어권을 반납한 후 작업 계속 BeginInvoke / EndInvoke int threadID; // 비 동기 실행에서 Thread 를 구분하는 ID // delegate 인스턴스 생성 AasyncDelegateCaller caller = new AasyncDelegateCaller(AasyncDelegate); // 비동기 시작 IAsyncResult result = caller.BeginInvoke(3000, out threadID, null, null); // EndInvoke 를 통해서..

Array Copy() Array.Copy(srcData, 0, dstData, 0, size); Buffer.BlockCopy() Buffer.BlockCopy(srcData, 0, dstData, 0, size); Marshal.Copy() static unsafe void MarshalCopy(byte[] src, int srcOffset, byte[] dst, int dstOffset, int count) { fixed (byte* b1 = &src[0]) fixed (byte* b2 = &dst[0]) { IntPtr ab2 = new IntPtr(b2); Marshal.Copy(src, 0, ab2,count); } } Cpp Copy Memory using System.Runtime.Inte..
using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices; // Camera 등에서 buffer 값을 가져온다. byte[] buffer = 버퍼값 // Parameter int width; int height; // bmp LockBits 실행 Bitmap bmp = new Bitmap(width, height, PixelFormat.Format8bppIndexed); BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, bmp.PixelFormat); // byte[] to bmp Ma..