VC++串口编程中读线程函数里面各个语句的作用

在网上看到一个串口通信的例程,里面用到多线程编程,其中的读线程函数的代码实现如下,我不知道这个函数实现的一个逻辑顺序是什么,很多语句也不明白是什么意思,如if (dwEvent & EV_RXCHAR) ClearCommError(pThis->ComHandle,&dwReadErrors,&cmState); ReadLen = cmState.cbInQue; memcpy(pThis->RevDataBuf,readbuf,sizeof(char)*actualReadlen);这些语句我都不知道是什么意思,(为什么要把读数据缓冲区里的数据复制到接收数据缓冲区呢??) 好多问题呀,跪求大神帮忙。。。/************************************************************************//*读线程函数 *//************************************************************************/UINT WINAPI CModuleRead::ReadThread(LPVOID lpParam){ CModuleRead *pThis = reinterpret_cast<CModuleRead*>(lpParam); int Count=1; DWORD dwEvent ; //接收事件变量 DWORD ReadLen = 0; //将要读取的字节数 unsigned long actualReadlen = 0;//实际接收的字节数 DWORD dwReadErrors = 0; //接收错误事件 COMSTAT cmState; //串口状态结构体 char *readbuf=NULL; readbuf = pThis->ReadBuf; while (TRUE) { if (WaitCommEvent(pThis->ComHandle,&dwEvent,NULL)) { SetCommMask(pThis->ComHandle,EV_RXCHAR); //接收到字符 if (dwEvent & EV_RXCHAR) { ClearCommError(pThis->ComHandle,&dwReadErrors,&cmState); ReadLen = cmState.cbInQue; if (ReadLen <= 0) { continue; } pThis->SPort.recv(readbuf,ReadLen,actualReadlen,500); ////////////////////////////// //为接收缓冲区申请空间 pThis->RevDataBuf = new char[sizeof(char)*actualReadlen]; ZeroMemory(pThis->RevDataBuf,sizeof(char)*actualReadlen); memcpy(pThis->RevDataBuf,readbuf,sizeof(char)*actualReadlen); int count=0; int tcount=0; // pThis->Convert();// pThis->JugeIn(); if (actualReadlen <= 0) { return 0; } if (pThis->OnSeriesRead) { pThis->OnSeriesRead(pThis->m_pOwner,readbuf,actualReadlen,Count); } } } if (WaitForSingleObject(pThis->ExitHandle,100) == WAIT_OBJECT_0) { break; } } if (pThis->RevDataBuf) { delete [] pThis->RevDataBuf; pThis->RevDataBuf = NULL; } return 1;}
2026年09月20日 00:27
有2个网友回答
网友(1):

以LAMP兄弟连的课程安排来说主要学习一下内容:
1.SpringSecurity:目前最主流的JavaEE安全解决方案,基于Spring。为基于JavaEE企业开发提供全面安全服务。
2.WebSphere:企业级应用服务器。包含了编写、运行和监视全天候的工业强度的随需应变 Web应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施。
3.负载均衡:高并发解决方案。能利用一个集群中的多台单机,响应更多的并发请求。
4.分布式系统:由网络互联的多处理机体系结构上执行任务的系统。可有效提高系统的可扩展性、稳定性和执行效率

网友(2):

这个问题是因为主线程结束的待机按钮的事件中,你建立一个线程仍然排队的消息队列中的消息,并因此在该按钮的响应消息响应完成将响应建立的线程的消息,因为你不想让主线程运行,那么如何由主线程的线程一通,比如,啊不