Debug Assertion Failed! 串口数采程序
Debug Assertion Failed! 串口数采程序求助
一个串口数据采集程序,编译通过,运行出错,错误提示:
Debug Assertion Failed!
Program:.....
File: olevar.cpp
Line:2553
For information on how your program can cause an assertion failure,see....
File: olevar.cpp为是vc类库里的代码!!!
程序主要代码如下:
一个串口数据采集程序,编译通过,运行出错,错误提示:
Debug Assertion Failed!
Program:.....
File: olevar.cpp
Line:2553
For information on how your program can cause an assertion failure,see....
File: olevar.cpp为是vc类库里的代码!!!
程序主要代码如下:
- C/C++ code
/***Visual Basic 中的Val()函数改写***/ double CHuoqvjiaoduDlg::Val(CString a) { int number=0; CString *p; int sum=0; for(p=&a;*p!='\0';p++) { if(*p>='0'&&*p<='9') { if(number==0) { sum=(atoi(*p)-48); number=1; } else sum=(sum*10+(atoi(*p)-48)); } else break; } return sum; } /************主要函数****************/ double CHuoqvjiaoduDlg::readGAM60Value(CString mingling) { int i,j,k; //int d; CString Buf(" "); CString InByte(""); CString aa(""); //CString InByte; CByteArray OutB; //CString aa; //CString bb,cc; double value; m_MSComm1.SetPortOpen(TRUE); m_MSComm1.SetInBufferCount(0); m_MSComm1.SetOutBufferCount(0); m_MSComm1.SetPortOpen(FALSE); //Buf=""; Buf=mingling; Buf.TrimLeft(); Buf.TrimRight(); i = strlen(Buf); k = 0; //free(&OutB); //realloc(&OutB,(i/2)+1); OutB.RemoveAll(); OutB.SetSize((i/2)+1); j=0; while(i>0) { OutB[j]=atoi(Buf.Mid(k,2)); k = k + 2; i = i - 2; j = j + 1; } /*COleVariant varOut; varOut=(COleVariant)OutB; */ m_MSComm1.SetPortOpen(TRUE); m_MSComm1.SetInBufferCount(0); //m_MSComm1.SetOutput(varOut); //m_MSComm1.SetOutput(COleVariant(OutB)); /*d = 0; while(d<9000000) d=d+1;*/ m_MSComm1.SetOutput(COleVariant(OutB)); //InByte=(CString)m_MSComm1.GetInput(); VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,z=0; BYTE rxdata[2048]; variant_inp=m_MSComm1.GetInput(); safearray_inp=(COleSafeArray)variant_inp; len=safearray_inp.GetOneDimSize(); for(z=0;z<len;z++) safearray_inp.GetElement(&z,rxdata+z); for(z=0;z<len;z++) { BYTE bt=*(char*)(rxdata+z); InByte.Format("%c",bt); } m_MSComm1.SetPortOpen(FALSE); if((InByte.Mid(1,1)) == "+") { aa = InByte.Mid(2,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(2,1)) == "+") { aa = InByte.Mid(3,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(3,1)) == "+") { aa = InByte.Mid(4,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(4,1)) == "+") { aa = InByte.Mid(5,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(5,1)) == "+") { aa = InByte.Mid(6,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(6,1)) == "+") { aa = InByte.Mid(7,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(7,1)) == "+") { aa = InByte.Mid(8,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(8,1)) == "+") { aa = InByte.Mid(9,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(9,1)) == "+") { aa = InByte.Mid(10,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(10,1)) == "+") { aa = InByte.Mid(11,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(11,1)) == "+") { aa = InByte.Mid(12,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(12,1)) == "+") { aa = InByte.Mid(13,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(13,1)) == "+") { aa = InByte.Mid(14,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(14,1)) == "+") { aa = InByte.Mid(15,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(15,1)) == "+") { aa = InByte.Mid(16,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } if((InByte.Mid(16,1)) == "+") { aa = InByte.Mid(17,10); value = Val(aa); //return value * 0.01; value=value * 0.01; } return value; } void CHuoqvjiaoduDlg::OnButnhq() { // TODO: Add your control notification handler code here double jiaodu; char string[25]; int sig = 10; // significant digits jiaodu = readGAM60Value("2330300D"); gcvt(jiaodu, sig, string); m_nEdit=string; UpdateData(FALSE); }