Print Keybord - 키보드로 입력받은 문자를 화면에 출력하는 소스코드 레포트 (13page)
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

Print Keybord - 키보드로 입력받은 문자를 화면에 출력하는 소스코드 레포트 (13page)에 대한 보고서 자료입니다.

목차

Ⅰ. 과제개요 --------------------------------------- 2


Ⅱ. 설계 ------------------------------------------ 4


Ⅲ. 구현 ------------------------------------------ 6



Ⅳ. 테스트 프로그램의 구성 및 테스트의 주안점 ------------ 8


Ⅴ. 테스트 및 결과 ---------------------------------- 9


Ⅵ. 소스코드 -------------------------------------- 10

본문내용

D연산을 취했을 때 0이 나온다는 것은 키가 눌렸다는 것을 의미한다. 이런 경우에 입력된 key값의 ASCII값을 실제로 화면에 출력해주게 된다.
((k & KEY_RELEASE_FLAG) == 0)
Ⅳ. 테스트 프로그램의 구성 및 주안점
[ 테스트 ]
WORK/project0/src/geekos/main.c를 수정하여 GeekOS에 Project가 바라는 데로 수정을 가한 후, 이 프로그램을 테스트해보기 위하여 새로 GeekOS를 부팅시킨다.
아무것도 하지 않았을 때, GeekOS를 부팅시켰을 때는 아래 화면과 같이 Welcom
e to GeekOS! 라는 문구가 출력된 뒤 아래 화면과 같이 아무런 키도 먹히지 않는다는 것을 알 수 있다.
▲ [그림4.1] GeekOS 부팅화면
하지만, 수정을 가한 후에 GeekOS를 새로 부팅시키면 “Hello JoHana"라는 문자열이 출력되는 화면을 볼 수가 있고, Control-D를 누르기 전까지 문자가 입력되는 것을 확인할 수가 있다.
Ⅴ. 테스트 및 결과
▲ [그림5.1] 수정한 코드를 컴파일 하는 화면
▲ [그림5.2] bochs -qf .bochsrc로 GeekOS를 실행시켰을 때의 화면
▲ [그림5.3] 문자입력이 된 화면
(control-D를 하여 문자가 더 이상 입력되지 않지만, 화면에는 보이지 않는다.)
Project에는 포함되지 않았지만, 임의로 출력되는 문자의 색깔을 변경하였고, GeekOS부팅시 출력되는 “Start a kernel thread to echo pressed keys and print counts”를 출력되지 않도록 하였다.
화면에서 보이듯이,
1) 추가되는 커널모드 쓰레드(함수)를 통해 "Hello from JoHana"메시지를 출력하는 것은 잘 되고 있음이 확인된다.
다음으로, 2) 추가되는 커널모드 쓰레드는 키보드 입력 루틴인 Wait_For_Key()를 사용하여 GeekOS 부팅 후 사용자가 입력하도록 하는 것 역시 잘 되고 있음이 확인된다. 하지만 따로 backspace나 enter에 대한 설정은 project에 포함되지 않았으므로 설정을 해주지 않아 입력되지 않는다. 또한 control-D가 입력되는 순간 더 이상 문자가 입력되지 않는 것을 확인할 수 있는데, 이것은 화면캡쳐를 통해서는 확인할 수 없다.(압축파일 참고)
Ⅵ. 소스코드
/*
* GeekOS C code entry point
* Copyright (c) 2001,2003,2004 David H. Hovemeyer
* Copyright (c) 2003, Jeffrey K. Hollingsworth
* Copyright (c) 2004, Iulian Neamtiu
* $Revision: 1.51 $
*
* This is free software. You are permitted to use,
* redistribute, and modify it as specified in the file "COPYING".
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
static void Project_1(ulong_t arg)
{
Keycode k;
Print("Hello from JHN\n");//문자열 출력
while(1){
k=Wait_For_Key();//키보드를 통해 눌러진 key값의 ASCII값
if( k == 0x4064 )//control-D입력이 되면 중지.
break;
if( ((k & KEY_SPECIAL_FLAG) == 0) && ( (k & KEY_RELEASE_FLAG) == 0) )
Print("%c", k); // 입력되어 k에 저장된 key값을 문자로출력
/*
* 프로그램에서 control 또는 shift와 같은 특별키가 눌러지지 않았을 때
* &&
* 키가 눌러졌을 때만 입력이 가능하도록 Key_release를 통해
* key가 떼어졌을 때가 아닐 때 ASCII를 print할 수 있도록 설정.
*/
}
}
/*
* Kernel C code entry point.
* Initializes kernel subsystems, mounts filesystems,
* and spawns init process.
*/
void Main(struct Boot_Info* bootInfo)
{
Init_BSS();
Init_Screen();
Init_Mem(bootInfo);
Init_CRC32();
Init_TSS();
Init_Interrupts();
Init_Scheduler();
Init_Traps();
Init_Timer();
Init_Keyboard();
Set_Current_Attr(ATTRIB(BLACK, GREEN|BRIGHT));
Print("Welcome to GeekOS!\n");
Set_Current_Attr(ATTRIB(BLACK, GRAY));
Set_Current_Attr(ATTRIB(BLACK, MAGENTA|BRIGHT)); //글자색변경(자주)
Start_Kernel_Thread(Project_1, 0, PRIORITY_NORMAL, true);
//Project_1이라는 커널 모드 쓰레드를 실행시키기 위해
//Start_Kernel_Thread함수 사용
//TODO("Start a kernel thread to echo pressed keys and print counts");
//GeekOS부팅시 나오는 문구 삭제
/* Now this thread is done. */
Exit(0);
}

키워드

  • 가격2,000
  • 페이지수13페이지
  • 등록일2009.04.04
  • 저작시기2008.9
  • 파일형식한글(hwp)
  • 자료번호#527902
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니