2016-11-17 1 views
-1

Gute Tag Kollegen Helfer, ich habe folgendes Problem: (Lauf MS Visual Community Edition 2015)Speicher Wert von Versuch für den Einsatz in zweitem Versuch C#

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; 
    } 

} 

Nun ist der Serialport ein Gerät, das eine lengthmeasurment zurückzugibt . Da es ein bisschen komisch ist, oder einfach so, wie es gebaut wird, beginnt es mit einer negativen Zahl (zwischen -5000 und -3370). Jetzt, da ich eine Messung auf dem Bildschirm erhalten möchte, die realistisch ist, möchte ich den Wert auf 0 setzen und den Unterschied berechnen.

Bedeutet: Ich beginne das Programm - drücke send - bekomme einen Wert (sag -3000) - drücke erneut send (nachdem du den Seonsor gedrückt hast) und erhalte den Wert, der in> 0 ist, addiere die Differenz zu 0 .

Ich lernte nur, Werte extern zu speichern, als ich einen C-Kurs ein Jahr zurück hatte, wie ich es innerhalb meines Programms tat. Gibt es eine Möglichkeit, den Wert aus der ersten Messung im Programm zu speichern, damit ich ihn beim nächsten Sende/Versuch verwenden kann?

Der Zähler war nur zum Testen und ich würde es für den „dezimal b2“

Ich hoffe, es auszutauschen dafür eine einfache Lösung ist, nicht wirklich ein Profi mit C# noch nicht, aber ich bin zu lernen eifrig. Ich danke den bereitwilligen Helfern im Voraus, MfG, Chris

+0

Welche Art von C# -Programm ist das? – Liam

+0

ah Entschuldigung, krank hinzufügen in. Ich benutze MSVisual Community editon 2105 –

+1

Es gibt eine Menge, die über obigen Code (Parameternamen, Verwendung, Validierung, Fehlerprüfung, ..) gesagt werden könnte, aber die einfache Antwort auf Ihr Problem würde sei es, eine Eigenschaft (oder sogar ein Feld) auf Klassenebene zu definieren und diese aus dem try-Block zu setzen. – gd73

Antwort

0

OK, ich werde das vereinfachen, um das Konzept zu zeigen, so wird es nicht den ganzen Code haben, den Sie tatsächlich verwenden.
Also, was Sie wollen, ist auf Schaltfläche klicken, einige Werte abrufen und sie für den nächsten Klick speichern.
Wert wird in Variable gespeichert. Wenn Sie eine Variable in function haben, die ein Handler für ein click-Ereignis ist, wird der Wert zerstört, sobald die Ausführung der Funktion abgeschlossen ist.
Also, was Sie brauchen, ist eine Variable im äußeren Bereich (Klassenebene) zu erstellen. Ihre Funktion ist bereits in der Klasse der Form so kommen wir zum Code erhalten:

class Form1 
{ 
    string BetweenClickStorage; 
    private void button4_Click(object sender, EventArgs e) 
    { 
     //Load data here 
     BetweenClickStorage = LoadedData; 
    } 
} 

Danach, wenn Sie wieder auf den Button klicken, den Wert noch in BetweenClickStorage sein wird. Es wird auch für alle anderen Schaltflächen verfügbar sein, klicken Sie auf Handler und anderen Code in diesem Formular.

+0

perfekt geklickt hat, arbeitete wie ein Charme. Zusammen mit den Math.Abs ​​habe ich endlich etwas vom Sensor gelesen =) Danke –

0

Wenn ich Ihre Frage richtig zu verstehen, ist die Antwort einfach eine Variable außerhalb des try/catch zu erklären:

//declare variable // 
var measurement; 

// TRY #1 // 
try 
{ 
    //assign value to the variable here 
} 
catch 
{ 
} 

// TRY #2 // 
try 
{ 
// reference variable here 
} 
catch 
{ 
}