PowerPoint 프레젠테이션

Similar documents
PowerPoint 프레젠테이션

Microsoft PowerPoint - lab16.pptx

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - lab15.pptx

Microsoft PowerPoint - lab14.pptx

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

untitled

K&R2 Reference Manual 번역본

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

교육지원 IT시스템 선진화

vi 사용법

Microsoft PowerPoint - IOControl [호환 모드]

/chroot/lib/ /chroot/etc/

6주차.key

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

제1장 Unix란 무엇인가?

chap7.key

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

03장.스택.key

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

슬라이드 1

ECE30076 Embedded System Programming - LED Device Driver

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

본 강의에 들어가기 전

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

5.스택(강의자료).key

Microsoft Word doc

untitled


04디바이스드라이버

KEY 디바이스 드라이버

2009년 상반기 사업계획

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

강의10


제1장 Unix란 무엇인가?

lecture4(6.범용IO).hwp

Sena Technologies, Inc. HelloDevice Super 1.1.0

[8051] 강의자료.PDF

슬라이드 1

제12장 파일 입출력

Microsoft Word - KPMC-400,401 SW 사용 설명서


Microsoft PowerPoint - [2009] 02.pptx

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

chap8.PDF

13주-14주proc.PDF

歯9장.PDF

ActFax 4.31 Local Privilege Escalation Exploit

PowerPoint 프레젠테이션

untitled

Javascript.pages

Microsoft PowerPoint - es-arduino-lecture-03

untitled


Chapter_06

Microsoft PowerPoint - chap12-고급기능.pptx

SRC PLUS 제어기 MANUAL

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4


다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

PowerPoint 프레젠테이션

컴파일러

PowerPoint 프레젠테이션

BMP 파일 처리


<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

MPLAB C18 C

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

untitled

untitled

商用

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

歯7장.PDF

UI TASK & KEY EVENT

PowerPoint 프레젠테이션

chap7.PDF

PowerPoint Template

fprintf(fp, "clf; clear; clc; \n"); fprintf(fp, "x = linspace(0, %d, %d)\n ", L, N); fprintf(fp, "U = [ "); for (i = 0; i <= (N - 1) ; i++) for (j = 0

11장 포인터

C프로-3장c03逞풚

제1장 Unix란 무엇인가?

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

SYN flooding

untitled

C++-¿Ïº®Çؼ³10Àå

2009년 상반기 사업계획

Microsoft PowerPoint - 09-Pipe

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

untitled

Transcription:

Web server porting 2 Jo, Heeseung

Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2

Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi 8bitled.html ---------------- 다음과같이수정한다 ------------------------ <html> <head><title> 8bit led cgi program</title></head> <body> <form method=get action="cgi-bin/8bitled.cgi"> <p><p><p> 십육진수값을 2 자리로입력하세요 : <input type="text" name="value" maxlength="2" size="2"> <input type="submit" name="button" value="input"></form> </body> </html> ------------------ 저장하고종료한다 ------------------------- 3

Web 을이용한 LED 제어 8bitled.c 파일을작성 root@ubuntu:/working/web# vi 8bitled.c 001: #include <stdio.h> 002: #include <stdlib.h> 003: #include <unistd.h> 004: #include <sys/types.h> 005: #include <sys/mman.h> 006: #include <sys/stat.h> 007: #include <fcntl.h> 008: #include <sys/ioctl.h> 009: #include <termios.h> 010: 011: #define FPGA_BASEADDRESS 0x05000000 012: #define LED_OFFSET 0x20 013: 014: typedef struct { 015: char name[128]; 016: char val[128]; 017: }entry; 018: 4

Web 을이용한 LED 제어 019: void getword(char *word, char *line, char stop) 020: { 021: int x =0, y = 0; 022: 023: for(x=0;((line[x]) && (line[x]!= stop)); x++) word[x] = line[x]; 024: 025: word[x] = '\0'; 026: if(line[x]) ++x; 027: 028: while(line[y++] = line[x++]); 029: } 030: 031: int main() 032: { 033: int fd; 034: unsigned short *addr_fpga, *addr_led; 035: 036: char *cl; 037: unsigned short val; 038: entry entries; 039: 5

Web 을이용한 LED 제어 040: printf("content-type : text/html\n\n"); 041: printf("<html>\n<head><title>8bit LED cgi program</title></head>\n"); 042: printf("<body>\n"); 043: 044: cl = (char *)getenv("query_string"); 045: getword(entries.name,cl,'='); 046: getword(entries.val,cl,'&'); 047: 048: val = (unsigned short)strtol(entries.val,null,16); 049: 050: if(val == 0) { 051: if(!((entries.val[0] == '0' && entries.val[1] == '\0') (entries.val[0] == '0' && entries.val[1] == '0'))) { 052: printf("<p>you entered the wrong value!"); 053: exit(1); 054: } 055: } 056: 057: if((fd=open("/dev/mem",o_rdwr O_SYNC)) < 0) { 058: printf("mem open fail, %d\n", fd); 6

Web 을이용한 LED 제어 059: exit(1); 060: } 061: 062: addr_fpga= (unsigned short *)mmap(null, 4096, PROT_READ PROT_WRITE, MAP_SHARED, fd, FPGA_BASEADDRESS); 063: addr_led = addr_fpga + LED_OFFSET/sizeof(unsigned short); 064: 065: *addr_led = val 0x100; 066: 067: munmap(addr_fpga, 4096); 068: close(fd); 069: 070: printf("<br><center>you entered <b>'0x%x'</b></center>",val); 071: printf("<hr>"); 072: printf("</body>\n</html>"); 073: 074: return 0; 075: } 7

Web 을이용한 LED 제어 LED 제어프로그램컴파일 작성된 LED 제어소스를컴파일 root@ubuntu:/working/web# arm-linux-gcc -o 8bitled.cgi 8bitled.c 타겟보드에 LED 제어프로그램다운로드 타겟보드에 8bitled.html 과 8bitled.cgi 파일을 /web 과 /web/cgi-bin 디렉터리로복사 [root@sm5s4210 ~]# mv 8bitled.html /web/ [root@sm5s4210 ~]# mv 8bitled.cgi /web/cgi-bin/ 8

Web 을이용한 LED 제어 LED 제어페이지실행확인 호스트 PC 의웹브라우저로웹서버에접속 웹브라우저를실행시키고주소창에 http://192.168.0.150/ 8bitled.html 을입력 9

Web 을이용한 LED 제어 LED 제어페이지실행확인 텍스트상자에십육진수두자리를입력하고 input버튼을클릭 결과확인 10

Web 을이용한 7 Segment 제어 Web 을이용한 7 Segment 제어프로그램 web 에서데이터를전송받아타겟보드의 7 Segment 제어프로그램을작성하기위해다음과같이소스파일을생성 7segment.html 파일을작성 root@ubuntu:/working/web# vi 7segment.html <html> <head><title> 7segment cgi program</title></head> <body> <form method=get action="cgi-bin/7segment.cgi"> <p><p><p>7-segment 에표시할십진수를입력하세요. <input type="text" name="value" maxlength="6" size="6"> <input type="submit" name="button" value="input"> </form> </body> </html> 11

Web 을이용한 7 Segment 제어 7segment.c 파일작성 root@ubuntu:/working/web# vi 7segment.c 001: -------------------------- 다음과같이수정한다 ------------------------ 002: /********************************************************************** 003: * 7-Segment CGI Program 004: **********************************************************************/ 005: 006: #define FPGA_BASEADDRESS 0x05000000 007: #define SEG_GRID_OFFSET 0x30 008: #define SEG_DATA_OFFSET 0x32 009: 010: typedef struct { 011: char name[128]; 012: char val[128]; 12

Web 을이용한 7 Segment 제어 013: }entry; 014: 015: void getword(char *word, char *line, char stop) 016: { 017: int x =0, y = 0; 018: 019: for(x=0;((line[x]) && (line[x]!= stop)); x++) word[x] = line[x]; 020: 021: word[x] = '\0'; 022: if(line[x]) ++x; 023: 024: while(line[y++] = line[x++]); 025: } 026: 027: int sizeofword(char *word) 028: { 029: int i=0; 030: for(i=0;i<10;i++) { 031: if(word[i] == '\0') break; 032: } 033: return i; 13

Web 을이용한 7 Segment 제어 034: } 035: 036: unsigned int Getsegcode(char x) 037: { 038: unsigned int code; 039: switch (x) { 040: case '0' : code = 0xfc; break; 041: case '1' : code = 0x60; break; 042: case '2' : code = 0xda; break; 043: case '3' : code = 0xf2; break; 044: case '4' : code = 0x66; break; 045: case '5' : code = 0xb6; break; 046: case '6' : code = 0xbe; break; 047: case '7' : code = 0xe4; break; 048: case '8' : code = 0xfe; break; 049: case '9' : code = 0xf6; break; 050: case 'a' : 051: case 'A' : code = 0xfa; break; 052: case 'b' : 053: case 'B' : code = 0x3e; break; 054: case 'c' : 055: case 'C' : code = 0x1a; break; 14

Web 을이용한 7 Segment 제어 056: case 'd' : 057: case 'D' : code = 0x7a; break; 058: case 'e' : 059: case 'E' : code = 0x9e; break; 060: case 'f' : 061: case 'F' : code = 0x8e; break; 062: default : code = 0; break; 063: } 064: return code; 065: } 066: 067: int main() 068: { 069: char *cl; 070: int k; 071: unsigned int low = 0,high = 0; 072: entry entries; 073: unsigned short digit[6] = {0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; 074: unsigned short data[6]; 075: int i,j,m; 076: int fd; 077: unsigned short *addr_fpga; 15

Web 을이용한 7 Segment 제어 078: unsigned short *addr_grid, *addr_data; 079: 080: printf("content-type: text/html\n\n"); 081: printf("<html>\n<head><title>7-segment cgi program</title></head>\n"); 082: printf("<body>\n"); 083: 084: if((fd=open("/dev/mem",o_rdwr O_SYNC)) < 0) { 085: printf("mem open fail\n"); 086: exit(1); 087: } 088: 089: addr_fpga= (unsigned short *)mmap(null, 4096, PROT_READ PROT_WRITE, MAP_SHARED, fd, FPGA_BASEADDRESS); 090: addr_grid=addr_fpga+seg_grid_offset/sizeof(unsigned short); 091: addr_data=addr_fpga+seg_data_offset/sizeof(unsigned short); 092: 093: if(addr_grid < 0 addr_data < 0) { 094: close(fd); 095: printf("mmap error\n"); 096: exit(1); 097: } 16

Web 을이용한 7 Segment 제어 098: 099: cl = (char *)getenv("query_string"); 100: getword(entries.name,cl,'='); 101: getword(entries.val,cl,'&'); 102: k = sizeofword(entries.val); 103: 104: for(i=0; i<k; i++) 105: data[(k-i)-1] = Getsegcode(entries.val[i]); 106: 107: for(j=0;j<200;j++) { 108: for(i=0; i<k; i++) { 109: *addr_grid = digit[i]; 110: *addr_data = data[i]; 111: for(m=0;m<65536;m++); 112: } 113: } 114: 115: *addr_grid = ~digit[0]; 116: *addr_data = 0; 117: 17

Web 을이용한 7 Segment 제어 118: munmap(addr_grid, 4096); 119: munmap(addr_data, 4096); 120: close(fd); 121: 122: if( k!= 0) printf("<br><center>7-segment Done<br></center>"); 123: else printf("<br><center>you entered the wrong value!<br></center>"); 124: 125: printf("<hr>"); 126: printf("</body>\n</html>"); 127: return 0; 128: } 18

Web 을이용한 7 Segment 제어 7Segment 제어프로그램컴파일 작성된 7Segment.c 를컴파일 root@ubuntu:/working/web# arm-linux-gcc -o 7segment.cgi 7segment.c 타겟보드에 7Segment 제어프로그램다운로드 타겟보드에서 7segment.html 과 7segment.cgi 파일을 /web 과 /web/cgi-bin 디렉터리로복사 [root@sm5s4210 ~]# mv 7segment.html /web/ [root@sm5s4210 ~]# mv 7segment.cgi /web/cgi-bin/ 19

Web 을이용한 7 Segment 제어 7Segment 제어페이지실행확인 호스트 PC 의웹브라우저로웹서버에접속 웹브라우저를실행시키고주소창에 http://192.168.0.150/ 7segment.html 을입력 20

Web 을이용한 7 Segment 제어 7Segment 제어페이지실행확인 텍스트상자에십진수 6 자리를입력하고 input버튼을클릭 결과확인 21

Web 을이용한 TextLCD 제어 Web 을이용한 textlcd 제어프로그램 web 에서데이터를전송받아타겟보드의 textlcd 를조작하는프로그램을작성하기위해다음과같이소스파일을생성 textlcd 제어프로그램작성 root@ubuntu:/working/web# vi textlcd.html <html> <head><title> TextLCD CGI Program</title></head> <body> <form method=get action="cgi-bin/textlcd.cgi"> <p><p><p>lcd 에표시할문자를입력하세요.<br><br>Line1 <input type="text" name="form2" maxlength="16" size="20"><br>line2 <input type="text" name="form2" maxlength="16" size="20"><br> <input type="submit" name="button" value="input"> </form> </body> </html> 22

Web 을이용한 TextLCD 제어 textlcd.c 파일을작성 root@ubuntu:/working/web# vi textlcd.c 001: -------------------------- 다음과같이수정한다 ------------------------ 002: /***************************************************************** 003: * TextLCD CGI Program 004: *****************************************************************/ 005: 006: #include <stdio.h> 007: #include <string.h> 008: #include <stdlib.h> 009: #include <unistd.h> 010: #include <sys/mman.h> 011: #include <fcntl.h> 012: #include <termios.h> 013: 23

Web 을이용한 TextLCD 제어 014: #define FPGA_BASEADDRESS 0x05000000 015: #define TEXTLCD_OFFSET 0x10 016: 017: void setcommand(unsigned short command); 018: void writebyte(char ch); 019: void initialize_textlcd(); 020: void writetextlcd(int row, char *str,int length); 021: int function_set(int rows, int nfonts); 022: int display_control(int display_enable, int cursor_enable, int nblink); 023: int cusrsor_shit(int set_screen, int set_rightshit); 024: int entry_mode_set(int increase, int nshift); 025: int return_home(); 026: int clear_display(); 027: int set_ddram_address(int pos); 028: 029: void splitword(char *out, char *in, char stop); 030: void unescape_url(char *url); 031: char x2c(char *x); 032: 033: unsigned short *ptextlcd; 034: 24

Web 을이용한 TextLCD 제어 035: typedef struct { 036: char name[128]; 037: char val[128]; 038: }entry[2]; 039: 040: int get_get(entry entries) 041: { 042: char qs[128]; 043: int i; 044: 045: //bzero(qs,sizeof(qs)); 046: sprintf(qs,"%s\0",getenv("query_string")); 047: 048: for(i=0;*qs && i < 2; i++) { 049: splitword(entries[i].val, qs, '&'); 050: unescape_url(entries[i].val); 051: splitword(entries[i].name, entries[i].val, '='); 052: } 053: 054: return i; 055: } 056: 25

Web 을이용한 TextLCD 제어 057: void splitword(char *out, char *in, char stop) 058: { 059: int i, j; 060: 061: while(*in == ' ') in++; 062: for(i=0; in[i]&&(in[i]!=stop); i++) out[i] = in[i]; 063: out[i] = '\0'; 064: if(in[i]) ++i; 065: while(in[i] == ' ') i++; 066: 067: for(j=0;in[j]; ) in[j++] = in[i++]; 068: } 069: 070: void unescape_url(char *url) 071: { 072: int i,j; 073: 074: for(i=0,j=0;url[j];++i,++j) { 075: if((url[i] = url[j]) == '%') { 076: url[i] = x2c(&url[j+1]); 077: j += 2; 078: }else if(url[i] == '+') { 26

Web 을이용한 TextLCD 제어 079: url[i] = ' '; 080: } 081: } 082: url[i] = '\0'; 083: } 084: 085: char x2c(char *x) 086: { 087: char c; 088: 089: c = (x[0] >= 'A'? ((x[0] & 0xdf) - 'A') + 10 : (x[0] - '0')); 090: c *= 16; 091: c += (x[1] >= 'A'? ((x[1] & 0xdf) - 'A') + 10 : (x[1] - '0')); 092: 093: return c; 094: } 095: 096: int main(int argc, char **argv) 097: { 098: char data[2][128]; 099: int fd; 100: entry entries; 27

Web 을이용한 TextLCD 제어 101: char *cl; 102: unsigned short *addr_fpga; 103: 104: printf("content-type: text/html\n\n"); 105: cl = (char *)getenv("query_string"); 106: 107: get_get(entries); 108: 109: if ((fd=open("/dev/mem",o_rdwr O_SYNC)) < 0) { 110: perror("mem open fail\n"); 111: exit(1); 112: } 113: 114: addr_fpga= (unsigned short *)mmap(null, 4096, PROT_READ PROT_WRITE, MAP_SHARED, fd, FPGA_BASEADDRESS); 115: ptextlcd=addr_fpga+textlcd_offset/sizeof(unsigned short); 116: 117: if(ptextlcd < 0) { 118: close(fd); 119: printf("mmap error\n"); 120: exit(1); 121: } 28

Web 을이용한 TextLCD 제어 122: 123: initialize_textlcd(); 124: 125: strcpy(data[0], entries[0].val); 126: strcpy(data[1], entries[1].val); 127: 128: writetextlcd(1,data[0],strlen(data[0])); 129: writetextlcd(2,data[1],strlen(data[1])); 130: 131: munmap(ptextlcd,4096); 132: close(fd); 133: 134: printf("<br><center>lcd Done!</center><br>"); 135: return 0; 136: } 137: 138: void setcommand(unsigned short command) 139: { 140: command &= 0x00FF; 141: 142: *ptextlcd = command 0x0000; 143: usleep(1000); 29

Web 을이용한 TextLCD 제어 144: *ptextlcd = command 0x0100; 145: usleep(1000); 146: *ptextlcd = command 0x0000; 147: usleep(1000); 148: 149: } 150: 151: void writebyte(char ch) 152: { 153: unsigned short data; 154: data = ch & 0x00FF; 155: 156: *ptextlcd = data&0x400; 157: usleep(1000); 158: *ptextlcd = data 0x500; 159: usleep(1000); 160: *ptextlcd = data 0x400; 161: usleep(1000); 162: } 163: 164: void initialize_textlcd() 165: { 30

Web 을이용한 TextLCD 제어 166: function_set(2,0); //Function Set:8bit,display 2lines,5x7 mod 167: display_control(1,0,0); // Display on, Cursor off 168: clear_display(); // Display clear 169: entry_mode_set(1,0); // Entry Mode Set : shift right cursor 170: return_home(); // go home 171: } 172: 173: //send Function Set command to the text lcd 174: // rows = 2 : => 2 rows, rows = 1 => 1 rows 175: // nfonts = 1 : = > 5x10 dot, nfonts = 0 : 5x7 dot 176: int function_set(int rows, int nfonts){ 177: unsigned short command = 0x30; 178: 179: if(rows == 2) command = 0x08; 180: else if(rows == 1) command &= 0xf7; 181: else return -1; 182: 183: command = nfonts? (command 0x04) : command; 184: setcommand(command); 185: 186: return 1; 187: } 31

Web 을이용한 TextLCD 제어 188: 189: int display_control(int display_enable, int cursor_enable, int nblink) 190: { 191: unsigned short command = 0x08; 192: command = display_enable? (command 0x04) : command; 193: command = cursor_enable? (command 0x02) : command; 194: command = nblink? (command 0x01) : command; 195: setcommand(command); 196: return 1; 197: } 198: 199: int cusrsor_shit(int set_screen, int set_rightshit) 200: { 201: unsigned short command = 0x10; 202: command = set_screen? (command 0x08) : command; 203: command = set_rightshit? (command 0x04) : command; 204: setcommand(command); 205: return 1; 206: } 207: 208: int entry_mode_set(int increase, int nshift) 32

Web 을이용한 TextLCD 제어 209: { 210: unsigned short command = 0x04; 211: command = increase? (command 0x2) : command; 212: command = nshift? ( command 0x1) : command; 213: setcommand(command); 214: return 1; 215: } 216: 217: int return_home() 218: { 219: unsigned short command = 0x02; 220: setcommand(command); 221: return 1; 222: } 223: 224: int clear_display() 225: { 226: unsigned short command = 0x01; 227: setcommand(command); 228: return 1; 229: } 230: 33

Web 을이용한 TextLCD 제어 231: int set_ddram_address(int pos) 232: { 233: unsigned short command = 0x80; 234: command += pos; 235: setcommand(command); 236: return 1; 237: } 238: 239: void writetextlcd(int row, char *str,int length) 240: { 241: int i; 242: 243: if(row == 1) set_ddram_address(0x0); 244: else if(row == 2) set_ddram_address(0x40); 245: 246: for(i=0;i<length;i++) writebyte(str[i]); 247: } 34

Web 을이용한 TextLCD 제어 textlcd 제어프로그램컴파일 작성된 textlcd.c 를컴파일 root@ubuntu:/working/web# arm-linux-gcc -o textlcd.cgi textlcd.c 타겟보드에 textlcd 제어프로그램다운로드 타겟보드에서 textlcd.html 과 textlcd.cgi 파일을 /web 과 /web/cgi-bin 디렉터리로복사 [root@sm5s4210 ~]$ mv textlcd.html /web/ [root@sm5s4210 ~]$ mv textlcd.cgi /web/cgi-bin/ 35

Web 을이용한 TextLCD 제어 textlcd 제어페이지실행확인 호스트 PC 의웹브라우저로웹서버에접속 웹브라우저를실행시키고주소창에 http://192.168.0.150/ textlcd.html 을입력 36

Web 을이용한 TextLCD 제어 textlcd 제어페이지실행확인 텍스트상자의 Line1과 Line2 글자를입력하고 input버튼을클릭 결과확인 37