异步串行通信:
DWORD dwLength=0,dwHadRead=0;
char *receiveBuff="NULL string";
OVERLAPPED os={0};
os.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);.......
(向串口发数据时,查看dwLength正常增加)
.......
fReadStat=ReadFile(h_com,receiveBuff,dwLength,&dwHadRead,&os);
if(!fReadStat)
{
if(GetLastError()==ERROR_NOACCESS)
AfxMessageBox("Fail in the ERROR_NOACCESS");
}如所预料,出现ERROR_NOACCESS 的998号错误!
是不是哪块内存不能访问?为什么会这样?
谢谢!!

解决方案 »

  1.   

    dwLength=0???那你读什么啊
    看增加不是看dwHadRead的么?
      

  2.   

    是不可以访问,你看看h_com是什么值
      

  3.   

    dwLength=0只是初始值!
    操作时dwLength增加是对的啊,
    因为我不断向COM口发送数据,缓冲区的数据越来越多,而又没有被读出。。h_com应该没有问题,
    因为其它的函数调用h_com都没有问题
      

  4.   

    打开串口是加OVERLAPPED参数没?如果没有,这里也不要加
      

  5.   

    CreateFile()时是加OVERLAPPED的,
    原先打开这个文件?
    没有啊,
    串口只能同时打开一次的,不然就出错了。。