2011년5월17일...Eltima Software Virtual Serial Port Driver, C과제2풀이, C과제3
이 때까지 DK128보드로 실습할 때 ATmega128부트섹터에 있는 부트로더를 이용하여 PC와 시리얼통신을 하였다.
COM1포트를 통해 코드를 전송하여 DK128의 ATmega128에 프로그래밍하였던 것이다.
이 때 사용한 COM1포트는 실제 존재하는 통신포트이다.
가상 시리얼 포트 |
보통 PC에는 COM포트가 하나이거나 최근에 나오는 모델은 보통 없다.
그래서 PC 한 대로 통신실습을 할 수 없으니 가상포트를 사용하는 것이다.
Eltima Software Virtual Serial Port Driver 6.0.1.115를 이용해 가상포트를 만들고,
가상포트끼리 짝을 지어 통신을 하여 보자.
몰라 Next…
동의하고 Next…
설치경로 지정하고 Next…
폴더 만들겠냐? 예!
시작메뉴…Next
바탕화면 단축아이콘만 체크…빠른 실행 필요하면 하고…Next
설치시작!
너무 빠르다;
프로그램 실행체크해제하고 Finish
구멍난 과자를 복사하고…
Second port를 COM5로 바꾼뒤에 Add pair 버튼을 클릭
좌측 시리얼포트탐색기를 보니 물리적포트로 COM1이 있고,
가상포트로 이번에 추가한 COM2와 COM5가 서로 연결되어 있다.
장치관리자에서도 추가된 포트들의 확인이 가능하다.
시작메뉴 – 모든 프로그램 – 보조프로그램 – 통신 – 하이퍼터미널을 클릭
아무 이름이나 적고 확인
COM2선택
9600bps, 8bit데이터, 패리티없음, 1bit정지비트, 흐름제어없음을 선택한 뒤 확인
수화기를 올린 전화기 모양의 아이콘을 클릭하여 연결을 끊는다.
맨우측 사람손모양의 속성아이콘을 클릭하여 속성창을 열어 설정탭을 클릭함.
ASCII설정버튼을 클릭
줄 끝에 LF붙여 보냄과 입력된 문자를 터미널창에 표시를 체크한 다음 확인
하이퍼터미널을 하나 더 실행하여 COM5도 만든다.
터미널창에서 알파벳을 입력하여 COM2 –> COM5로 문자가 잘 전송되는 것을 확인
터미널창에서 한글을 입력하여 COM5 –> COM2로 문자가 잘 전송되는 것을 확인
<- COM2를 열어 놓은 하이퍼터미널을 닫거나 연결을 끊고 선생님의 main.exe를 실행
main.exe에서 COM2를 열어 “Hello world”라는 문자열과 개행문자를 보내고,
하이퍼터미널은 COM5를 열어 COM2에서 보내온 문자들을 수신하여 터미널창에 표시하고 있다.
컴퓨터 한 대로 통신실습을 할 수 있다니…
가상시리얼포트드라이버는 좋은 프로그램이다.
C과제2 풀이 |
1번...모두 나의 답과 같아 생략.
2번...printf( )함수에 바로 인자로 (~Num) + 1,
나는 Num = ~Num; Num = Num + 1; 한 다음에 Num을 인자로 넘겨줌.
3번...분은 time / 60, 초는 time % 60
나는 iMin = iSec / 60, 초는 iSec = iSec – iMin * 60;
4번...( i / 8 ) * 10 + ( i % 8)
나는 위의 식과 비슷하게 했으나 대신 반복문으로 큰 수도 처리가능하게 하였음. 복잡함. @_@
5번...N / 100 = 100의 자리 수
(N % 100) / 10 = 10의 자리 수
N % 10 = 1의 자리 수
간단하네!
나는 복잡해!
C과제3 |
1. 다음 질문들에 맞는 if문의 조건식을 구성하세요.
1) N이 0보다 크거나 같다.
답: if(0 <= N)
2) N이 -5보다 작거나 5보다 크다.
답: if(-5 > N || 5 < N)
3) N이 0보다 크거나 같고 10보다 작거나 같다.
답: if(0 <= N && 10 >= N)
4) ch는 대문자이다.
답: if(65 <= ch && 90 >= ch)
5) ch는 소문자이다.
답: if(97 <= ch && 122 >= ch)
6) N이 K와 같거나 M보다 크다.
답: if(K == N || M < N)
2. 키보드로부터 한 문자를 입력 받아서 입력 문자에 해당하는 아스키 코드값을 출력하세요.
출력) 문자 입력 : A
값 : 65
1: /****************************************************
2: 2. 키보드로부터 한 문자를 입력 받아?
3: 입력 문자에 해당하는 아스키 코드값을 출력하세요.
4:
5: 소속: 내장형하드웨어
6: 작성자: 김수만
7: 작성일자: 2011년 5월 17일
8:
9: ****************************************************/
10: #include <stdio.h>
11:
12: int main()
13: {
14: char ch;
15:
16: printf("문자 입력: ");
17: scanf("%c", &ch);
18:
19: printf("%d", ch);
20:
21: return 0;
22: }
3. 키보드로부터 소문자를 입력 받으면 대문자로, 대문자를 입력 받으면 소문자로 변환하세요.
출력) 알파벳 입력 : a
대문자로 변환 : A
알파벳 입력 : 1
알파벳을 입력하세요.
알파벳 입력 : B
소문자로 변환 : b
알파벳 입력 : (엔터)
프로그램 종료!
1: /****************************************************
2: 3. 키보드로부터 소문자를 입력 받으면 대문자로,
3: 대문자를 입력 받으면 소문자로 변환하세요.
4:
5: 소속: 내장형하드웨어
6: 작성자: 김수만
7: 작성일자: 2011년 5월 17일
8:
9: ****************************************************/
10: #include <stdio.h>
11:
12: int main()
13: {
14: char ch;
15:
16: while(1)
17: {
18: printf("알파벳 입력: ");
19: scanf("%c", &ch);
20:
21: if(65 <= ch && 90 >= ch) //대문자이면
22: {
23: ch = ch + 32; //소문자로 변환
24: printf("소문자로 변환 : %c\n", ch);
25: }
26: else if(97 <= ch && 122 >= ch) //소문자이면
27: {
28: ch = ch - 32; //대문자로 변환
29: printf("대문자로 변환 : %c\n", ch);
30: }
31: else if(10 == ch) //엔터키이면
32: {
33: break; //탈출
34: }
35: else //그 외
36: {
37: printf("알파벳을 입력하세요.\n");
38: }
39:
40: fflush(stdin);
41: }
42:
43: printf("프로그램 종료!\n");
44:
45: return 0;
46: }
'내장형하드웨어 > 일일보고서' 카테고리의 다른 글
2011년5월19일...ATmega128 -> PC(단방향직렬통신), (0) | 2011.05.19 |
---|---|
2011년5월18일...시리얼통신복습, C과제3풀이, C과제4 (0) | 2011.05.19 |
2011년5월16일...두더지잡기게임1-2, ATmega128 내부EEPROM 읽고 쓰기, 예제코드분석, 실습문제 (0) | 2011.05.17 |
2011년5월13일...두더지잡기게임 코드정리, C과제2(코드오류수정, 2의 보수변환, 초를 분초로 변환, 10진수를 8진수로 변환하는 함수, 각 자릿수들의 합구하기) (0) | 2011.05.15 |
2011년5월12일...SourceInsight3.5을 사용해 코드를 분석하여 I/O헤더파일을 만들어 보자. (0) | 2011.05.13 |