엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice;

Slides:



Advertisements
Similar presentations
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m i n a r 8259A 를 아는가 ??? 2 3 t h K o r e a O p e r a t i n g S y s t e m S e m i n a r.
Advertisements

contents Thread function Create Thread Terminate Thread
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
Lab 10 Guide: 프린터 출력 예제. 한 페이지의 그림 인쇄 (교재 24장, 쪽)
6장. 멀티스레드 멀티스레드 프로그래밍의 필요성을 이해하고 기본 개념을 익힌다.
컴퓨터 프로그래밍 기초 [Final] 기말고사
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
Visual C++ Programming Tree Control/MultiThread
스레드의 개념과 동작 원리를 이해한다. MFC 스레드의 두 종류인 작업자 스레드와 UI 스레드 사용법을 익힌다.
Visual C++ Programming Tree Control/MultiThread
MultiThread.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 계측 및 실습 D/A-converter
컴퓨터 계측 및 실습 스테핑 모터 영남대학교 기계공학부.
Visual C++ Programming MultiThread
스레드란? 멀티 태스킹(muli-tasking)는 여러 개의 애플리케이션을 동시에 실행하여서 컴퓨터 시스템의 성능을 높이기 위한 기법 그림23-1. 병철 처리의 예.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
컴퓨터 계측 및 실습 로터리 엔코더 영남대학교 기계공학부.
분할 윈도, 다중 뷰… 영상 통신 연구실 권 동 진 발표 일 : 04월 27일.
11장. 1차원 배열.
C#.
컴퓨터 계측 및 실습 A/D-converter 하중센서
13. 연산자 오버로딩.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
멀티스레드 Chapter 05. * 학습목표 멀티스레드의 필요성을 이해하고 기본 개념을 익힘.
어서와 C언어는 처음이지 제14장.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho
24장. 파일 입출력.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
자바 5.0 프로그래밍.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
데이터베이스실험실 석사 2학기 조정희 TCP/IP Socket Programming… 제 18장 윈도우 기반 쓰레드 사용하기 데이터베이스실험실 석사 2학기 조정희
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
클라우드 서버로 사용자 데이터 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
Hanoi Tower.
클라우드 서버로 부터 값 읽어오기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
IOCP 2005/11/10.
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
컴퓨터 계측 및 실습 디지털 입력 영남대학교 기계공학부.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
Flow Diagram IV While.
가장 많이 사용 Accelerator 최상위 WM_COMMAND, OLE 메시지 관련 이벤트 처리만 가능 이 클래스를 상속받아서 다른 이벤트 처리 이벤트 처리 관련 윈도우(창) 최상위 클래스 멀티 테스킹(모듈) CFrameWnd, Cview,
컴퓨터 계측 및 실습 디지털 입력 영남대학교 기계공학부.
구조체(struct)와 공용체(union)
System Security Operating System.
9 브라우저 객체 모델.
AdcRead API 함수 분석 마이크로프로세서.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
과제 4: Thread (5월 9일까지) 4장 연습문제 풀이
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
워드프로세서 스프레드시트 문서 관리 인터넷 활용
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
Power Java 제23장 스레드.
                                  6장 엔코드 디코드 회로 10진수와 2진수의 변환 및 표시 4 7 A B C D BCD 변환.
7 생성자 함수.
6 객체.
디 코 더 n비트의 2진 코드를 입력으로 받아들여 최대 2n개의 서로 다른 정보로 바꿔 주는 조합 회로
20 XMLHttpRequest.
Presentation transcript:

엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice; BOOL bKillThread=FALSE, bThreadActive=FALSE; int enc_cnt = 0; UINT thread(LPVOID lParam); //쓰레드 함수 선언 <중략> void CEncoderDlg::OnEncoderOn() { // 엔코더 카운트값을 계측하기 위하여 쓰레드를 시작한다. // AfxBeginThread(thread, this); SetTimer(0, 50, NULL); //타이머 시작 } void CEncoderDlg::OnEncoderOff() { // Thread를 종료시킨다. bKillThread = TRUE; KillTimer(0); //타이머 종료 void CEncoderDlg::OnTimer(UINT nIDEvent) { // 현재의 엔코더 펄스수를 디스플레이 한다. m_encoder = enc_cnt; UpdateData(FALSE); CDialog::OnTimer(nIDEvent);

UINT thread(LPVOID lParam) { ULONG di_states; bKillThread = FALSE; bThreadActive = TRUE; while(!bKillThread) di_states =COMI_DI_GetAll(hDevice); if(!(di_states & 0x01)){ while(!(di_states & 0x01)){ di_states = COMI_DI_GetAll(hDevice); if(bKillThread){ break; } if(di_states & 0x02) enc_cnt--; else enc_cnt++; bThreadActive = FALSE; return 0;

스레드란? 스레드란 하나의 독립적인 작업의 단위 : 다른것에 구애 받지않는 자체적인 작업 단위를 스레드라고 함 윈도95는 멀티 테스킹이 가능한 운영체제. 즉 동시에 여러 작업을 할수 있다. CPU 자체는 한스텝에 한 개의 작업밖에는 하지 못함, 그렇다면 어떻게 윈도95는 멀티테스킹이 가능할까?-> 시간 분할( CPU의 처리 속도가 1초에 99개의 작업 한다고 하고 현재 A,B,C 3개의 프로그램이 동작중이라고 예를 들면 1초에 CPU는 프로그램의 우선순위에 따라 A에 해당하는 작업 50개 B에 해당하는작업 30개 C에 해당하는 작업 19개의 작업을 함 -> 이렇게 작업을 함으로써 사용자가 보기에 여러 작업을 동시에 하는 것처럼 보이게 할 수 있슴. 이때 하나의 작업 단위들을 스레드라고 함) 예) 윈도에서 워드 프로세서를 띄우고 대용량의 데이터를 로드하여 프린터로 출력할때 게다가 인터넷을 통해서 큰 데이터를 다운 받을때 : 원드프로세서의 입력작업이 하나의 스레드 + 프린팅 작업이 하나의 스레드 + 다운 로드가 또하나의 스레드 -> 멀티 스레드 UINT ThreadProcess(LPVOID lParam); // ThreadProcess라는 함수 선언 AfxBeginThread(ThreadProcess, this); // 위의 함수를스레드로 실행

Thread 함수 작성 UINT ThreadProcess(LPVOID lParam); //99999까지 카운트 하는 프로그램 UINT ThreadProcess(LPVOID lParam) { while(m_bBreak) // Display Count str.Format("%05d",i); i++; if(i>99999) i=0; dc.TextOut(100, 0, str); } //Dispaly "End Thread" dc.TextOut(0, 0, _T("EndThread")); return 0; m_bBreak = TRUE 로 초기화

AfxBeginThread 스레드를 작동하는 함수 : AfxBeginThread(………); CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID lParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL ); pfnThreadProc : 스레드를 수행하는 함수 LPVOID lParam : pfnThreadProc에 넘겨줄 인자의 포인터 변수 nPriority : 스레드의 중요 순위 ThreadProcess함수의 인자가 LPVOID lParam 인 것은 AfxBeginThread함수에서 임의의 lParam의 인자를 받기 위해서 ThreadProcess함수를 스레드로 실행 AfxBeginThread(ThreadProcess, this); ThreadProcess함수를 스레드로 종료 m_bBreak = FALSE;