CreateFile()で開きます。
BOOL GetCommState( HANDLE hFile, // 通信デバイスのハンドル LPDCB lpDCB // DCB(デバイス制御ブロック)構造体へのポインタ );GetCommState 関数 | MSDN
BOOL SetCommState( HANDLE hFile, // 通信デバイスのハンドル LPDCB lpDCB // DCB(デバイス制御ブロック)構造体へのポインタ );SetCommState 関数 | MSDN
typedef struct _DCB { DWORD DCBlength; DWORD BaudRate; DWORD fBinary :1; DWORD fParity :1; DWORD fOutxCtsFlow :1; DWORD fOutxDsrFlow :1; DWORD fDtrControl :2; DWORD fDsrSensitivity :1; DWORD fTXContinueOnXoff :1; DWORD fOutX :1; DWORD fInX :1; DWORD fErrorChar :1; DWORD fNull :1; DWORD fRtsControl :2; DWORD fAbortOnError :1; DWORD fDummy2 :17; WORD wReserved; WORD XonLim; WORD XoffLim; BYTE ByteSize; BYTE Parity; BYTE StopBits; char XonChar; char XoffChar; char ErrorChar; char EofChar; char EvtChar; WORD wReserved1; } DCB, *LPDCB;DCB structure (Windows) | MSDN
BOOL SetCommTimeouts( HANDLE hFile, // 通信デバイスのハンドル LPCOMMTIMEOUTS lpCommTimeouts // COMMTIMEOUTS( 通信タイムアウト)構造体へのポインタ );SetCommTimeouts 関数 | MSDN
typedef struct _COMMTIMEOUTS { DWORD ReadIntervalTimeout; DWORD ReadTotalTimeoutMultiplier; DWORD ReadTotalTimeoutConstant; DWORD WriteTotalTimeoutMultiplier; DWORD WriteTotalTimeoutConstant; } COMMTIMEOUTS, *LPCOMMTIMEOUTS;COMMTIMEOUTS structure (Windows) | MSDN
BOOL WriteFile( HANDLE hFile, // ファイルのハンドル LPCVOID lpBuffer, // データバッファ DWORD nNumberOfBytesToWrite, // 書き込み対象のバイト数 LPDWORD lpNumberOfBytesWritten, // 書き込んだバイト数 LPOVERLAPPED lpOverlapped // オーバーラップ構造体のバッファ );WriteFile 関数 | MSDN
BOOL ReadFile( HANDLE hFile, // ファイルのハンドル LPVOID lpBuffer, // データバッファ DWORD nNumberOfBytesToRead, // 読み取り対象のバイト数 LPDWORD lpNumberOfBytesRead, // 読み取ったバイト数 LPOVERLAPPED lpOverlapped // オーバーラップ構造体のバッファ );ReadFile 関数 | MSDN
BOOL CloseHandle(
HANDLE hObject // オブジェクトのハンドル
);
CloseHandle 関数 | MSDN
HANDLE hComm; // ファイルのハンドラ // ポートのオープン hComm = CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if( hComm == INVALID_HANDLE_VALUE ) return; // 通信条件の設定 DCB lpDCB; if( !GetCommState( hComm, &lpDCB ) ) return; lpDCB.BaudRate = 115200; // 転送速度の指定 (115200bps) lpDCB.ByteSize = 8; // ビット長の指定 (8bit) lpDCB.Parity = NOPARITY; // パリティ方式 (パリティなし) lpDCB.StopBits = ONESTOPBIT; // ストップビット数の指定 (1bit) lpDCB.fOutxCtsFlow = 0; // 以下 フロー制御 lpDCB.fOutxDsrFlow = 0; lpDCB.fDtrControl = 0; lpDCB.fOutX = 0; lpDCB.fInX = 0; lpDCB.fRtsControl = 0; if( !SetCommState( hComm, &lpDCB ) ) return; // タイムアウトの設定 COMMTIMEOUTS lpCommTimeouts; lpCommTimeouts.ReadIntervalTimeout = 500; // 全文字の読み込み時間 lpCommTimeouts.ReadTotalTimeoutMultiplier = 0; // 読み込みの1文字あたりの待ち時間 lpCommTimeouts.ReadTotalTimeoutConstant = 500; // 読み込みエラー検出用のタイムアウト時間 lpCommTimeouts.WriteTotalTimeoutMultiplier = 0; // 書き込みの1文字あたりの待ち時間 lpCommTimeouts.WriteTotalTimeoutConstant = 0; // 書き込みエラー検出用のタイムアウト時間 if( !SetCommTimeouts( hComm, &lpCommTimeouts ) ) return;