일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- arudino
- hacking
- pcap packet capture
- pwnable
- Windows Kernel Debug
- 윈도우 커널 드라이버
- vcruntime.dll
- Windows Kernel
- 윈도우 커널 디버깅
- 네트워크 바이트 오더
- 바이트 오더
- 개발 환경 준비
- 해킹
- Windows
- IAT Hooking
- Msvcrt.dll
- vcruntime140.dll
- ucrtbase.dll
- apphelp.dll
- 윈도우 커널
- 포너블
- 시스템해킹
- C언어 패킷캡쳐
- HackCTF
- windows kernel debugging
- Network Byte Order
- 개발하기
- packet capture
- pcap packet
- Windows Kernel Driver
- Today
- Total
미친해커
[C] Serial Monitor Step 7 - 데이터 전송, 수신 함수 만들기 본문
저번 포스팅에서 Baud Rate를 설정하는 함수를 작성해보았다. 그 외에도 많은 설정 값들이 존재하지만 설정하지 않고 기본 값들을 사용해도 큰 문제가 없기 때문에 다른 설정 값들은 맨 마지막에 다시한번 다루려고 한다. 우선 데이터를 전송 및 수신 하는 함수를 만들어보자. 사용되는 Windows API는 다음과 같다.
WriteFile function (fileapi.h) - Win32 apps
Writes data to the specified file or input/output (I/O) device.
docs.microsoft.com
ReadFile function (fileapi.h) - Win32 apps
Reads data from the specified file or input/output (I/O) device. Reads occur at the position specified by the file pointer if supported by the device.
docs.microsoft.com
이번 함수는 크게 다를 것이 없기 때문에 한번에 올리도록 하겠다.
DWORD SerialWrite(HANDLE hComm, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite)
{
DWORD NumberOfBytesWritten;
if (WriteFile(hComm, lpBuffer, nNumberOfBytesToWrite, &NumberOfBytesWritten, NULL) == FALSE)
{
return 0;
}
return NumberOfBytesWritten;
}
DWORD SerialRead(HANDLE hComm, LPVOID lpBuffer, DWORD nNumberOfBytesToRead)
{
DWORD NumberOfBytesRead;
if (ReadFile(hComm, lpBuffer, nNumberOfBytesToRead, &NumberOfBytesRead, NULL) == FALSE)
{
return 0;
}
return NumberOfBytesRead;
}
함수명을 짓는데 정말 매우 많은 고민을 했다... SendData나 RecvData로 하고 싶었지만 그럼 다른 라이브러리나 함수와 겹칠 것같아 며칠 고민하다 결정했다. 이렇게 WrtieFile과 ReadFile 함수를 사용한 시리얼 포트로의 데이터 전송 및 수신 함수를 만들어 보았다. 여기서 모르는 사람들을 위해 한가지 설명을 하자면 nNumberOfBytes.. 은 실제로 쓰고 읽을 데이터의 바이트 수를 말하며 NumberOFBytes... 지역변수는 실제로 쓰여지고 읽어들인 바이트의 수를 반환 받는 변수이다. 즉 이 함수들의 반환 값은 실제로 쓰고 읽은 바이트 수인 것이다.
'C > Serial Monitor' 카테고리의 다른 글
[C] Serial Monitor Step 8 - 전송받은 데이터 출력하기 (0) | 2022.01.01 |
---|---|
[C] Serial Monitor Step 6 - Baud Rate 설정하기 (0) | 2021.12.28 |
[C] Serial Monitor Step 5 - 시리얼 번호로 핸들 가져오기 (0) | 2021.12.28 |
[C] Serial Monitor Step 4.5 - CommTimeouts (0) | 2021.12.27 |
[C] Serial Monitor Step 4 - 데이터 쓰기 (0) | 2021.12.27 |