求解答!!0xc0000094,串口通讯问题!!!
最近接手了别人写的一个软件,运行环境是XP,外设是一台温度测量仪,程序里面含有串口通讯的功能。插上串口,正常通讯时,软件每次都运行13个小时左右后,就崩溃了,提示应用程序发生异常,未知软件错误 0xc0000094 !!!
当我把串口拔掉后,软件运行一整天也没问题,所以我判断是串口通讯这块代码的问题。不多说,先贴源码:
//串口通信
LONG CMainFrame::OnCommunication(WPARAM ch, LPARAM port)
{
int j;
//串口1,连接温度仪
for (j=0; j<4; j++) {
if (port==m_nPorts[j] && m_tyPorts[j]==PORT_TYPE_TEMP) {
if(ch == 10) //得到回车码,表示传输完毕
{
CString str,tstr;
str = m_strPortReceived[j];
m_strPortReceived[j] = "";
str.SetAt(str.GetLength()-1, '\0');
str.TrimLeft();
str.TrimRight();
if(str.Mid(0,2) == "!T") //?W 得到单色的温度 ?T 得到双色的温度
{
str = str.Mid(2);
int i;//i是用来存放获取的温度值,一般都为几千度,温度值也可能为字母,如EUUU
i = StrToInt(str);
//只有在发出查询指令后才处理接收到的数据
if (m_nTempQuery[j] > 0) {
m_nTempDetail[j][m_nTempDetailCount[j]-1] = i;
//去掉低于 10 的温度值
if(i < m_temp_expt_low) return 0;
//得到最大值
if(i>(int)m_fTempVal[j]) m_fTempVal[j]=(float)i;
}
}
}
else
{
m_strPortReceived[j] += (char)ch;
}
break;
}
}
1.怀疑过内存泄漏问题,但是观察过资源管理器中内存使用情况,占用内存很少且一直很稳定。
2.程序给串口每秒钟发送请求测量温度的命令 ?T (这是温度仪定义的请求指令,后面还有回车符表示发送完毕),返回是 !TEUUU或者!T1234(其中1234表示温度值,后面也有回车符,表接收完毕)。
真心求教各位大神,能否看出可疑之处,求帮助!!!