我在代码中添加了几个断点来监控两个变量的值。该应用程序基本上从以 500 Hz 工作的微控制器生成的串行端口接收 9600 波特的数据流,并且必须根据某些规则“if”和“if else”过滤消息以去除标题字符并将它们寻址到计算使用的其他变量。这是代码:
class Stripper
{
public void Distri (string inComing, out string param1, out string param2, out string param3, out string param4)
{
string currentRes="";
string currentMot = "";
string temperature="";
string numRPM="";
string f = inComing;
if (inComing.Length < 6)
{
f = ">123456<";
}
char firstChar = f[0];
char lastChar = f[f.Length - 2];
bool test1 =(firstChar.Equals('>'));
bool test2 =(lastChar.Equals('<'));
int messLenght = f.Length;
try
{
if (test1 == true && test2 == true && messLenght <= 10)
{
f = f.Replace("<", "");
f = f.Replace(">", "");
if (f[0] == 'I')
{
string _currentRes = f;
_currentRes = _currentRes.Replace("I", "");
currentRes = _currentRes;
}
else if (f[0] == 'M')
{
string _currentMot = f;
_currentMot = _currentMot.Replace("M", "");
currentMot = _currentMot;
}
else if (f[0] == 'T')
{
string _temperature = f;
_temperature = _temperature.Replace("T", "");
temperature = _temperature;
}
else if (f[0] == 'N')
{
string _numRPM = f;
_numRPM = _numRPM.Replace("N", "");
numRPM = _numRPM;
}
else
{ }
}
else
{ }
}
catch (System.Exception)
{
throw;
}
param1 = currentRes;
param2 = temperature;
param3 = numRPM;
param4 = currentMot;
}
}
}
我面临的问题很奇怪,在某些时候我完全迷失了。基本上,在变量“f”和“inComing”上的断点处于活动状态时,应用程序立即无响应,为了使其工作,我不得不将流的速度从串行降低到 1/100,从而引入延迟。如果没有断点,应用程序可以毫无问题地获取完整的数据流。也许这种经历也可以帮助其他处于类似情况的人。看起来断点大大减慢了这个过程。我认为这与我使用的电脑无关,因为这是一个具有 16 Gb RAM 和 2.4 Ghz 处理器 i5 的怪物。我想知道为什么会发生这种情况,是否有办法避免这种问题而不是不使用断点?