vc多串口应答式通信问题

cryptonym 2006-05-24 10:03:14
一台pc控制多个串口,每个串口一个外设


要写一个程序与这些外设做应答式的服务。

怎么弄?

一个口一个线程嘛?
那个大侠给个例子?
cryptonym_ld@hotmail.com 谢谢。
...全文
276 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2006-05-25
  • 打赏
  • 举报
回复
关注
Practise_Think 2006-05-25
  • 打赏
  • 举报
回复
不用轮询,用WaitForMultipleObjects()也可以的

unsigned CSeriesCom::RecvThreadFunc(void* pParam)
{
ASSERT(pParam!=NULL) ;
CSeriesCom* pThis = (CSeriesCom*)pParam ;
DWORD dwEvtMask ;

dwEvtMask = EV_ERR|EV_RXCHAR ;
if(::SetCommMask(pThis->m_hCom,dwEvtMask))
{
OVERLAPPED Overlapped ;
DWORD dwWaitResult ;

::memset(&Overlapped,0,sizeof(Overlapped)) ;
HANDLE hEvent = ::CreateEvent(NULL,TRUE,FALSE,NULL) ;
Overlapped.hEvent = hEvent ;

dwEvtMask = 0 ;
BYTE Data[1024] ;

while (pThis->m_bStart)
{
::WaitCommEvent(pThis->m_hCom,&dwEvtMask,&Overlapped) ;
{
while(1)
{
dwWaitResult = ::WaitForSingleObject(hEvent,10000) ;
if(dwWaitResult==WAIT_OBJECT_0)
{
break ;
}
continue ;
}
if(dwEvtMask & EV_ERR)
{
break ;
}
else if(dwEvtMask & EV_RXCHAR)
{
/**/
::Sleep(1) ;
dwEvtMask = 0 ;
dwEvtMask = pThis->RecvData(Data,sizeof(Data),10) ;
if(dwEvtMask>0)
{
pThis->m_lpfnProcRecvData(Data,dwEvtMask,pThis->m_pRecvParam) ;
}
dwEvtMask = 0 ;
/**/
}
}
}
}

return 1 ;
}
一条晚起的虫 2006-05-25
  • 打赏
  • 举报
回复
应答式,一个口子一个线程就够用了。
如果对实时性要求不高,一个线程轮询都可以。
nuaawenlin 2006-05-25
  • 打赏
  • 举报
回复
www.vckbase.com
Practise_Think 2006-05-24
  • 打赏
  • 举报
回复
如果用MS的控件不是有个事件中断么? 如果用API就得使用多线程来WAITFOR了

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧