Laden...
H
hruendel
myCSharp.de - Member
2
Themen
5
Beiträge
Letzte Aktivität
vor einem Jahr
Dabei seit
03.11.2012
Erstellt vor einem Jahr

Das Programm läuft in etwa wie erwünscht. Wollte etwas Feedback geben.

Das SerialTemplate funktioniert bei mir nicht. Auch die Exe aus dem Debug-Ordner empfängt bei mir keine Daten. Auserdem ist das Ding mir dem framework 3.0 etwas veraltet. Beim Versuch das Beispiel aus dem VisualStudio 2022 su starten kommt es zum Abbruch. Möglicherweise habe ich mich damit nicht ausgiebig genug beschäftigt.

[FAQ] Warum blockiert mein GUI? hat mich jedoch auf den Weg gebracht.

Folgendes habe ich gemacht:

  • Empfang von seriellen Daten in eigenen Thread ausgelagert.
  • Invoice beim Schreiben der Classen-Variablen
  • Die Schrittkette der Kalibrationsroutine ebenfalls in eigenen Thread ausgelagert.

Jetzt läuft alles sehr geschmeidig. Den Aufwand mit dem Seriellen Port in eigene Klasse auszulagern habe ich nicht gemacht. Bin auch so zufrieden.

Erstellt vor einem Jahr

Danke für die Infos. ich werde die Template ausprobieren.

Erstellt vor einem Jahr

Hallo Gemeinde,

ich versuche ein Windowsprogramm für das Kalibrieren eines Sensors zu programmieren. Ich habe zwei COM-Ports (serialPortCalibrator, serialPortMultimeter) auf denen ich die Befehle an Kalibrator und Multimeter sende. Auslesen von COM-Ports tue ich mit einem getrennten Thread. Funktionieren tut alles ausser dass, ich die Messwerte (multimeterValueFloat1, multimeterValueFloat2) nicht in die textBoxen reinbekomme.

Wenn ich die Variablen von der calibrationRoutine die ich per Tastenclick aufrufe in der MessageBox ausgebe sind diese aktuell. Sie haben die richtigen und aktuellen Messwerte von dem Multimeter.

Mir ist verständlich dass, die Kalibrierroutinedie gewisse Schritte ausführt (anfragen, warten, COM-Ports lesen, werte in die Felder schreiben ) sich nicht für die aktualität der Variblen interessiert.

Wie kann ich die aktualieserten Variablen (multimeterValueFloat1, multimeterValueFloat2) zum Schluß in die Formular-Felder schreiben?

Das habe ich bischer ohne Erfolg probiert:* Werte direkt aus der Routine schreiben

  • Werte aus eine anderen Funktion schreibe.
  • Werte über Invoke schreiben (wie im Beispiel)

Relevanter Codeabschnitt...


public partial class MainForm : Form
{
	// Messdaten
	double multimeterValueFloat1 = 0.000;
	double multimeterValueFloat2 = 0.000;
		
	void calibrationRoutine(object sender, EventArgs e){
		
		// Calibrator -> 0%
		serialPortCalibrator.WriteLine(":ps 0\n\r");
		System.Threading.Thread.Sleep(10000);
		
		// Multimeter ablesen
		serialPortMultimeter.WriteLine("S?\r");
		System.Threading.Thread.Sleep(300);
		this.labelMesswert1Multimeter.Invoke (new MethodInvoker(calibrationWriteLabel1));
		
		// Calibrator -> 100%
		serialPortCalibrator.WriteLine(":ps 100\n\r");
		System.Threading.Thread.Sleep(10000);
		
		// Multimeter ablesen
		serialPortMultimeter.WriteLine("S?\r");
		System.Threading.Thread.Sleep(300);
		this.labelMesswert5Multimeter.Invoke (new MethodInvoker(calibrationWriteLabel2));
	}

	void calibrationWriteLabel1(){
		labelMesswert1Multimeter.Text = multimeterValueFloat1.ToString();
	}
	void calibrationWriteLabel2(){
		labelMesswert2Multimeter.Text = multimeterValueFloat2.ToString();
	}
}

Erstellt vor 12 Jahren

Deine Antwort hat mich zum Ergebnis geführt. Das Stichwort lautet "Control.PreviewKeyDown-Ereignis". Das Problem ist, die Pfeiltasten sind keine Buchstabentasten und werden anders als sonst behandelt.

Hier ist aber schon alles beschrieben: Control.PreviewKeyDown-Ereignis

Danke für schnelle Hilfe.

Erstellt vor 12 Jahren

Hallo an alle!

Ich habe eine Anwendung bei der in den Textboxen einige digitalen Werte stehen. Die Werte können zwischen 0 und 255 liegen. Wenn ich in die Textbox reinklicke möchte ich den Wert mit den Navigationstasten hoch und runter (bzw. rechts und links) hoch bzw. runterzählen.

Beispiel: In der Textbox steht die Zahl 42, wenn ich die Up-Taste drücke soll es sich auf 43 ändern und wenn ich Down-Taste drücke soll es sich auf 41 ändern.

Das es eine komplexe Routine sein wird ist mir bewust. Wie sieht das Event für die Textbox aus?