シリアルポート(COMポート)の操作方法
//-----------------------------------------------------------------------------
/// 通信ポートオープン処理
//-----------------------------------------------------------------------------
// ポートハンドラ初期化
Com2Port = INVALID_HANDLE_VALUE;
// 通信ポートオープン
com2Port = CreateFile( "COM2", // COM2ポート
GENERIC_READ | GENERIC_WRITE, // READ&WRITE
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED, // 非同期モード
NULL );
//オープンエラーの時
if( Com2Port == INVALID_HANDLE_VALUE )
{
// エラーでリターンする
return( FALSE );
}
最初にポートハンドラを初期化しているのは、別関数で、ポートがオープン済みかどうかを
チェックする為です。
// 通信ポートをクローズする
Bool_Ret = CloseHandle( Com2Port );
// ポートハンドラを初期化する
Com2Port = INVALID_HANDLE_VALUE;
// クローズエラーの時
if( Bool_Ret == 0 )
{
// ソケットがオープン中かチェック
if( E_Socket != NULL )
{
// 内部ログの書き込み
(long)(*ZZerrlog_VC)( E_Socket, NHK_COM_COMM, "%s %s %d %s(%d)", 0,
PRCNAM_COM, __file__, __line__, D_LOG_MSG08, GetLastError() );
}
// エラーでリターンする
return( FALSE );
}
2.ポートの設定を変更する
DCB dcb; // 通信設定構造体
// 通信ポートの状態を取得する
Bool_Ret = GetCommState( Com2Port, &dcb );
// 通信ポートの設定を行う
dcb.BaudRate = 9600; // 通信速度:9600
dcb.ByteSize = 8; // データビット:8
dcb.Parity = NOPARITY; // パリティ:なし
dcb.StopBit = ONESTOPBIT; // スタートストップビット:
// 通信ポート状態を更新する
Bool_Ret = SetCommState( Com2Port, &dcb );