关于调试的问题,一直没弄明白

CT8100 2017-02-23 03:37:39
 //  AfxMessageBox("读取2磁道!");
pGui->m_strReminder = "读卡中...";
pGui->UpdateData(false);
pGui->UpdateWindow();

memset(track, 0, sizeof(track));
ret = ReadTrack(2,(char *)track);
if(ret < 0) {
//AfxMessageBox("插卡成功");
// isICCard((char *)(Input.Track2));
#ifdef _TEST_SINGLEIC_
int tmp = ret;
EnableInsert(2);
if ((ret =IC_Process_ggCardReader(Bank_Res, Input)) == -1) { //非纯芯片卡,是磁道读取失败
//上电失败并非芯片卡
//LOG_ARGOUT((const char *)track);
// AfxMessageBox("2");
LOG_ERROR("ReadTrack 2 err",tmp);

memcpy(Bank_Res.Msg,"F4",2);
memcpy(&Bank_Res.Msg[2],"读卡失败",8);

delete cf;
delete pGui;
return False;
}


一个读卡器有两个读卡位分别能读磁条卡和IC卡,读卡机先进行磁条二磁道读卡,如果读不出来数据,程序就会认为这是一张IC卡,读卡机就会走卡,将卡走到IC地方,从而进行上电操作,因为人不在现场,就加了个]AfxMessageBox("插卡成功");调试消息,结果问题出在这,当存在调试消息的时候,点击确认,读卡器走卡正常,但是如果不加调试消息,读卡器居然不走卡了,这是什么情况? 我开始以为是延迟问题,加了延迟发现没有什么用。
...全文
127 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-02-27
  • 打赏
  • 举报
回复
摒弃使用弹出对话框的办法调试多线程程序。
worldy 2017-02-24
  • 打赏
  • 举报
回复
使用多线程。
oyljerry 2017-02-23
  • 打赏
  • 举报
回复
把IC_Process_ggCardReader单独放一个线程处理试试。不放到当前UI线程
CT8100 2017-02-23
  • 打赏
  • 举报
回复
主要是AfxMessageBox("插卡成功");这句话加上就会不走卡,因为本来想给他变成红色,结果csdn的代码也出现在程序中了,我觉得像各位大神说的那样是因为消息机制的问题,但是我想有什办法能避免掉,目前用的程序走卡,但是觉得这样不太严谨啊,还有怎么才能捕捉到这个消息之间的连带关系列?
worldy 2017-02-23
  • 打赏
  • 举报
回复
// AfxMessageBox("读取2磁道!"); 应该是加入这个,会有延时,线程有处理串口数据的机会;但你直接加延时不管是循环或者sleep应该都不行,这会阻塞串口数量处理; 估计应该使用多线程,AfxMessageBox("读取2磁道!");改为WaitforSingleObject,然后串口正确接收消息后给出放行的信号
走好每一步 2017-02-23
  • 打赏
  • 举报
回复
我估计跟这个有关 pGui->UpdateData(false); pGui->UpdateWindow(); 这两句你是要更新数据,但实际上要跑完你这个函数后才会更新的!! MessageBox会暂时阻塞你的函数,等你点OK的时候,后台信息已经更新完该值,所以程序正常运行!!
走好每一步 2017-02-23
  • 打赏
  • 举报
回复
多处设断点,勤快查看函数返回值,就能发现问题了。
CT8100 2017-02-23
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
加了对话框就有消息循环了,如果不加,就不会自动创建消息循环,然后你的后面调用中可能有依赖消息的机制,所以就阻塞了
回禀大神:因为是串口通讯,所以做了串口监测,不通结果的串口监测数据居然是一样的,难道是因为数据之间有时间差么?如果有的话,拿sleep也是应该能实现的吧?头疼
oyljerry 2017-02-23
  • 打赏
  • 举报
回复
加了对话框就有消息循环了,如果不加,就不会自动创建消息循环,然后你的后面调用中可能有依赖消息的机制,所以就阻塞了

16,472

社区成员

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

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

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