Laden...

Timer benutzen?

Erstellt von blue31084 vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.464 Views
B
blue31084 Themenstarter:in
67 Beiträge seit 2007
vor 15 Jahren
Timer benutzen?

hallo,

erst mal zu meinem programm:

mein programm sendet und empfängt, die beiden sachen funktionieren auch so wie es sein solll.

nun will ich dass alle paar sekunden ein zeichen vom c# programm an einen mikrocontroller geschickt wird damit dieser weiss, dass das programm noch da ist und nicht abgestürzt ist.

nun meine frage kann ich da einen timer benutzen?

meine überlegung war folgendes:


private void timer1_Tick(object sender, EventArgs e)   
        {
           while (comport.IsOpen)
            {
                comport.Write(new byte[] { 112 } , 0, 1);
            }
         }

aber dies geht ja gar nicht weil er dann in der endlosschleife sitze
un den rest nicht bearbeitet

wie könnte ich es lösen dass er regelmäßig ein zeichen sendet?

danke schonmal

104 Beiträge seit 2006
vor 15 Jahren

private void timer1_Tick(object sender, EventArgs e)
{
if(comport.IsOpen)
{
comport.Write(new byte[] { 112 } , 0, 1);
}
}

wenn du statt "While" "if" schreibst sollte es gehen 😉

W
558 Beiträge seit 2006
vor 15 Jahren

Der Timer wäre schon die richtige Lösung, die while-Schleife muss aber weg.

Etwa so:


private void timer1_Tick(object sender, EventArgs e) 
{
  if (comport.IsOpen)
  {
    comport.Write(new byte[] { 112 } , 0, 1);
  }
}

mfg
webstarg

B
blue31084 Themenstarter:in
67 Beiträge seit 2007
vor 15 Jahren

oh man natürlich

ok man hat ja manchmal n brett vor dem kopf

danke danke

B
blue31084 Themenstarter:in
67 Beiträge seit 2007
vor 15 Jahren

jetzt muss ich noch verhindern dass ein konflikt ensteht mit dem zeichen, welchen regelmäßig gesendet wird und dem byte wasfür den programmablauf gesendet werden muss.

kann man dann irgendwie den timer zurücksetzen, wenn ein byte gesendet wird,

wenn ja wie?
so siehts ja aus


private void timer1_Tick(object sender, EventArgs e)    
        {
           if (comport.IsOpen)
            {
                comport.Write(new byte[] { 112 } , 0, 1);
            }


comport.Write(new byte[] { umgewandelt, umgewandelt1 } , 0,2 );

hoffe auf hilfe

265 Beiträge seit 2006
vor 15 Jahren

du könntest timer1.enabled auf false setzen, und das eigentliche senden um ein paar milisekunden verzögern (2. timer). danach halt den timer1 wieder enablen.

-=MasterMax=-

2.082 Beiträge seit 2005
vor 15 Jahren

Hallo blue31084,

zur Not würde es wohl eine Zählvariable tun:

int counter = 0;

private void timer1_Tick(object sender, EventArgs e)
        {
           if(counter % 10 > 0) {
              counter++;
              if (comport.IsOpen)
              {
                   comport.Write(new byte[] { 112 } , 0, 1);
              } 
        }
else {
counter = 0;
//Was anderes machen
        }
}

//Edit geschweifte klammer an der falschen stelle

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

B
101 Beiträge seit 2008
vor 15 Jahren

Warum fragst du nicht einfach direkt über die Eigenschaft Socket.Connected ab, ob noch eine Verbindung steht ?

mfg
bluedragon

Man muss viel gelernt haben, um nach etwas, worüber man nicht Bescheid weiß, richtig fragen zu können.

Wenn du jemandem vertrauen kannst, erübrigt sich ein Vertrag. Kannst du ihm nicht vertrauen, ist ein Vertrag nutzlos.

B
blue31084 Themenstarter:in
67 Beiträge seit 2007
vor 15 Jahren

danke ich werde eure vorschläge mal überdenken und ausprobieren
vielen dank schonmal
bei problemen melde ich mich noch mal

B
blue31084 Themenstarter:in
67 Beiträge seit 2007
vor 15 Jahren

hallo bluedragon

was genau ist die die Eigenschaft Socket.Connected ?
was amcht diese?
und wie wende ich sie an?

2.082 Beiträge seit 2005
vor 15 Jahren

was genau ist die die Eigenschaft Socket.Connected ?
was amcht diese?
und wie wende ich sie an?

Socket.Connected-Property

Gets a value that indicates whether a Socket is connected to a remote host as of the last Send or Receive operation.

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de