请各位看完程序后指正
时间:2011-11-28
来源:互联网
小弟是新手,下面是我写的程序,我想读取数据然后判断是否在范围内并且显示判断结果,我想读取完一个就判断并且显示,现在我写的不能实现,程序现在实现的是读取完全部的才显示结果,怎么改就变成读取一次之后判断完就显示结果,然后再读取令一个。请你指点,最好给一个一点点代码,谢谢!
C/C++ code
C/C++ code
wchar_t szOK[] = L"OK"; wchar_t szNG[] = L"NG"; DWORD wCount = 100;//读取的字节数 BOOL bReadStat; CWnd::UpdateData(); int i1=0,i2=0,i3=0,i4=0,i5=0,i6=0,i7=0,i8=0; char str1[100]={0}; double size1; int j1=1; for(j1=1;j1<4;j1++) { Sleep(200); bReadStat=ReadFile(hCom,str1,wCount,&wCount,NULL); if(!bReadStat) { AfxMessageBox(L"读串口失败!"); } PurgeComm(hCom, PURGE_TXABORT| PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); size1 = atof(str1); read1 = (int)size1; if(read1>=input1&&read1<=input2) { SetDlgItemInt(IDC_READ1,read1); i1=1; SetDlgItemText(IDC_OUTPUT1,szOK); break; // 用break就跳出上面的for循环了 } else { SetDlgItemInt(IDC_READ1,read1); i1=0; SetDlgItemText(IDC_OUTPUT1,szNG); } } //Sleep(1000); int j2=1; char str2[100]={0}; double size2; for(j2=1;j2<4;j2++) { Sleep(200); bReadStat=ReadFile(hCom,str2,wCount,&wCount,NULL); if(!bReadStat) AfxMessageBox(L"读串口失败!"); PurgeComm(hCom, PURGE_TXABORT| PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); size2 = atof(str2); read2=(int)size2; if(read2>=input3&&read2<=input4) { SetDlgItemInt(IDC_READ2,read2); i2=1; SetDlgItemText(IDC_OUTPUT2,szOK); break; // 用break就跳出上面的for循环了 } else { SetDlgItemInt(IDC_READ2,read2); i2=0; SetDlgItemText(IDC_OUTPUT2,szNG); } } //Sleep(1000); int j3=1; char str3[100]={0}; double size3; for(j3=1;j3<4;j3++) { Sleep(200); bReadStat=ReadFile(hCom,str3,wCount,&wCount,NULL); if(!bReadStat) AfxMessageBox(L"读串口失败!"); PurgeComm(hCom, PURGE_TXABORT| PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); size3 = atof(str3); read3=(int)size3; if(read3>=input5&&read3<=input6) { SetDlgItemInt(IDC_READ3,read3); i3=1; SetDlgItemText(IDC_OUTPUT3,szOK); break; // 用break就跳出上面的for循环了 } else { SetDlgItemInt(IDC_READ3,read3); i3=0; SetDlgItemText(IDC_OUTPUT3,szNG); } } //Sleep(1000); int j4=1; char str4[100]={0}; double size4; for(j4=1;j4<4;j4++) { Sleep(200); bReadStat=ReadFile(hCom,str4,wCount,&wCount,NULL); if(!bReadStat) AfxMessageBox(L"读串口失败!"); PurgeComm(hCom, PURGE_TXABORT| PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); size4 = atof(str4); read4=(int)size4; if(read4>=input7&&read4<=input8) { SetDlgItemInt(IDC_READ4,read4); i4=1; SetDlgItemText(IDC_OUTPUT4,szOK); break; // 用break就跳出上面的for循环了 } else { SetDlgItemInt(IDC_READ4,read4); i4=0; SetDlgItemText(IDC_OUTPUT4,szNG); } } //Sleep(1000); int j5=1; char str5[100]={0}; double size5; for(j5=1;j5<4;j5++) { Sleep(200); bReadStat=ReadFile(hCom,str5,wCount,&wCount,NULL); if(!bReadStat) AfxMessageBox(L"读串口失败!"); PurgeComm(hCom, PURGE_TXABORT| PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); size5 = atof(str5); read5=(int)size5; if(read5>=input9&&read5<=input10) { SetDlgItemInt(IDC_READ5,read5); i5=1; SetDlgItemText(IDC_OUTPUT5,szOK); break; // 用break就跳出上面的for循环了 } else { SetDlgItemInt(IDC_READ5,read5); i5=0; SetDlgItemText(IDC_OUTPUT5,szNG); } } //Sleep(1000); int j6=1; char str6[100]={0}; double size6; for(j6=1;j6<4;j6++) { Sleep(200); bReadStat=ReadFile(hCom,str6,wCount,&wCount,NULL); if(!bReadStat) AfxMessageBox(L"读串口失败!"); PurgeComm(hCom, PURGE_TXABORT| PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); size6 = atof(str6); read6=(int)size6; if(read6>=input11&&read6<=input12) { SetDlgItemInt(IDC_READ6,read6); i6=1; SetDlgItemText(IDC_OUTPUT6,szOK); break; // 用break就跳出上面的for循环了 } else { SetDlgItemInt(IDC_READ6,read6); i6=0; SetDlgItemText(IDC_OUTPUT6,szNG); } } //Sleep(1000); int j7=1; char str7[100]={0}; double size7; for(j7=1;j7<4;j7++) { Sleep(200); bReadStat=ReadFile(hCom,str7,wCount,&wCount,NULL); if(!bReadStat) AfxMessageBox(L"读串口失败!"); PurgeComm(hCom, PURGE_TXABORT| PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); size7 = atof(str7); read7=(int)size7; if(read7>=input13&&read7<=input14) { SetDlgItemInt(IDC_READ7,read7); i7=1; SetDlgItemText(IDC_OUTPUT7,szOK); break; // 用break就跳出上面的for循环了 } else { SetDlgItemInt(IDC_READ7,read7); i7=0; SetDlgItemText(IDC_OUTPUT7,szNG); } } i8=i1+i2+i3+i4+i5+i6+i7; if(i8==7) { SetDlgItemText(IDC_OUTPUT8,szOK); } else SetDlgItemText(IDC_OUTPUT8,szNG); CWnd::UpdateData(FALSE); // 再次开启定时器
作者: Bfg331399267 发布时间: 2011-11-28
你把所有的代码都写到一个函数里当然是一块儿显示了
你可以考虑把读取的代码放到一个独立线程中
然后想显示的时候发消息通知主窗口显示
你可以考虑把读取的代码放到一个独立线程中
然后想显示的时候发消息通知主窗口显示
作者: xianglitian 发布时间: 2011-11-28
做一个函数好不??循环调用,多简单。。。
作者: shen_wei 发布时间: 2011-11-28
果然需要做成函数,那读串口的部分,连续调用了那么多次,先做成函数吧。
作者: jennyvenus 发布时间: 2011-11-28
第一次接触这个 怎么弄 能给点代码吗
作者: Bfg331399267 发布时间: 2011-11-28
引用 3 楼 jennyvenus 的回复:
果然需要做成函数,那读串口的部分,连续调用了那么多次,先做成函数吧。
果然需要做成函数,那读串口的部分,连续调用了那么多次,先做成函数吧。
++
作者: loseway 发布时间: 2011-11-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28