シリアルポート(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 );