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
113 TCP/IP State Transition - TCP 스택 포팅 시 참조 file digipine 2017.11.02 197207
112 언어 IDE 별로 git ignore 파일을 자동으로 만들어 주는 사이트 엉뚱도마뱀 2018.12.17 126218
111 What is Android Repo? and Manual, Download file digipine 2017.11.02 100833
110 [Linux] ubuntu 16.04에 QT Creator 설치하기 digipine 2017.11.02 24892
109 [Swift, MacOS] 맥 한글 파일명이 윈도우에서 자소 분리되는 현상 해결, NFD, NFC 엉뚱도마뱀 2018.12.11 20547
108 Linux init.d 에서 등록하기. 부팅 시 자동실행 설정 digipine 2017.11.03 13487
107 FFT (Fast Fourier Transform) 고속 푸리에 변환 예제 소스 digipine 2017.10.29 12844
106 Photoshop CC 2018 한글 영문 변환 언어팩, 포토샵 언어변경 file 엉뚱도마뱀 2018.07.04 8867
105 Phabricator 설치 가이드 우분투 16.04 기준 digipine 2017.11.02 6776
104 ATmega8 MCU 간의 TWI 기능을 이용한 I2C 통신 digipine 2017.11.02 6512
103 WinPCap과 Ethereal, Wireshark 을 이용한 스니핑(Sniffing) digipine 2017.10.29 5821
102 난수발생기 개론 엉뚱도마뱀 2017.11.22 4792
101 공짜 무료 C/C++ 컴파일러들 file digipine 2017.10.28 4675
100 비밀번호 해쉬에 Salt(소금) 첨가하기 file 엉뚱도마뱀 2017.11.23 4674
99 [iOS] Bluetooth로 App을 백그라운드 모드로 실행는 방법 lizard2019 2020.02.11 3958
98 [Linux, OSX] pfctl - Packet FIlter Control 사용법 digipine 2017.11.02 3820
97 OpenAL 사용법 정리 1 digipine 2017.11.01 3736
96 WIN CE, GPS - NMEA protocol - GPS Virtual Driver digipine 2017.10.28 3314
95 Xcode 없이 맥에 '명령어 라인 도구(Command Line Tools)'를 설치하는 방법 엉뚱도마뱀 2018.12.26 3281
94 LibVLC 미디어 재생기 프로그래밍 방법 C++, QT 엉뚱도마뱀 2018.04.20 2927
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6