目前位置: VCer资源中心 >>> VCer论坛 >>> 技术问答

[本帖已阅读4542次 分值2 回复1次] 张贴资源 发回信箱 控制面板

vc串口编程

提供者:deqing 张贴时间:2004-06-09 16:52:31.0 出处:vcer.net 作者:不祥

vc串口编程(2004-06-09 16:52:31.0)


deqing


 
级别: VCer小兵
头衔: VCer会员

经验: 61
作品: 5
分会: 华南分会
注册: 2004-06-04 09:44:44.0
登录: 2004-08-26 09:46:44.0

在主线程上进行写端口,另外再创建一个线程读端口。我写端口的程序是这样的:

1、先创建一个人工复位事件对象

2、异步写数据

3、如果返回值是FALSE,判断错误是什么,继续等待

在写之前端口句柄已返回,我的问题是写函数的返回值总是FALSE,让它进行错误处理,还是不能得到正确的程序流向。

下面是我的程序,麻烦帮我看看:

void CTeleArmDlg::WriteCommProc(CString *buf)

{

 BOOL fState;

 DWORD length=8;

 COMSTAT ComStat;

 OVERLAPPED m_osWrite;

 DWORD dwErrorFlags;

        memset(&m_osWrite, 0, sizeof(OVERLAPPED));

 // 为重叠写创建事件对象,手工重置,初始化为无信号的

 m_osWrite.hEvent=CreateEvent(NULL, TRUE, FALSE, NULL);

  

 ClearCommError(m_hPort,&dwErrorFlags,&ComStat);

 fState=WriteFile(m_hPort,buf,length,&length,&m_osWrite);

 if(!fState)

 {

  if(GetLastError()==ERROR_IO_PENDING)

  {

   while(!GetOverlappedResult(m_hPort,&m_osWrite,&length,TRUE))

   {

    dwErrorFlags=GetLastError();

    if(dwErrorFlags==ERROR_IO_INCOMPLETE)

     continue;

   }

  }

 }

}

注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/2486.html

  如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:) vcer.net捐赠

[回复该贴] [加入个人书签]

re:vc串口编程

不能得到正确的程序流向?

啥意思nie?

bluejoe 于 2004-06-10 14:56:22.0 编辑 [回复该贴]