*SHT계열 온습도센서
자체 calibration기능 ,자체 ad변환기능 ,twi 기능
위의 SCK클럭을 주어서 아래의 DATA를 동기화 해서 읽어 들인다 (동기화 기법)
위의 온도센서의 동기화 데이터 읽는법
The DATA tristate pin is used to transfer data in and out of the device. DATA changes after the falling edge and is valid on the rising edge of the serial clock SCK. During transmission the DATA line must remain stable while SCK is high
비교) *비동기 통신과 동기 통신
비동기 통신(uart)은 클럭으로 동기화 하지 않으므로 데이터의 앞뒤로 헤드와 테일을 붙여서 (추가비트) 데이터가 시작되고 끝나는 것을 알려준다
또 SPI 통신(클럭을 사용하므로 동기 통신)에서 마스터는 SCK를 먼저 만들어내는 쪽이 master이다
*동기통신과 비동기통신의 장단점
동기 통신과 달리 비동기 통신은 클럭 신호를 사용하지 않기 때문에 통신에 필요한 선의 수가 더 적고 장치가 간단하며 송신용 선과 수신용 선 두 가닥이 있으면 두 주체가 동시에 데이터를 주고 받는 양방향 통신, 즉 전이중 (full duplex) 통신이 가능하다. 반면에 통신 속도 측면에서는 동기 통신이 더 유리하다. 동기 통신에서는 동기를 위한 별도의 클럭 신호가 있으므로 데이터 길이의 제한 없이 한 바이트 이상의 데이터를 끊김 없이 연속해서 보낼 수 있다. 하지만 비동기 통신에서는 시작 비트와 정지 비트가 추가로 필요하므로 데이터만 연속해서 보낼 수 없다. 한 바이트의 데이터를 전송하기 위해서는 시작 비트와 정지 비트를 포함해서 적어도 10 비트를 전송해야 하므로 상대적으로 효율이 떨어진다.
*프로토콜
프로토콜은 규약 또는 약속으로 네트워크 프로토콜은 네트워크상에서 서로간에 데이터를 주고받기 위해서 지켜야하는 것을 의미한다
*LAN
근거리 지역 네트워크로서 근거리에서 pc를 연결한 것을 의미한다
*pcap
pcap은 패킷을 캡쳐해서 그 정보를 보기위한 함수들의 라이브러리이다
프롬프트 상에서 man을 이용해서 pcap을 보면
다음과 같이 여러가지 함수들이 있다
위에서 pcap.h파일을 인크루드하게 되어 있지만 실질적으로 찾아가면 include 디렉토리 아래 pcap 디렉토리내에 pcap.h가 있다
따라서 우리는 <pcap/pcap.h>로 인크루드하고 -ㅣ옵션을 컴파일시 사용한다
먼저 기본적으로 우리가 사용하는 랜카드의 이름을 알아내는 함수(? 네트워크 디바이스를 가져오는 함수) 를 사용해 보자
man 페이지에 보면 char *pcap_lookupdev라는 함수가 랜카드의 이름을 알아내는 함수이다
다음과 같이 코딩하고
|
우리가 찾는 네트워크장치가 eth0임을 알 수 있다
ifconfig명령어로 확인해 보면
아래의 lo루프백이 아닌 위의 장치는 eth0임을 알 수 있다
Link encap:Ethernet - 패킷캡슐화 방식으로 Ethernet사용
위에서 HWaddr가 맥주소(machine address)인데 출고되는 모든 네트워크 장비마다 고유한 6바이트주소이다
그런데 우리가 도스창에서 ipconfig로 확인하는 맥주소와 일치하지 않음을 알 수 있다
그 이유는 우리가 vmware를 이용해서 리눅스를 사용하기 때문이며 실제적인 mac주소는 도스로 확인한
ipconfig값임을 알 수 있다
위의 Physical Address가 실제 mac주소이다
위와 같이 pcap라이브러리의 함수는 packet을 다루는 기본적인 API함수들이다
pcap API를 사용해서 우리는 sniffer기능을 할 수 있는 여러가지 프로그램들을 작성할 수 있다
스니퍼란 네트워크 트래픽을 감시하고 분석하는 프로그램으로서, 병목현상 등과 같은 문제점을 발견해낸다. 이러한 정보들을 이용하면, 네트웍 관리자는 트래픽의 동향을 효율적으로 유지할 수 있다.(좋은 용도로 사용)
스니퍼는 또한 네트웍을 통해 전송되는 데이터를 포착하는데 사용될 수 있다 스니퍼가 장착된 라우터는 발신지 및 수신지 주소 뿐 아니라 패킷 내의 데이터까지도 읽을 수 있다.
만약 스니퍼 프로그램을 악용해서 다른 주소로 가야할 패킷을 중간에 가로채서 그 정보를 읽게 된다면 패킷을 도청하는 나쁜 용도로 사용하게 된다
*N-IDS(침입탐지 시스템)
네트워크 관문의 스위치에 나가고 들어오는 모든 트래픽을 수집해 기존에 정의된 모든 룰에 매칭해서 이것이 침입인지 아닌지를 파악하고 이것이 침입이면 관리자에게 통보하는 방식이다
여기서 트래픽을 수집한다는 말은 나가고 들어오는 모든 패킷을 수집하고 해석한다는 말이므로 위에서 인용한 pcap
API를 사용함을 알 수 있다
스크롤 바는 범위와 현재 위치값을 가지는데 다음 두 함수로 이 값들을 지정한다
BOOL SetScrollRange( HWND hWnd, int nBar, int nMinPos, int nMaxPos, BOOL bRedraw );
int SetScrollPos( HWND hWnd, int nBar, int nPos, BOOL bRedraw );
SetScrollRange 함수로 최대값(nMaxPos), 최소값(nMinPos)을 지정하되 첫번째 인수가 스크롤 바의 윈도우 핸들이다. 두번째 인수 nBar는 메인 윈도우에 부착된 스크롤 바 또는 별도의 스크롤 바 컨트롤을 지정하는데 이 값이 SBS_CTL이면 별도의 컨트롤을 지정한다.
SetScrollPos는 스크롤 바의 현재 위치를 세번째 인수 nPos로 지정한다.
다른 컨트롤들은 자신에게 변화가 있을 때 부모 윈도우로 WM_COMMAND통지 메시지를 보내는데 비해 스크롤 바는 WM_HSCROLL(수평일 경우), WM_VSCROLL(수직일 경우)이라는 별도의 메시지를 부모 윈도우로 보내며 추가 정보는 다음과 같다.
LOWORD(wParam)으로 전달되는 값은 사용자의 스크롤 요구사항을 나타내며 가능한 값의 종류는 다음과 같다.
다음 예제는 스크롤 바 세 개를 사용하여 R,G,B값을 입력받아 브러시를 만든 후 사각형을 그린다.
스태틱 컨트롤은 실행중에 부모 윈도우로 통지 메시지를 보낼 필요가 없기 때문에 ID를 -1로 지정해도 되며 여러 개의 스태택 컨트롤이 있을 경우에도 모두 -1의 같은 ID를 사용해도 상관없다.
TextOut로 출력한 문자열은 그냥 문자열일 뿐이므로 언제든지 지워질 수가 있고 그래서 WM_PAINT에서 계속 출력해주어야 한다. 반면 스태틱 컨트롤은 스스로 메시지를 처리할 수 있는 윈도우이기 때문에 일단 배치해 놓기만 하면 된다
컨트롤을 잘 다루기 위해서는 ①스타일 ②통지 메시지 ③부모 윈도우가 보내는 메시지 이 세가지에 대해서 잘 알아야 한다
'코스웨어 > 11년 내장형하드웨어' 카테고리의 다른 글
[내장형]이성재_20110929 일일보고서 (17) | 2011.09.29 |
---|---|
[내장형]김수만_110928 (16) | 2011.09.29 |
[내장형]이상만_110927 (14) | 2011.09.28 |
잠깐 내려 놓는 시간.. (7) | 2011.09.27 |
[내장형]공정우_2011.9.23 윈 API 보고서 (정우) (15) | 2011.09.24 |
[내장형]이영진_2011년 9월 22일 일일보고서 (11) | 2011.09.22 |
[내장형]백길남_2011년 9월 21일 수요일 보고서 (13) | 2011.09.21 |
[내장형]박춘우_2011년 9월 20일 화요일 Daily Report (26) | 2011.09.21 |