大家好帮手,我有以下问题: (运行MS Visual Community Edition 2015)
private void button4_Click(object sender, EventArgs e) // Senden
{
serialPort2.WriteLine("SR,00,002\r\n");
textBox1.Text = "gesendet";
textBox3.Text = "";
try
{
System.IO.StreamReader file = new System.IO.StreamReader("C:\\blub.txt");
String line = file.ReadToEnd();
string Hallo = line; \\in the beginning there is "0" in the file
file.Close();
decimal counter = Convert.ToDecimal(Hallo); \\just for testing
counter++;
string b = serialPort2.ReadLine();
string[] b1 = Regex.Split(b, "SR,00,002,"); \\cuts off unwanted input from device
decimal b2 = decimal.Parse(b1[1]); \\number like -3000
System.IO.StreamWriter test = new System.IO.StreamWriter("C:\\blub.txt");
test.WriteLine(counter);
test.Close();
textBox7.Text = "Das ist counter:" + counter;
}
catch (TimeoutException)
{
textBox3.Text = "Timeout";
throw;
}
}
现在,Serialport是一个返回长度测量的设备。因为它有点奇怪,或者只是它的构建方式,它以一个负数(从-5000到-3370之间)开始。现在,因为我想在屏幕上获得真实的测量,我想将值设置为0并计算差异。
意思是:我启动程序 - 按发送 - 获取一个值(比如-3000) - 再次按下发送(在推入seonsor之后)并获得其被推入的值> 0将差值加到0。
我只学会在一年前有一门C课程时在外部存储值,就像我在我的程序中一样。有没有办法将第一次测量的值存储在程序中,以便我可以在下次发送/尝试时使用它?
该计数器仅用于测试,我会将其换成“十进制b2”
我希望有一个简单的解决方法,不是真正的C#专家,但我渴望学习。我事先感谢愿意帮助的人,MfG,Chris
答案 0 :(得分:0)
好的,我会简化这个以显示概念,因此它不会包含您实际使用的所有代码 所以,你想要的是点击按钮,获取一些值并存储它们以供下次点击 值存储在变量中。如果函数中的变量是click事件的处理函数,则只要函数完成执行,就会销毁该值 所以,你需要的是在外部范围(类级别)创建变量。您的函数已经在表单的类中,所以让我们来代码:
class Form1
{
string BetweenClickStorage;
private void button4_Click(object sender, EventArgs e)
{
//Load data here
BetweenClickStorage = LoadedData;
}
}
在此之后,当您再次单击该按钮时,值仍将在BetweenClickStorage
中。它也可用于所有其他按钮点击处理程序和该表单中的其他代码。
答案 1 :(得分:0)
如果我正确理解你的问题,答案就是在try / catch之外声明一个变量:
//declare variable //
var measurement;
// TRY #1 //
try
{
//assign value to the variable here
}
catch
{
}
// TRY #2 //
try
{
// reference variable here
}
catch
{
}