logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

WIN CE C++ 시리얼 제어 방법

by digipine posted Oct 28, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

일반적인 시리얼포트 제어 방법은..

 

1. 포트를 생성하고..

HANDLE  hPort = CreateFile (lpszPortName,

                      GENERIC_WRITE,
                      0,

                      NULL,
                      OPEN_EXISTING,
                      0, 

                      NULL); 

 

2. 포트를 설정하고..

DCB PortDCB;

PortDCB.DCBlength = sizeof (DCB);

GetCommState (hPort, &PortDCB);

PortDCB.BaudRate = 9600;

PortDCB.fBinary = TRUE;
PortDCB.fParity = TRUE; 
PortDCB.fOutxCtsFlow = FALSE; 
PortDCB.fOutxDsrFlow = FALSE; 
PortDCB.fDtrControl = DTR_CONTROL_ENABLE;
PortDCB.fDsrSensitivity = FALSE;
PortDCB.fTXContinueOnXoff = TRUE;
PortDCB.fOutX = FALSE;               
PortDCB.fInX = FALSE;                
PortDCB.fErrorChar = FALSE;  
PortDCB.fNull = FALSE;            
PortDCB.fRtsControl = RTS_CONTROL_ENABLE;
PortDCB.fAbortOnError = FALSE;
PortDCB.ByteSize = 8;                
PortDCB.Parity = NOPARITY;   
PortDCB.StopBits = ONESTOPBIT;

 

if (!SetCommState (hPort, &PortDCB))
{
  dwError = GetLastError ();
  MessageBox (hMainWnd, TEXT("Unable to configure the serial port"),
              TEXT("Error"), MB_OK);
  return FALSE;
}

3. 타임아웃 설정하고..

COMMTIMEOUTS CommTimeouts;
GetCommTimeouts (hPort, &CommTimeouts);

CommTimeouts.ReadIntervalTimeout = MAXDWORD; 
CommTimeouts.ReadTotalTimeoutMultiplier = 0; 
CommTimeouts.ReadTotalTimeoutConstant = 0;   
CommTimeouts.WriteTotalTimeoutMultiplier = 10; 
CommTimeouts.WriteTotalTimeoutConstant = 1000;   

 

if (!SetCommTimeouts (hPort, &CommTimeouts))
{
  // Could not set the timeout parameters.
  MessageBox (hMainWnd, TEXT("Unable to set the timeout parameters"),
              TEXT("Error"), MB_OK);
  dwError = GetLastError ();
  return FALSE;
}

4. 포트에 제어 문자 출력

DWORD dwError,
      dwNumBytesWritten;

WriteFile (hPort,     &Byte,    1,    &dwNumBytesWritten,    NULL );

5. 포트 닫으면 끝

CloseHandle(hPort);

TAG •

List of Articles
No. Subject Author Date Views
84 LibVLC 미디어 재생기 프로그래밍 방법 C++, QT 엉뚱도마뱀 2018.04.20 2504
83 CMM / CMMI 란 무엇인가? digipine 2017.10.28 2467
82 [ubuntu, 우분투] sendmail 설치 digipine 2017.11.02 2317
81 Ubuntu Server OS 한국어 모드로 설치 후 서버 콘솔에서 한글 깨짐 해결 방법 digipine 2017.10.31 2248
80 How to FFMpeg Windows Build with msys 1.0 and MinGW_64 file lizard2019 2019.06.05 2209
79 C/C++ struct 패딩(padding) 원리 이해 lizard2019 2019.03.04 2150
78 Git Http Backend Upload Size 설정 - Http 500 Error 해결 digipine 2017.11.02 2074
77 XOR Encryption : 단순하면서도 강력한 암호/복호화 기법 digipine 2017.11.02 1737
76 대칭키 암호화관련 개념 정리 digipine 2017.11.09 1642
75 우분투 Nabi 한글 입력기 Tray(트레이) 상단 메뉴바로 옮기기 digipine 2017.11.03 1630
74 리눅스 /dev/random을 이용한 랜덤값 생성 엉뚱도마뱀 2017.11.22 1556
73 MacOS 10.12.2 (OSX) 보안 취약점 공격 코드 2 file digipine 2017.11.02 1556
72 Ubuntu 16 에 mysql 5.7 설치 및 원격 설정 file digipine 2017.11.08 1484
71 MacOS 10.12.2 (OSX) KERNEL DEBUGGING file digipine 2017.11.02 1471
70 [Qt] QSettings 클래스의 설명과 사용법, 설정 저장위치 digipine 2017.11.02 1470
69 How to Build FFMpeg for LAVFilters file lizard2019 2019.06.05 1449
68 Ubuntu 16 에 JAVA 1.7.0 jdk 설치 하기 digipine 2017.11.07 1417
67 Docker에서 Phabricator 최신버전 설치 및 버전 확인 방법 file lizard2019 2021.04.15 1403
66 IPv6 프로그래밍 가이드 digipine 2017.11.02 1350
65 윈도우즈 도스 커멘드(Command) 네트워크 관련 명령어 lizard2019 2019.02.07 1342
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6