Chinaunix首页 | 论坛 | 博客
  • 博客访问: 177008
  • 博文数量: 22
  • 博客积分: 1411
  • 博客等级: 上尉
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-19 18:12
文章分类
文章存档

2011年(1)

2010年(1)

2008年(20)

我的朋友

分类:

2008-12-10 16:02:21

今天下了个串口程序, 自己修改了下, 既然别人都开源, 那我也遵守这个协议

这个程序的功能是配置串口, 然后接受数据, 接受数据是在另外一个线程, 通过阻塞的方式接收,如果发送方没有数据, 那个这个线程就一直等到有接收event到来, 然后将接受到的数据保存在文件中RCV.txt.


下面是接收线程:


文件:COMWR.rar
大小:3471KB
下载:下载

void ThreadProc(void *pParam)
{
    OutputDebugPrintf("============================\n");
    DWORD commModemStatus;
    DWORD bytesTransferred;
    DWORD Written;
    CComplDlg *pCDlg = static_cast<CComplDlg *>(pParam);
    
    SetCommMask(pCDlg->hCom, EV_RXCHAR);
    
    DWORD length = 0;
    while(pCDlg->closeAction) {
        WaitCommEvent(pCDlg->hCom, &commModemStatus, 0);
        SetCommMask(pCDlg->hCom, EV_RXCHAR);
        if(commModemStatus & EV_RXCHAR) {
            DWORD i;
            BYTE buff[4096];
            do {
                // Read the data from the serial port.

                bytesTransferred = 0;
                ReadFile (pCDlg->hCom, buff, sizeof(buff), &bytesTransferred, 0);
                if(!bytesTransferred) {
                    break;
                }
                
                // Display the data read.

                for(i=0;i<bytesTransferred;i++){
                    OutputDebugPrintf("%c", buff[i]);
                }
                WriteFile(pCDlg->hFile,buff,bytesTransferred,&Written,NULL);//D′èëÎļt

            } while (1);
        }
    }
    
    GetCommModemStatus (pCDlg->hCom, &commModemStatus);
    
}

阅读(1509) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~