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
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 😉
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
oh man natürlich
ok man hat ja manchmal n brett vor dem kopf
danke danke
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
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=-
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
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.
danke ich werde eure vorschläge mal überdenken und ausprobieren
vielen dank schonmal
bei problemen melde ich mich noch mal
hallo bluedragon
was genau ist die die Eigenschaft Socket.Connected ?
was amcht diese?
und wie wende ich sie an?
was genau ist die die Eigenschaft Socket.Connected ?
was amcht diese?
und wie wende ich sie an?
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