想用receive按钮控制是否接收数据,怎样调整它和ReadPortThread间的关系??

huachuixue 2007-06-08 03:36:24
void CMySerialFourDlg::OnReceive()
{
// TODO: Add your control notification handler code here
::MessageBox(NULL,_T("Datas will be received!"),_T("Notice!"),MB_ICONEXCLAMATION);
}
DWORD WINAPI ReadPortThread(LPVOID lpvoid)
{
WaitCommEvent (hPort, &dwCommModemStatus, 0);
SetCommMask (hPort, EV_RXCHAR); if (dwCommModemStatus & EV_RXCHAR)
{.......
}
想在点击Receive按钮后就执行ReadPortThread()判断dwCommModemStatus值,但是二者怎样协调?都是全局函数啊。先谢过了
...全文
115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2008-10-06
  • 打赏
  • 举报
回复
ReadPortThread 做成循环的线程,永远在判断事件标志,根据事件状态决定是否动作。
在OnReceive对事件进行标志。lz可以看看事件同步相关的文档
fangzheng2008 2008-09-28
  • 打赏
  • 举报
回复

即:
在MySerialFourDlg.h中

class CMySerialFourDlg : public CDialog
{
public:
DWORD WINAPI ReadPortThread(LPVOID lpvoid); //你添加
}


在MySerialFourDlg.cpp中

DWORD WINAPI CMySerialFourDlg::ReadPortThread(LPVOID lpvoid)
{
WaitCommEvent (hPort, &dwCommModemStatus, 0);
SetCommMask (hPort, EV_RXCHAR);
if(dwCommModemStatus & EV_RXCHAR)
{.......
}
}
void CMySerialFourDlg::OnReceive()
{
// TODO: Add your control notification handler code here
::MessageBox(NULL,_T( "Datas will be received! "),_T( "Notice! "),MB_ICONEXCLAMATION);
ReadPortThread();//直接调用
}

fangzheng2008 2008-09-28
  • 打赏
  • 举报
回复
楼主你可以这样解决,在CMySerialFourDlg类里添加成员函数ReadPortThread(LPVOID lpvoid);,然后在点击Receive按钮后直接调用ReadPortThread函数。

11000000 2008-09-26
  • 打赏
  • 举报
回复
这两天心情很差,只能做这种无聊的事情。唉!
哪怕能帮到一个人也好。

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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