반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Windows Kernel Debug
- 윈도우 커널 디버깅
- 포너블
- 윈도우 커널 드라이버
- packet capture
- 시스템해킹
- Msvcrt.dll
- 개발 환경 준비
- Windows Kernel Driver
- 윈도우 커널
- apphelp.dll
- IAT Hooking
- pcap packet capture
- ucrtbase.dll
- hacking
- Windows
- Windows Kernel
- pcap packet
- 해킹
- 네트워크 바이트 오더
- vcruntime140.dll
- 개발하기
- HackCTF
- vcruntime.dll
- 바이트 오더
- arudino
- C언어 패킷캡쳐
- Network Byte Order
- pwnable
- windows kernel debugging
Archives
- Today
- Total
미친해커
[C] Serial Monitor Step 2 - Baud Rate 설정 본문
반응형
저번에는 통신수단 Handle을 얻는 방법을 알게되었다. 시리얼 포트로 통신하는 거라면 Baud Rate를 설정해줘야 한다. 왜냐하면 통신하는 아두이노의 Baud Rate와 PC의 Baud Rate가 일치하지 않으면 제대로 통신이 이루어지지 않는다. 이번에도 열심히 구글 검색을 한 결과 2가지 함수를 알게 되었다. 그리고 이 글을 쓰는 지금 여자친구와 헤어졌습니다.
Baud Rate를 설정하기 위해서는 DCB 구조체를 사용해야한다. MSDN에서는 이 구조체를 다음과 같이 정의하고 있다.
직렬 통신 장치에 대한 제어 설정을 정의합니다.
라고 정의되어 있다. 시리얼 포트 디바이스(직렬 통신 장치)와 통신하기 위해 필요한 설정들을 위 구조체를 이용해 설정한다. 우리는 기본적으로 설정되어 있는 값들을 가져온 다음 Baud Rate만 설정할 수 있으면 된다. 그러기 위해 사용하는 함수는 다음과 같다.
#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[])
{
HANDLE hComm = CreateFileA("\\\\.\\COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hComm == INVALID_HANDLE_VALUE)
{
printf("CreateFileA Failed\n");
printf("GetLastError : %d\n", GetLastError());
return -1;
}
DCB state = { 0, };
GetCommState(hComm, &state);
state.BaudRate = 115200;
SetCommState(hComm, &state);
CloseHandle(hComm);
}
CreateFile 함수를 이용해 시리얼 포트 디바이스에대한 Handle을 얻었다면 GetCommState 함수를 이용해 현재 시리얼 포트 디바이스에대한 기본적은 설정들을 가져온다. 그후 Baud Rate를 원하는 값으로 설정한다. 그리고 SetCommState 함수를 이용해 변경된 설정을 적용해주면 Baud Rate가 변경된다.
이렇게 Baud Rate 설정까지 알았으니 이제 데이터를 읽고 쓰는 방법만 알게된다면 간단한 모듈을 만들 준비는 끝난다.
반응형
'C > Serial Monitor' 카테고리의 다른 글
[C] Serial Monitor Step 4.5 - CommTimeouts (0) | 2021.12.27 |
---|---|
[C] Serial Monitor Step 4 - 데이터 쓰기 (0) | 2021.12.27 |
[C] Serial Monitor Step 3 - 데이터 읽기 (0) | 2021.12.27 |
[C] Serial Monitor Step 1 - 통신수단을 알아보자 (0) | 2021.12.26 |
[C] Serial Monitor Step 0 - 자작 Serial Monitor 모듈 만들기 (0) | 2021.12.26 |
Comments