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
17 [Linux] ubuntu 16.04에 QT Creator 설치하기 digipine 2017.11.02 24347
16 Phabricator 설치 가이드 우분투 16.04 기준 digipine 2017.11.02 6193
15 Wi-Fi Display Standard Miracast Protocol Log digipine 2017.11.02 850
14 Git Http Backend Upload Size 설정 - Http 500 Error 해결 digipine 2017.11.02 2074
13 [Linux, OSX] pfctl - Packet FIlter Control 사용법 digipine 2017.11.02 3189
12 TCP/IP State Transition - TCP 스택 포팅 시 참조 file digipine 2017.11.02 195239
11 Phabricator 설치 가이드 우분투 12.04 기준 digipine 2017.11.02 1229
10 ATmega8 MCU 간의 TWI 기능을 이용한 I2C 통신 digipine 2017.11.02 5998
9 Mac Address 를 String 으로 변환하는 간편한 방법 digipine 2017.11.02 437
8 Wi-Fi display (miracast) FFMpeg MpegTs Supported digipine 2017.11.02 1303
7 Iconv 사용법 소스 digipine 2017.11.01 1262
6 QCAD 1.1 한국 최초의 2D CAD 소프트웨어 file digipine 2017.11.01 831
5 WinPCap과 Ethereal, Wireshark 을 이용한 스니핑(Sniffing) digipine 2017.10.29 5428
4 NMEA-0183을 이용한 GPS 애플리케이션 제작 digipine 2017.10.28 446
3 WIN CE, GPS - NMEA protocol - GPS Virtual Driver digipine 2017.10.28 2830
» WIN CE C++ 시리얼 제어 방법 digipine 2017.10.28 631
1 CMM / CMMI 란 무엇인가? digipine 2017.10.28 2467
Board Pagination Prev 1 2 Next
/ 2