Laden...

IF Abfrage, um wiederholtes Verarbeiten/Senden der gleichen Daten zu verhindern

Erstellt von escape vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.755 Views
Thema geschlossen
E
escape Themenstarter:in
5 Beiträge seit 2011
vor 12 Jahren
IF Abfrage, um wiederholtes Verarbeiten/Senden der gleichen Daten zu verhindern

Hallo Community ich bin am verzweifeln.

Ich versuche die ganze Zeit eine IF Abfrage zu verschachteln? "Bin Anfänger in C#"
Nun weiss ich nicht wie ich diese Abfrage gestalten muss das etwas nicht dauerhaft gesendet wird. Sondern nur einmal es handelt sich hier um eine große Schleife wo viele Abfragen sind diese sollen auch an mein Board gesendet werden allerdings ist das mit meinem Code so das er ja immer sendet.

Wie müsste eine Abfrage aussehen wenn ich etwas vorher prüfe ob es nicht schon wahr oder unwahr ist. So das er es einmal sendet und er wieder sendet wenn es unwahr wird? Ich finde das jetzt irgendwie total komplex! Ich weiss nichtmal ob ich das hier richtig erklärt habe wie ich das meine.


if ((data.lightBits3 & 0x10000)!= 0)
                    {
                        serialPort1.Write("NOSEGEARDOWN\r");  // sende Fahrwerk ausgefahren Wert ist 1
                    }
                else
                    {
                        serialPort1.Write("NOSEGEARUP\r"); // Sende Fahrwerk ausgefahren Wert ist 0
                    }

Es wäre nett wenn mir jemand dabei helfen könnte.
Gruß escape

G
538 Beiträge seit 2008
vor 12 Jahren

Also abgesehen davon, dass du zwei Varianten machen kannst, nämlich


if(a != 0 && b != 0) {
}

// bzw.

if(a != 0) {
  if(b != 0) {
  }
}

würde ich dir doch die Grundlagen ans Herz legen: 🛈 📗

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

C
2.122 Beiträge seit 2010
vor 12 Jahren

Ich weiss nichtmal ob ich das hier richtig erklärt habe wie ich das meine.

Ich schon. NEIN 😃

Wenn du dir mal vorstellst du wärst jemand wie wir anderen hier, der keine Ahnung hat was du da machst, was rauskommen soll, was du mit dauerhaft senden usw. meinst, verstehst du sicher was ich meine.

E
escape Themenstarter:in
5 Beiträge seit 2011
vor 12 Jahren

Ich lese aus dem Shared Memory (PC Flugsimulator) Datensätze aus und diese sende ich dann einen Microcontroller der weiter an Schieberegister und die befeuern LED's.

Die Datensätze beinhalten 0 oder 1

Wenn ich nun dauerhaft etwas sende z.B. dauerhaft ne 1 ist das unsinn da dieser Wert zum einschalten einer LED nur einmal benötigt wird also warum zig tausendmal in der Sek. senden?

Also ich habe am Anfang den Wert 0 oder 1 was bedeutet das mein Fahrwerk ein oder ausgefahren ist. Nun gehen wir davon aus das ich in der Luft bin dann ist das Fahrwerk eingefahren und der Wert 0 ist gesetzt.

Nun Fahre ich mein Fahrwerk aus und der Wert 0 wird zu 1 nun soll mein Programm
eine 1 an den Microcontroller senden dieser wiederum reagiert darauf.

Das um deine Frage zu meinem Projekt zu beantworten.

1.378 Beiträge seit 2006
vor 12 Jahren

Indem du dir merkst, was du vorher gesendet hast. Und beim nächsten mal prüfst ob der Wert sich geändert hat.

Lg XXX

E
escape Themenstarter:in
5 Beiträge seit 2011
vor 12 Jahren

Und genau dort liegt mein Problem 😃

C
48 Beiträge seit 2011
vor 12 Jahren

Hallo escape,
speichere den Wert in eine Variable und frage ihn wieder ab:


public bool zustand
{
 get
 {
   return zustand;
 }
 set
 {
   if(zustand != value)
   {
      //Aktionen
      zustand = value;
   }
 }
}
//Aufruf: zustand = aktualisierter_status;

Gruß,
C#ler

In theory, there is no difference between theory and practice. But, in practice, there is.

The nice thing about the Java API is that if you don't like it, just wait two minutes — it will change. Doug Lyon

E
escape Themenstarter:in
5 Beiträge seit 2011
vor 12 Jahren

Egal wie ich es versuche, bekomme immer einen Fehler.
Ich dreh und wende es aber keine chance ... mir fehlt noch das fundierte Wissen dafür 😦 Ich verstehe nicht wie ich das realisieren(schreiben) soll würdet ihr mir da bitte helfen?

Gruß escape

Hinweis von herbivore vor 12 Jahren

Nein, wir erwarten, dass du dir die Grundlagen selbst aneignest. Siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

C
48 Beiträge seit 2011
vor 12 Jahren

Hallo escape,
nehmen wir an, du hast eine Klasse namens Foo geschrieben, in der deine Methoden stehen. Da kannst du meinen Code von eben reinschreiben:

  
public class Foo  
{  
//...  
public bool Bar  
{  
get  
{  
   return Bar;  
}  
set  
{  
   if(Bar != value)  
   {  
      //Aktionen  
      Bar = value;  
   }  
}  
}  
//...  
}  
  

Statt "//Aktionen" kannst du dann schreiben, was passieren soll, z.B.:

MessageBox.Show("Fertig!");/*oder*/Console.WriteLine("Fertig!");

je nach Projekttyp.
Du schreibst dann in deine Methode, wo der Wert geändert wird:

Foo.Bar = true; /* oder */ Foo.Bar = false; /* oder */
Foo.Bar = aktueller_Zustand_von_irgeneinem_bool; /*etc...*/

Dadurch rufst du den set-Accessor von Foo.Bar auf, der das, was bei "//Aktionen" steht, nur ausführt, wenn der Wert (value) ungleich dem bisherigen Wert ist und nur dann wird der Wert geändert.
Ich hoffe das hilft dir 😉
C#ler

In theory, there is no difference between theory and practice. But, in practice, there is.

The nice thing about the Java API is that if you don't like it, just wait two minutes — it will change. Doug Lyon

E
escape Themenstarter:in
5 Beiträge seit 2011
vor 12 Jahren

Hi und deine Erklärung finde ich einfach knülle 😄

Danke danke für deine Zeit ,... grins

Ich hoffe das hilft dir Augenzwinkern

Nein nicht wirklich g

Ehrlich gesagt stehe ich voll auf dem Schlauch!
Und noch ehrlicher gesagt bis vor wenigen Tagen hatte ich keine Ahnung
von Elektronik mein Board rennt dann musste ich Bascom lernen um meinen Prozi zu programmieren nun muss ich C# lernen damit ich so eine verdammte Abfrage hinbekomme. Ich bin noch etwas ehrlicher als ehrlich ich bin total ausgefrustet.

Ich mags garnicht schreiben sonst hagelt es sicherlich bösen Regen 😉
Ein Königreich für einen fertigen codeschnipsel hehehe Ich will es mal so sagen ich möchte kein komplettes C# lernen nur damit ich diese eine Abfrage gestalten kann.

Ich bin zumindest ehrlich!

In PHP wüsste ich wie ich es gestalte da würde ich die Daten aus der DB ziehen und in ein Array oder Variable schieben und dann einfach if/else elseif oder case und meinen Vergleichsoperatoren den Rutsch verarbeiten aber C# ist mir einfach nur ein Rätsel

Nur das PHP nichtmal Ansatzweise mit C# zu vergleichen ist 😃

Gruß escape

5.742 Beiträge seit 2007
vor 12 Jahren

Nur das PHP nichtmal Ansatzweise mit C# zu vergleichen ist

Zum Glück!

In PHP wüsste ich wie ich es gestalte da würde ich die Daten aus der DB ziehen und in ein Array oder Variable schieben und dann einfach if/else elseif oder case und meinen Vergleichsoperatoren den Rutsch verarbeiten

Dann mach das doch so auch in C# - im einfachsten Fall merkst du dir in einer Variablen gesendet, ob du das Zeug schonmal gesendet hast.
Diese Variable kannst du dann auch sehr gut mit if abfragen.

Und noch ehrlicher gesagt bis vor wenigen Tagen hatte ich keine Ahnung von Elektronik mein Board rennt dann musste ich Bascom lernen um meinen Prozi zu programmieren nun muss ich C# lernen damit ich so eine verdammte Abfrage hinbekomme.

Was erwartest du? Dass du in zwei Tagen Programmieren lernst?
Du musst dir wohl etwas mehr Zeit nehmen und dir in aller Ruhe ein paar Grundlagen anschauen.

Diese setzen wir hier nämlich voraus ==> Geschlossen.

Thema geschlossen