MFC SerialPort类做串口通信 同时收发问题
一朵小小花 2016-06-23 02:31:54 做了个简单的通信握手程序: 设想在打开软件就开始发送指令,每隔1s发送一次,如果60秒内,收到下位机发送数据,程序就停止发送,并且弹出主对话框,如果60s内,程序(上位机)没有接受到数据 就弹出一个提示未接受对话框,出现的问题是: 在OnInitDialog() 中调用了 initSend() 函数,必须执行完(60s)之后,才执行处理接受数据的函数,发送过程无法中断,请大家帮忙想想,要用多线程处理吗?
/ 延时发送 主对话框不出
void CT1Dlg::OnInitDialog()
{
InitSend();
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CT1Dlg::InitSend()
{
int i = 60;
while(flag)
{
BYTE Buf[20];
Buf[0] = char(0xBB);
Buf[1] = char(0xA0);
Buf[2] = char(0xEE);
m_SerialCommControl.WriteToPort((char*)Buf, 3);
if( --i >= 0)
{ i = 0;
flag =0;
}
}
}
LRESULT CT1Dlg::OnThreadCommNotify(WPARAM wParam, LPARAM lParam) //消息回传
{
memcpy(szTemp, (void *)lParam, btDataCount);
if (wPortNum == this->m_nCommPortControl)
{
if (szTemp[0] != 0xBB)
{
return 0L;
}
if (szTemp[1] == 0xA0 )
{
if (szTemp[2] == 0xEE)
{
flag = 0;
m_static1.SetWindowTextW(_T(" 与下位机握手成功 "));
return 0L;
}
.....
}