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;
}
.....
}

...全文
576 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34956904 2018-08-14
  • 打赏
  • 举报
回复
你的flag不知道在哪里置位的,你可以用一个BOOL型变量来判断接受缓冲区是否有数据到达,一旦接收区有数据到达可以改变BOOL变量的值停止串口的发送数据,然后进行后续的判断.
叶恭介叶恭介 2016-06-24
  • 打赏
  • 举报
回复
这么简单的问题,请联系我。
  • 打赏
  • 举报
回复
收发丢线程,哪有人在初始化里面这样发数据的!!
lx624909677 2016-06-24
  • 打赏
  • 举报
回复
开个线程发数据,另外一个线程判断返回值
zgl7903 2016-06-23
  • 打赏
  • 举报
回复
100ms定时器 读取数据 1S 定时器 发送数据 60S 定时器超时提示
赵4老师 2016-06-23
  • 打赏
  • 举报
回复
搜索下载一个“串口调试助手”也凑合用。
赵4老师 2016-06-23
  • 打赏
  • 举报
回复
具体我也不太清楚。 建议参考《Windows核心编程》
一朵小小花 2016-06-23
  • 打赏
  • 举报
回复
老师,第一次提问,不知道问题有没有说清楚,出现的问题是,每次都发送60s,才执行接受数据程序,接受数据处理程序中明明设置了标志位也无法进入,有什么简单的方法处理这个问题?
引用 1 楼 zhao4zhong1 的回复:
Multiple Threads in the User Interface http://msdn.microsoft.com/zh-cn/library/ms810439.aspx
赵4老师 2016-06-23
  • 打赏
  • 举报
回复
Multiple Threads in the User Interface http://msdn.microsoft.com/zh-cn/library/ms810439.aspx

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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