程序运行3小时出错,分析下什么问题。
我开发的远程监控系统分两个程序,一个服务器端程序,它运行在远程的服务器上,服务器通过一个485串口与远在5公里外的一个监测模块相连,这个模块可以监测电流电压等数据,模块有它的协议,实现实时监控,需要不停地向模块发送监测命令,模块接收到正确的命令就会返回电流电压值到串口。另一个客户端程序,需要通过网络与服务器程序通信,我设计的客户端程序是,在客户端设置一个时钟,周期地向服务器程序发送自定义命令,服务器程序收到命令后,向485端口发送监测模块的命令,模块返回电流电压值后,将返回的值经过处理,处理原理就是加头标志,和结束标志,处理过的数据发送到客户端程序,客户端程序收到数据再去掉头标志和结束标志显示出来。我的程序能运行正常,在实验室里(传输距离不远)也运行正常,但是程序在现场运行,3个小时后,程序就死了实时的电流电压值不变了,重新关闭,再运行又好了。第一次作类似的系统,请问问题会出在什么地方?
[解决办法]
你的switch语句是否有问题
switch (m_strEditRecvData.GetAt(i))//m_strEditRecvData保存了接收到的数据
{
case 'V '://V为电压数据的头
{
。。。。
break;
}
case 'A '://A为电流数据的头标志
{
。。。
break;
}
case 'H ':
{
。。。
break;
}
}
m_WorkstrHZ = m_strHZ;
break;
}
default:
break;
}
--------
这样的话,对于因意外,数据有丢失情况下
起始字符不是 V、A、H的情况,似乎没有做相应处理,会不会导致不断死循环在这个switch上?