반응형
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
- ucrtbase.dll
- vcruntime.dll
- IAT Hooking
- Windows Kernel Debug
- 윈도우 커널 디버깅
- 개발하기
- 포너블
- pwnable
- apphelp.dll
- pcap packet
- packet capture
- Network Byte Order
- 바이트 오더
- 해킹
- Windows
- 시스템해킹
- Windows Kernel Driver
- pcap packet capture
- 네트워크 바이트 오더
- arudino
- HackCTF
- windows kernel debugging
- 윈도우 커널
- 개발 환경 준비
- 윈도우 커널 드라이버
- C언어 패킷캡쳐
- Msvcrt.dll
- Windows Kernel
- hacking
- vcruntime140.dll
Archives
- Today
- Total
미친해커
[C] Serial Monitor Step 4 - 데이터 쓰기 본문
반응형
데이터 쓰기까지 끝난다면 이제 확실하게 간단한 모듈을 만들 준비는 끝난다. 테스트를 위해 아두이노의 코드를 다음과 같이 변경했다.
void setup()
{
Serial.begin(115200);
}
void loop()
{
if (Serial.available())
{
char name[16] = { 0, };
Serial.readBytesUntil(0x00, name, 16);
char buffer[32] = { 0, };
sprintf(buffer, "Hello %s!", name);
Serial.println(buffer);
}
}
시리얼 포트로부터 아두이노가 메시지를 받고 그 앞에 Hello를 붙여서 PC로 전송해주는 코드이다. 이렇게 PC와 아두이노가 정상적으로 통신하는지를 확인할 수 있게된다. 이제 Windows에서 데이터를 전송하고 받는 코드를 작성해보자
#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);
while (TRUE)
{
char buffer[32] = { 0, };
printf("PC : ");
scanf("%s", buffer);
if (WriteFile(hComm, buffer, strlen(buffer), NULL, NULL) == FALSE)
continue;
DWORD NumberOfBytesRead;
while (TRUE)
{
ReadFile(hComm, buffer, 32, &NumberOfBytesRead, NULL);
if (NumberOfBytesRead != 0)
{
printf("%s", buffer);
break;
}
}
}
CloseHandle(hComm);
}
위 코드는 PC에서 입력을 받아 아두이노로 보내고 아두이노에서 데이터를 출력해주고 다시 입력을 받는 과정을 반복한다. 위 코드들을 이용해 서로 통신하면 다음과 같은 장면을 볼수 있다.
위 이미지 처럼 아두이노와 PC가 시리얼 포트를 이용해 통신하는 장면을 볼수 있다. 이렇게 시리얼 포트를 이용해 데이터 쓰기까지 끝 마쳤다. 여기까지 배운 함수들과 방법을 이용해 간단한 모듈을 만들어 나만의 시리얼 모니터를 만들어봐야겠다.
반응형
'C > Serial Monitor' 카테고리의 다른 글
[C] Serial Monitor Step 5 - 시리얼 번호로 핸들 가져오기 (0) | 2021.12.28 |
---|---|
[C] Serial Monitor Step 4.5 - CommTimeouts (0) | 2021.12.27 |
[C] Serial Monitor Step 3 - 데이터 읽기 (0) | 2021.12.27 |
[C] Serial Monitor Step 2 - Baud Rate 설정 (0) | 2021.12.26 |
[C] Serial Monitor Step 1 - 통신수단을 알아보자 (0) | 2021.12.26 |
Comments