首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

MFC 异步通信失误 请大神指点

2013-08-23 
MFC异步通信出错请大神指点1.// 打开设备void CUSBDlg::OnOpenDevice(){ hHandleCreateFile( //打开 启动

MFC 异步通信出错 请大神指点

1.// 打开设备
void CUSBDlg::OnOpenDevice()
{
 
hHandle=CreateFile( //打开 启动设备
strDevicePath,
GENERIC_READ | GENERIC_WRITE, 
FILE_SHARE_READ | FILE_SHARE_WRITE,
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,// 设置异步通信模式
NULL );

 
}
2. 
void CUSBDlg::OnWriteData()
{
//注意:  启用最后 1 个接口发送 读取数据
if(hHandle==INVALID_HANDLE_VALUE)
{
MessageBox(_T("设备接口没有打开"));
return ;
}

int x=0,y=0;

BYTE  WriteBuffer[64]={0};
BYTE  ReadBuffer[64]={0};

    WriteBuffer[0]=0x04;
    WriteBuffer[1]=0x50;
DWORD DataByteCount=0; //实际读写的字节数
DWORD i;

BOOL  bR;

OVERLAPPED  nOverlapped;
HANDLEReportEvent;

int err;
  
ReportEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
nOverlapped.Offset = 0;
nOverlapped.OffsetHigh = 0;
nOverlapped.hEvent = ReportEvent;
 
bR=WriteFile(hHandle,WriteBuffer,64,&DataByteCount,(LPOVERLAPPED)&nOverlapped);

err=GetLastError(); 返回值为997, 表示IO操作正在进行
//为什么这里会发生这种错误,不明白到底是什么原因造成 IO操作正在进行,请各位大神,指点下

     WaitForSingleObject(ReportEvent, 100);  // 等待 变为有信号
     
 ResetEvent(ReportEvent); // 设置其无信号

  CloseHandle(ReportEvent);
} 异步通信? MFC?
[解决办法]
WriteFile函数异步模式调用,则立即返回,不需要等待函数发送数据结束,所以就是表示正在进行IO操作了。 

热点排行