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
25 How to FFMpeg Windows Build with msys 1.0 and MinGW_64 file lizard2019 2019.06.05 2222
24 Ubuntu Server OS 한국어 모드로 설치 후 서버 콘솔에서 한글 깨짐 해결 방법 digipine 2017.10.31 2256
23 [ubuntu, 우분투] sendmail 설치 digipine 2017.11.02 2318
22 CMM / CMMI 란 무엇인가? digipine 2017.10.28 2473
21 LibVLC 미디어 재생기 프로그래밍 방법 C++, QT 엉뚱도마뱀 2018.04.20 2510
20 초고속망 통신사 DNS 서버 주소 모음 - DNS 설정 digipine 2017.11.03 2638
19 WIN CE, GPS - NMEA protocol - GPS Virtual Driver digipine 2017.10.28 2846
18 Xcode 없이 맥에 '명령어 라인 도구(Command Line Tools)'를 설치하는 방법 엉뚱도마뱀 2018.12.26 2866
17 [Linux, OSX] pfctl - Packet FIlter Control 사용법 digipine 2017.11.02 3200
16 OpenAL 사용법 정리 1 digipine 2017.11.01 3404
15 [iOS] Bluetooth로 App을 백그라운드 모드로 실행는 방법 lizard2019 2020.02.11 3540
14 비밀번호 해쉬에 Salt(소금) 첨가하기 file 엉뚱도마뱀 2017.11.23 4284
13 난수발생기 개론 엉뚱도마뱀 2017.11.22 4332
12 공짜 무료 C/C++ 컴파일러들 file digipine 2017.10.28 4383
11 WinPCap과 Ethereal, Wireshark 을 이용한 스니핑(Sniffing) digipine 2017.10.29 5432
10 ATmega8 MCU 간의 TWI 기능을 이용한 I2C 통신 digipine 2017.11.02 6009
9 Phabricator 설치 가이드 우분투 16.04 기준 digipine 2017.11.02 6196
8 Photoshop CC 2018 한글 영문 변환 언어팩, 포토샵 언어변경 file 엉뚱도마뱀 2018.07.04 8535
7 FFT (Fast Fourier Transform) 고속 푸리에 변환 예제 소스 digipine 2017.10.29 12559
6 Linux init.d 에서 등록하기. 부팅 시 자동실행 설정 digipine 2017.11.03 12697
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6