値 | 意味 |
EV_BREAK | ブレークを検出 |
EV_CTS | CTS信号が変化 |
EV_DSR | DSR信号が変化 |
EV_ERR | フレーミングエラー又はオーバーランエラー又はパリティエラーが発生 |
EV_RING | リンギングを検出した |
EV_RLSD | CD信号が変化した |
EV_RXCHAR | データを受信し、受信バッファに格納 |
EV_RXFLAG | DCB構造体のEvtCharに設定のデータを受信 |
EV_TXEMPTY | 送信バッファから最後のデータを送信 |
BOOL BuildCommDCB( LPCTSTR lpDef, // デバイス制御文字列へのポインタ LPDCB lpDCB // デバイス制御ブロックへのポインタ );ex)
BuildCommDCB("baud=38400 parity=N data=8 stop=1",&dcb);
BOOL BuildCommDCBAndTimeouts( LPCTSTR lpDef, // デバイス制御文字列へのポインタ LPDCB lpDCB, // デバイス制御ブロックへのポインタ LPCOMMTIMEOUTS lpCommTimeouts // COMMTIMEOUTS( 通信タイムアウト)構造体へのポインタ );|
BOOL ClearCommError( HANDLE hFile, // 通信デバイスのハンドル LPDWORD lpErrors, // エラーコードを受け取る変数へのポインタ LPCOMSTAT lpStat // 通信状態バッファへのポインタ );
BOOL CommConfigDialog( LPTSTR lpszName, // デバイス名の文字列へのポインタ HWND hWnd, // ウィンドウのハンドル LPCOMMCONFIG lpCC // COMMCONFIG( 通信構成)構造体へのポインタ );
HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // セキュリティ記述子 BOOL bManualReset, // リセットのタイプ BOOL bInitialState, // 初期状態 LPCTSTR lpName // イベントオブジェクトの名前 );
HANDLE CreateFile( LPCTSTR lpFileName, // ファイル名 DWORD dwDesiredAccess, // アクセスモード DWORD dwShareMode , // 共有モード LPSECURITY_ATTRIBUTES lpSecurityAttributes, // セキュリティ記述子 DWORD dwCreationDisposition, // 作成方法 DWORD dwFlagsAndAttributes, // ファイル属性 HANDLE hTemplateFile // テンプレートファイルのハンドル );
HANDLE m_hCommPort = ::CreateFile(szPortName, GENERIC_READ|GENERIC_WRITE,//access ( read and write) 0, //(share) 0:cannot share the COM port 0, //security (None) OPEN_EXISTING, // creation : open_existing FILE_FLAG_OVERLAPPED, // we want overlapped operation NULL // no templates file for COM port... );
HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // セキュリティ記述子 DWORD dwStackSize, // 初期のスタックサイズ LPTHREAD_START_ROUTINE lpStartAddress, // スレッドの機能 LPVOID lpParameter, // スレッドの引数 DWORD dwCreationFlags, // 作成オプション LPDWORD lpThreadId // スレッド識別子 );
BOOL EscapeCommFunction( HANDLE hFile, // 通信デバイスのハンドル DWORD dwFunc // 実行する拡張機能 );
Value | Meaning |
CLRBREAK 9 | Restores character transmission and places the transmission line in a nonbreak state. The CLRBREAK extended function code is identical to the ClearCommBreak function. |
CLRDTR 6 | Clears the DTR (data-terminal-ready) signal. |
CLRRTS 4 | Clears the RTS (request-to-send) signal. |
SETBREAK 8 | Suspends character transmission and places the transmission line in a break state until the ClearCommBreak function is called (or EscapeCommFunction is called with the CLRBREAK extended function code). The SETBREAK extended function code is identical to the SetCommBreak function. Note that this extended function does not flush data that has not been transmitted. |
SETDTR 5 | Sends the DTR (data-terminal-ready) signal. |
SETRTS 3 | Sends the RTS (request-to-send) signal. |
SETXOFF 1 | Causes transmission to act as if an XOFF character has been received. |
SETXON 2 | Causes transmission to act as if an XON character has been received. |
VOID ExitProcess( UINT uExitCode // すべてのスレッドに適用される終了コード );
VOID ExitThread( DWORD dwExitCode // このスレッドの終了コード );
BOOL GetCommConfig( HANDLE hCommDev, // 通信サービスのハンドル LPCOMMCONFIG lpCC, // COMMCONFIG( 通信構成)構造体へのポインタ LPDWORD lpdwSize // バッファサイズへのポインタ );
BOOL GetCommModemStatus( HANDLE hFile, // 通信デバイスのハンドル LPDWORD lpModemStat // 制御レジスタ値へのポインタ );
BOOL GetCommState( HANDLE hFile, // 通信デバイスのハンドル LPDCB lpDCB // DCB( デバイス制御ブロック)構造体へのポインタ );
BOOL GetCommTimeouts( HANDLE hFile, // 通信デバイスのハンドル LPCOMMTIMEOUTS lpCommTimeouts // COMMTIMEOUTS( 通信タイムアウト)構造体 // へのポインタ );
BOOL GetExitCodeThread( HANDLE hThread, // スレッドのハンドル LPDWORD lpExitCode // 終了ステータス );指定したスレッドが終了していない場合、STILL_ACTIVE が格納されます。
BOOL PurgeComm( HANDLE hFile, // 通信資源のハンドル DWORD dwFlags // 実行する操作 );
BOOL ReadFile( HANDLE hFile, // ファイルのハンドル LPVOID lpBuffer, // データバッファ DWORD nNumberOfBytesToRead, // 読み取り対象のバイト数 LPDWORD lpNumberOfBytesRead, // 読み取ったバイト数 LPOVERLAPPED lpOverlapped // オーバーラップ構造体のバッファ );
BOOL ReadFileEx( HANDLE hFile, // ファイルのハンドル LPVOID lpBuffer, // データバッファ DWORD nNumberOfBytesToRead, // 読み取り対象のバイト数 LPOVERLAPPED lpOverlapped, // オフセット LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine // 完了ルーチン );
BOOL SetCommBreak( HANDLE hFile // 通信デバイスのハンドル );
BOOL SetCommConfig( HANDLE hCommDev, // 通信デバイスのハンドル LPCOMMCONFIG lpCC, // COMMCONFIG( 通信構成)構造体へのポインタ DWORD dwSize // 構造体のサイズ );
BOOL SetCommState( HANDLE hFile, // 通信デバイスのハンドル LPDCB lpDCB // DCB( デバイス制御ブロック)構造体へのポインタ );
BOOL SetCommTimeouts( HANDLE hFile, // 通信デバイスのハンドル LPCOMMTIMEOUTS lpCommTimeouts // COMMTIMEOUTS( 通信タイムアウト)構造体 // へのポインタ ); [[COMMTIMEOUTS>#COMMTIMEOUTS]]
BOOL SetupComm( HANDLE hFile, // 通信デバイスのハンドル DWORD dwInQueue, // 入力バッファのサイズ DWORD dwOutQueue // 出力バッファのサイズ );
BOOL TransmitCommChar( HANDLE hFile, // 通信デバイスのハンドル char cChar // 送信する文字 );
BOOL WaitCommEvent( HANDLE hFile, // 通信デバイスのハンドル LPDWORD lpEvtMask, // イベントを受け取る変数へのポインタ LPOVERLAPPED lpOverlapped, // OVERLAPPED 構造体へのポインタ );
DWORD WaitForMultipleObjects( DWORD nCount, // 配列内のハンドルの数 CONST HANDLE *lpHandles, // オブジェクトハンドルからなる配列 BOOL fWaitAll, // 待機オプション DWORD dwMilliseconds // タイムアウト時間 );
BOOL WriteFile( HANDLE hFile, // ファイルのハンドル LPCVOID lpBuffer, // データバッファ DWORD nNumberOfBytesToWrite, // 書き込み対象のバイト数 LPDWORD lpNumberOfBytesWritten, // 書き込んだバイト数 LPOVERLAPPED lpOverlapped // オーバーラップ構造体のバッファ );
typedef struct _COMMPROP { WORD wPacketLength;// 構造体サイズ WORD wPacketVersion;// 構造体バージョン DWORD dwServiceMask;//プロバイダーからのサービス DWORD dwReserved1;//予約 使用禁止 DWORD dwMaxTxQueue;//最大送信バッファーサイズ(バイト) DWORD dwMaxRxQueue;//最大受信バッファーサイズ(バイト) DWORD dwMaxBaud;//最大通信速度 DWORD dwProvSubType;//通信方式 DWORD dwProvCapabilities;//通信可能な通信方式 DWORD dwSettableParams;//設定可能パラメータ DWORD dwSettableBaud;//設定可能最大通信速度 WORD wSettableData;//設定可能なデータサイズ WORD wSettableStopParity;//設定可能なストップビット&パリティも種類 DWORD dwCurrentTxQueue;//ドライバーの内部送信バッファーサイズ(バイト) DWORD dwCurrentRxQueue;//ドライバーの内部受信バッファーサイズ(バイト) DWORD dwProvSpec1;//プロバイダー用 DWORD dwProvSpec2;//プロバイダー用 WCHAR wcProvChar[1];//プロバイダー用 } COMMPROP;
typedef struct _COMMTIMEOUTS { DWORD ReadIntervalTimeout;//文字読込時、1文字あたりのタイムアウトまでの待ち時間(msec) DWORD ReadTotalTimeoutMultiplier;//トータル文字読み込み時間計算に使用される1文字あたりの待ち時間(msec) DWORD ReadTotalTimeoutConstant;//トータル文字読み込み時間計算に使用される待ち時間(msec)~~受信トータルタイムアウト(msec) = ReadTotalTimeoutMultiplier * (受信予定バイト数) +ReadTotalTimeoutConstant DWORD WriteTotalTimeoutMultiplier;//トータル文字書き込み時間計算に使用される1文字あたりの待ち時間 DWORD WriteTotalTimeoutConstant;//トータル文字書込み時間計算に使用される待ち時間(msec)~~送信トータルタイムアウト(msec) = ReadTotalTimeoutMultiplier * (送信予定バイト数) +ReadTotalTimeoutConstant } COMMTIMEOUTS;
typedef struct _COMSTAT { DWORD fCtsHold :1;//CTS入力信号検出 TRUE→CTS 信号active検出により送信待機中 DWORD fDsrHold :1;//DSR入力信号検出 TRUE→DSR 信号active検出により送信待機中 DWORD fRlsdHold :1;//RLSD入力信号検出 TRUE→RLSD信号active検出により送信待機中 DWORD fXoffHold :1;//Xoff入力信号検出 TRUE→Xoff信号検出済により送信待機中 DWORD fXoffSent :1;//Xoff信号送信 TRUE→Xoff信号送信済み DWORD fEof :1;//EOF信号送信 TRUE→EOF 信号送信済み DWORD fTxim :1;//送信待ち TRUE→送信待ちデータ有 DWORD fReserved :25;//予約済み 使用禁止 DWORD cbInQue; //受信バッファー内にある読まれていないデータ数(バイト) DWORD cbOutQue; //送信バッファー内にある送信されていないデータ数(バイト) } COMSTAT;
typedef struct _DCB { DWORD DCBlength;//構造体のサイズ DWORD BaudRate;//通信速度 DWORD fBinary :1;//バイナリーモード有効/無効 DWORD fParity :1;//パリティチェック 有(報告付)/無 DWORD fOutxCtsFlow :1;//CTS入力信号監視 有効/無効→ハードウェアCTSフロー制御の有無 DWORD fOutxDsrFlow :1;//DSR入力信号監視 有効/無効→ハードウェアDSRフロー制御の有無 DWORD fDtrControl :2;//DTR制御方式の指定 DWORD fDsrSensitivity :1;//DSRの状態に対する感度設定 DWORD fTXContinueOnXoff :1;//通信相手の受信バッファーがFULL状態でXoffCharが送られてきた時の送信継続/中止設定(ソフトウェアフロー制御時) DWORD fOutX :1;// 送信のソフトウェアフロー制御設定 有効/無効 DWORD fInX :1;// 受信のソフトウェアフロー制御設定 有効/無効 DWORD fErrorChar :1;//パリティエラー検出時ErrorCharと置換するか否かの設定 DWORD fNull :1;//NULL(0x00)を受信した時破棄するか否かの設定 DWORD fRtsControl :2; //RTS出力信号制御 有/無 及び 制御方式設定 DWORD fAbortOnError :1;//エラー発生時の送受信 停止/継続設定 DWORD fDummy2 :17;//予約済 使用禁止 WORD wReserved;// 予約済 0に設定のこと WORD XonLim;//Xon文字を送って受信を再開する最小入力バッファー容量(バイト数) WORD XoffLim;//Xoff文字を送って受信を停止する最大の入力バッファー容量(バイト数) BYTE ByteSize;//送受信するデータのビット数 BYTE Parity;//送受信するデータに対して、パリティの有無、種類の設定 BYTE StopBits;//送受信するデータのストップビットの数 char XonChar;//ソフトウェア制御時のXon文字設定 char XoffChar;//ソフトウェア制御時のXoff文字設定 char ErrorChar;//パリティエラー発生時エラー文字と置換される文字の設定 char EofChar;//データ信号の前にヘッダーとして最初につけられる文字の指定 char EvtChar;//イベント用としてもちいられる文字の指定 WORD wReserved1;//予約済 使用禁止 } DCB;
typedef struct modemdevcaps_tag { DWORD dwActualSize; DWORD dwRequiredSize; DWORD dwDevSpecificOffset; DWORD dwDevSpecificSize; DWORD dwModemProviderVersion; DWORD dwModemManufacturerOffset; DWORD dwModemManufacturerSize; DWORD dwModemModelOffset; DWORD dwModemModelSize; DWORD dwModemVersionOffset; DWORD dwModemVersionSize; DWORD dwDialOptions; DWORD dwCallSetupFailTimer; DWORD dwInactivityTimeout; DWORD dwSpeakerVolume; DWORD dwSpeakerMode; DWORD dwModemOptions; DWORD dwMaxDTERate; DWORD dwMaxDCERate; BYTE abVariablePortion[1]; } MODEMDEVCAPS;
typedef struct modemsettings_tag { DWORD dwActualSize; DWORD dwRequiredSize; DWORD dwDevSpecificOffset; DWORD dwDevSpecificSize; DWORD dwCallSetupFailTimer; DWORD dwInactivityTimeout; DWORD dwSpeakerVolume; DWORD dwSpeakerMode; DWORD dwPreferredModemOptions; DWORD dwNegotiatedModemOptions; DWORD dwNegotiatedDCERate; BYTE abVariablePortion[1]; } MODEMSETTINGS;
typedef struct _COMM_CONFIG { DWORD dwSize; WORD wVersion; WORD wReserved; DCB dcb; DWORD dwProviderSubType; DWORD dwProviderOffset; DWORD dwProviderSize; WCHAR wcProviderData[1]; } COMMCONFIG;