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 How to Build FFMpeg for LAVFilters file lizard2019 2019.06.05 1449
83 How to FFMpeg Windows Build with msys 1.0 and MinGW_64 file lizard2019 2019.06.05 2209
82 Iconv 사용법 소스 digipine 2017.11.01 1262
81 IPv6 프로그래밍 가이드 digipine 2017.11.02 1350
80 JDK Install ubuntu digipine 2017.11.02 355
79 Let's Encrypt SSL 인증서 자동 갱신 설정 방법 digipine 2020.09.03 743
78 LibVLC 미디어 재생기 프로그래밍 방법 C++, QT 엉뚱도마뱀 2018.04.20 2504
77 Linux /dev/random vs /dev/urandom 삽질 후기 엉뚱도마뱀 2017.11.22 957
76 Linux init.d 에서 등록하기. 부팅 시 자동실행 설정 digipine 2017.11.03 12633
75 Linux Kernel 컴파일 및 Patch 방법 digipine 2017.11.02 1099
74 Linux(리눅스) 파일 시스템 정리 (ext, ext2, ext3, ext4) digipine 2017.10.29 1109
73 Linux/OSX bash에서 source 명령어 lizard2019 2019.01.07 779
72 Mac Address 를 String 으로 변환하는 간편한 방법 digipine 2017.11.02 437
71 MAC Screen Sharing을 위한 VNC 접속을 위한 Port 변경 방법 digipine 2022.09.05 383
70 MacOS 10.12.2 (OSX) KERNEL DEBUGGING file digipine 2017.11.02 1471
69 MacOS 10.12.2 (OSX) 보안 취약점 공격 기초 digipine 2017.11.02 663
68 MacOS 10.12.2 (OSX) 보안 취약점 공격 코드 digipine 2017.11.02 606
67 MacOS 10.12.2 (OSX) 보안 취약점 공격 코드 2 file digipine 2017.11.02 1556
66 MongoDB 설치 및 C 개발 도구 설정 1 digipine 2020.09.03 449
65 mongoose 3.8 싱글 파일 소스 코드 file digipine 2020.09.01 335
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6