미친해커

[C] Serial Monitor Step 6 - Baud Rate 설정하기 본문

C/Serial Monitor

[C] Serial Monitor Step 6 - Baud Rate 설정하기

미친해커 2021. 12. 28. 19:38
반응형

이전 포트팅에서 정의한 함수를 분석해봤다면 기본적으로 Baud Rate가 115200으로 설정되는 것을 알수 있을 것이다. 하지만 다른 Baud Rate를 사용해야 할 일이 생길수도 있기 때문에 이번에는 Baud Rate를 원하는 값으로 설정하는 함수를 만들어보기로 한다. 이번에 사용되는 Windows API와 구조체는 다음과 같다.

 

GetCommState function (winbase.h) - Win32 apps

Retrieves the current control settings for a specified communications device.

docs.microsoft.com

 

SetCommState function (winbase.h) - Win32 apps

Configures a communications device according to the specifications in a device-control block (a DCB structure). The function reinitializes all hardware and control settings, but it does not empty output or input queues.

docs.microsoft.com

 

DCB (winbase.h) - Win32 apps

Defines the control setting for a serial communications device.

docs.microsoft.com

이번에는 간단하게 기본적으로 설정되어 있는 설정 값들을 불러온 다음 Baud Rate만 수정해 다시 적용하는 함수를 정의할 것이다.

BOOL SetBaudRate(HANDLE hComm, DWORD BaudRate)
{
    DCB state;

    if (GetCommState(hComm, &state) == FALSE)
    {
        return FALSE;
    }

    state.BaudRate = BaudRate;

    if (SetCommState(hComm, &state) == FALSE)
    {
        return FALSE;
    }

    return TRUE;
}

 

 

이번 함수는 그렇게 많은 기능을 수행하지 않기때문에 생각 보다 짧다. 그리고 개인적으로 BaudRate의 인자 값은 왼쪽 그림과 같이 Windows.h 헤더를 추가하였다면 이렇게 정의되어 있다. 이론적으로는 256000까지 된다고는 하지만 실제로는 115200이 최대라고 어디선가 본적이 있는 것같다. 그리고 될수 있다면 왼쪽에 정의되어 있는 값으로 설정하기를 추천한다.

반응형
Comments