■ シリアル通信関係
     Win32API 関数&構造体一覧
                                           

                 (MSDN抜粋 他     使用プログラム例)                                                                     

  (1) 関数


関数名

引数
BuildCommDCB

指定したDCB構造体に、デバイス制御文字列で指定した値を格納します。デバイス制御文字列には、modeコマンドの構文を使います。

BOOL BuildCommDCB(
  LPCTSTR lpDef,  // デバイス制御文字列へのポインタ
  LPDCB lpDCB     // デバイス制御ブロックへのポインタ
);
BuildCommDCBAndTimeouts

デバイス定義文字列をデバイス制御ブロックコードに変換した後、デバイス制御ブロックに格納します。デバイスのタイムアウト値の設定やタイムアウトの解除も可能です。タイムアウト値の設定に関する動作は、デバイス定義文字列の内容によって異なります。

BOOL BuildCommDCBAndTimeouts(
  LPCTSTR lpDef,                  // デバイス制御文字列へのポインタ
  LPDCB lpDCB,                    // デバイス制御ブロックへのポインタ
  LPCOMMTIMEOUTS  lpCommTimeouts  // COMMTIMEOUTS( 通信タイムアウト)構造体
                                        // へのポインタ
);
ClearCommBreak

指定した通信デバイスの回線切断状態を解除し、文字送信を再開します。

BOOL ClearCommBreak(
  HANDLE hFile   // 通信デバイスのハンドル
);
ClearCommError

通信エラーの情報を取得して、通信デバイスの現在の状態を通知します。通信エラーが発生した場合に呼び出し、デバイスのエラーフラグをクリアして次の入出力(I/O)操作を可能にします。

BOOL ClearCommError(
  HANDLE hFile,     // 通信デバイスのハンドル
  LPDWORD lpErrors, // エラーコードを受け取る変数へのポインタ
  LPCOMSTAT lpStat  // 通信状態バッファへのポインタ
);
CommConfigDialog

ドライバが提供する設定ダイアログボックスを表示します。

BOOL CommConfigDialog(
  LPTSTR lpszName,   // デバイス名の文字列へのポインタ
  HWND hWnd,         // ウィンドウのハンドル
  LPCOMMCONFIG lpCC  // COMMCONFIG( 通信構成)構造体へのポインタ
);
CreateFile

次のオブジェクトを作成するか開き、そのオブジェクトをアクセスするために利用できるハンドルを返します。
•コンソール
•通信リソース
•ディレクトリ(開くだけで作成は不可能)
•ディスクデバイス(Windows NT/2000 のみ)
•ファイル
•メールスロット
•パイプ

HANDLE CreateFile(
  LPCTSTR lpFileName,                         // ファイル名
  DWORD dwDesiredAccess,                      // アクセスモード
  DWORD dwShareMode          ,                // 共有モード
  LPSECURITY_ATTRIBUTES lpSecurityAttributes, // セキュリティ記述子
  DWORD dwCreationDisposition,                // 作成方法
  DWORD dwFlagsAndAttributes,                 // ファイル属性
  HANDLE hTemplateFile                        // テンプレートファイルのハンドル
);
EscapeCommFunction

指定した通信デバイスに、拡張機能を実行するよう指示します。

BOOL EscapeCommFunction(
  HANDLE hFile,  // 通信デバイスのハンドル
  DWORD dwFunc   // 実行する拡張機能
);
GetCommConfig

通信デバイスの現在の構成を取得します。

BOOL GetCommConfig(
  HANDLE hCommDev,    // 通信サービスのハンドル
  LPCOMMCONFIG lpCC,  // COMMCONFIG( 通信構成)構造体へのポインタ
  LPDWORD lpdwSize    // バッファサイズへのポインタ
);
GetCommMask

指定した通信デバイスのイベントマスクの値を取得します。

BOOL GetCommMask(
  HANDLE hFile,      // 通信デバイスのハンドル
  LPDWORD lpEvtMask  // イベントマスクを受け取る変数へのポインタ
);
GetCommModemStatus

モデムの制御レジスタ値を取得します。

BOOL GetCommModemStatus(
  HANDLE hFile,        // 通信デバイスのハンドル
  LPDWORD lpModemStat  // 制御レジスタ値へのポインタ
);
GetCommProperties

指定した通信デバイスの通信プロパティの情報をバッファに入れます。

BOOL GetCommProperties(
  HANDLE hFile,           // 通信デバイスのハンドル
  LPCOMMPROP lpCommProp   // COMMPROP( 通信プロパティ)構造体へのポインタ
);
GetCommState

指定した通信デバイスの現在の制御設定をデバイス制御ブロック(DCB 構造体)に格納します。

BOOL GetCommState(
  HANDLE hFile,  // 通信デバイスのハンドル
  LPDCB lpDCB    // DCB( デバイス制御ブロック)構造体へのポインタ
);
GetCommTimeouts

指定した通信デバイスで実行されるすべての読み書き操作のタイムアウトパラメータを取得します。

BOOL GetCommTimeouts(
  HANDLE hFile,                  // 通信デバイスのハンドル
  LPCOMMTIMEOUTS lpCommTimeouts  // COMMTIMEOUTS( 通信タイムアウト)構造体
                                       // へのポインタ
);
GetDefaultCommConfig

通信デバイスの既定の構成を取得します。

BOOL GetDefaultCommConfig(
  LPCSTR lpszName,    // デバイス名の文字列へのポインタ
  LPCOMMCONFIG lpCC,  // 構造体を受け取るバッファへのポインタ
  LPDWORD lpdwSize    // バッファサイズへのポインタ
);
PurgeComm

指定した通信資源の出力バッファまたは入力バッファにあるすべての文字を破棄します。未処理の読み取り操作または書き込み操作を中止することもできます。

BOOL PurgeComm(
  HANDLE hFile,  // 通信資源のハンドル
  DWORD dwFlags  // 実行する操作
);
SetCommBreak

指定した通信デバイスの文字送信を中断し、ClearCommBreak 関数が呼び出されるまで送信回線を切断状態にします。

BOOL SetCommBreak(
  HANDLE hFile   // 通信デバイスのハンドル
);
SetCommConfig

通信デバイスの現在の構成を設定します。

BOOL SetCommConfig(
  HANDLE hCommDev,    // 通信デバイスのハンドル
  LPCOMMCONFIG lpCC,  // COMMCONFIG( 通信構成)構造体へのポインタ
  DWORD dwSize        // 構造体のサイズ
);
SetCommMask

特定の通信デバイスで監視する一連のイベントを指定します。

BOOL SetCommMask(
  HANDLE hFile,    // 通信デバイスのハンドル
  DWORD dwEvtMask  // 監視するイベントを示すマスク
);
SetCommState

デバイス制御ブロック(DCB 構造体)の指定に従って通信デバイスを構成します。ハードウェアと制御の設定をすべて初期化しますが、出力待ち行列と入力待ち行列は空にしません。

BOOL SetCommState(
  HANDLE hFile,  // 通信デバイスのハンドル
  LPDCB lpDCB    // DCB( デバイス制御ブロック)構造体へのポインタ
);
SetCommTimeouts

指定した通信デバイスで実行されるすべての読み書き操作のタイムアウトパラメータを設定します。

BOOL SetCommTimeouts(
  HANDLE hFile,                  // 通信デバイスのハンドル
  LPCOMMTIMEOUTS lpCommTimeouts  // COMMTIMEOUTS( 通信タイムアウト)構造体
                                       // へのポインタ
);
SetDefaultCommConfig

通信デバイスの既定の構成を設定します。

BOOL SetDefaultCommConfig(
  LPCSTR lpszName,    // デバイス名の文字列へのポインタ
  LPCOMMCONFIG lpCC,  // 構造体へのポインタ
  DWORD dwSize        // 構造体のサイズ
);
SetupComm

指定した通信デバイスの通信パラメータを初期化します。

BOOL SetupComm(
  HANDLE hFile,     // 通信デバイスのハンドル
  DWORD dwInQueue,  // 入力バッファのサイズ
  DWORD dwOutQueue  // 出力バッファのサイズ
);
TransmitCommChar

指定した通信デバイスの出力バッファにある未処理のデータより前に、特定の文字を送信します。

BOOL TransmitCommChar(
  HANDLE hFile,  // 通信デバイスのハンドル
  char cChar     // 送信する文字
);
ReadFile

ファイルからデータを読み取ります。ファイルポインタの現在の位置が、読み取りの開始位置になります。読み取りが完了すると、ファイルポインタの位置は、実際に読み取ったバイト数だけ進みます。ただし、オーバーラップ I/O(非同期 I/O)を指定してファイルのハンドルを作成した場合は、読み取り操作が完了した後、アプリケーション側でファイルポインタを調整してください。この関数は、同期と非同期両方の操作を想定して設計されています。一方、ReadFileEx 関数は、非同期操作専用に設計されています。そして、アプリケーションはファイルの読み取り操作を行っている間に、他の処理を実行できます。

BOOL ReadFile(
  HANDLE hFile,                // ファイルのハンドル
  LPVOID lpBuffer,             // データバッファ
  DWORD nNumberOfBytesToRead,  // 読み取り対象のバイト数
  LPDWORD lpNumberOfBytesRead, // 読み取ったバイト数
  LPOVERLAPPED lpOverlapped    // オーバーラップ構造体のバッファ
);
WaitCommEvent

指定した通信デバイスでイベントが発生するのを待機します。この関数で監視するイベントは、デバイスのハンドルに関連付けられているイベントマスクによって示されます。

BOOL WaitCommEvent(
  HANDLE hFile,                // 通信デバイスのハンドル
  LPDWORD lpEvtMask,           // イベントを受け取る変数へのポインタ
  LPOVERLAPPED lpOverlapped,   // OVERLAPPED 構造体へのポインタ
);
WriteFile

ファイルにデータを書き込みます。この関数は、同期と非同期両方の操作を想定して設計されています。ファイルポインタの現在の位置が、書き込みの開始位置になります。書き込みが完了すると、ファイルポインタの位置は、実際に書き込んだバイト数だけ進みます。FILE_FLAG_OVERLAPPED を指定してファイルを開いた場合は、この限りではありません。オーバーラップ I/O(非同期 I/O)を指定してファイルのハンドルを作成した場合は、アプリケーション側でファイルポインタを調整してください。この関数は、同期と非同期両方の操作を想定して設計されています。一方、WriteFileEx 関数は、非同期操作専用に設計されています。そして、アプリケーションはファイルの書き込み操作を行っている間に、他の処理を実行できます。

BOOL WriteFile(
  HANDLE hFile,                    // ファイルのハンドル
  LPCVOID lpBuffer,                // データバッファ
  DWORD nNumberOfBytesToWrite,     // 書き込み対象のバイト数
  LPDWORD lpNumberOfBytesWritten,  // 書き込んだバイト数
  LPOVERLAPPED lpOverlapped        // オーバーラップ構造体のバッファ
);



(2)構造体

構造体名
  メンバー変数
COMMPROP
(シリアルポートの
        諸元)
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;
COMMTIMEOUTS
(タイムアウト
       設定)
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,
COMSTAT
(送受信の
    状態検出)
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;

DCB
(通信条件の設定)
    
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;
modemdevcaps_tag
(モデムの能力)
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,
modemsettings_tag
(モデムの諸元)
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,
COMMCONFIG
(コミュニケーションデバイスのコンフィグ状態)
typedef struct _COMM_CONFIG {
  DWORD dwSize;
  WORD wVersion;
  WORD wReserved;
  DCB dcb;
  DWORD dwProviderSubType;
  DWORD dwProviderOffset;
  DWORD dwProviderSize;
  WCHAR wcProviderData[1];
} COMMCONFIG,