シリアルポート(COMポート)の操作方法
その2 スレッド起動の巻
UINT SimReadThread(
LPVOID pParam // [IN] 未使用
)
{
BOOL Bool_Ret; // 関数戻り値
ULONG Read_Size; // 読み込みバイト数
static char ReadBuff[10]; // 読み込みバッファ
OVERLAPPED osReader = {0}; // 非同期読み込み用構造体
BOOL fWaitingOnRead = FALSE; // 非同期中メッセージ待ち状態
BOOL Loop_End = FALSE; // 処理終了状態
DWORD dwRes; // 非同期読み込み完了待ち関数戻り値
//-----------------------------------------------------------------------------
/// 端末からの電文受信処理
//-----------------------------------------------------------------------------
// 電文受信待ちループ
while( !Loop_End )
{
途中省略
}
// スレッド終了
return(0);
}MainFrmやViewクラスのメンバ関数にするとスレッドはうまく動作しませんでした。原因は ユーザスレッド・ワーカスレッドの違いによるものと思います。とりあえずはどこのクラス にも属さない関数を作成して下さい。
//----------------------------------------------------------------------------- /// 受信用スレッド起動処理 //-----------------------------------------------------------------------------
// 電文受信用スレッドを起動します AfxBeginThread( SimReadThread, // スレッドの実行される関数 NULL // 引数 );
// 正常でリターンする return( TRUE ); }AfxBeginThread()関数をコールすれば、後は勝手にスレッドを生成してくれます。