バイナリ送信で出るエラーコードの意味が分かりません
シリアルポートでバイナリを非同期で送信するプログラムを作成しています。
以下のソースで実行すると、「重複したI/O処理を実行しています」というエラーがでました。
何が間違っているのか分りません・・。
どうかご指摘お願いします。
void CMyDlg::OnReset()
{
//COMポートオープン
HANDLE hCom;
hCom = CreateFile(
"COM4",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);
//通信設定
DCB dcb;
GetCommState(hCom,&dcb);
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hCom,&dcb);
OVERLAPPED old;
// オーバーラップ構造体の初期化
ZeroMemory( &old, sizeof(old) );
old.Offset = 0;
old.OffsetHigh = 0;
old.hEvent = NULL;
//データ送信
char wbuf[7] = {0x02,0x00,0x01,0x00,0x31,0x15,0x12};
DWORD wbyte;
WriteFile(hCom,wbuf,sizeof(wbuf),&wbyte,&old);
//エラーコード取得&文字列に変換&表示
LPVOID lpMessageBuffer;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),//エラーコード取得
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMessageBuffer,
0,
NULL );
MessageBox((LPCTSTR)lpMessageBuffer); //メッセージボックス
LocalFree( lpMessageBuffer );
//COMポートクローズ
CloseHandle(hCom);
}
お礼
y_an様 回答ありがとうございます。VB6標準のエラーで無い事だけでも分かりましたので助かります。それとy_an様のおっしゃる通り、これだけの質問内容では回答してくれる方が分かりにくいと思いました。反省しております。すみませんでした。以後、気を付けます。