C#PORT COM Opóźnienie

Programowanie w C# pod Visual Studio
ODPOWIEDZ
Pawel5
Użytkownik
Posty: 15
Rejestracja: 19 lut 2018, 17:13

C#PORT COM Opóźnienie

Post autor: Pawel5 » 05 mar 2018, 21:39

Witam.
Wysyłam numery telefonów z aplikacji c# na stm32. Mój problem polega na tym że jak szybko wysyałm jeden po drugim to stm nie wyrabia się z analizowaniem.
W jaki spsób zrobić w c# tak jakby delay? Używam VisualStudio 2017
Pozdrawiam

Awatar użytkownika
SunRiver
Administrator
Posty: 446
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: C#PORT COM Opóźnienie

Post autor: SunRiver » 05 mar 2018, 23:18

jest kilka sposobów :)

np:

Kod: Zaznacz cały


System.Threading.Thread.Sleep(5000); //czeka 5sekund 

można użyć Sleep tak:

Kod: Zaznacz cały


public static void Sleep(
	int millisecondsTimeout
)

i w kodzie np tak:

Kod: Zaznacz cały


using System;
using System.Threading;

class uzycieSleep
{
    static void Main()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Poczekaj 2 sekundy");
            Thread.Sleep(2000);
        }

        Console.WriteLine("Koniec czekania ...");
    }
}

albo użyć :

Kod: Zaznacz cały


public static Task Delay(
	int millisecondsDelay
)

co się tak używa np:

Kod: Zaznacz cały


using System;
using System.Threading.Tasks;

public class taskDelay
{
   public static void Main()
   {
      var t = Task.Run(async delegate
              {
                 await Task.Delay(1000);
                 return 42;
              });
      t.Wait();
      Console.WriteLine("Task t Status: {0}, Result: {1}",
                        t.Status, t.Result);
   }
}

No są miliony rozwiązań :)
.... z każdym bitem serca ....
💫SunDUINO
💦Google+
💦Kanał Youtube
💦Sotton

Pawel5
Użytkownik
Posty: 15
Rejestracja: 19 lut 2018, 17:13

Re: C#PORT COM Opóźnienie

Post autor: Pawel5 » 06 mar 2018, 20:27

Użyłem pierwszej opcji i problem polega na tym że zamiast odliczyć 1 sek po wysłaniu pierwszego numeru to program czeka sekunde i wysła dwa po kolei jakbym wkleił sleep na samym początku.

Kod: Zaznacz cały

private void button2_Click(object sender, EventArgs e)
        {

            if (serialPort1.IsOpen & checkBox2.Checked)
            {
                serialPort1.WriteLine("NUMER1"); //NUMER1
                serialPort1.WriteLine("\r\n");
                serialPort1.WriteLine(">");
                serialPort1.WriteLine("\r\n");         
                serialPort1.WriteLine(textBox3.Text);
                serialPort1.WriteLine("+");
                serialPort1.WriteLine("\r\n");
            }
            else if(checkBox2.Checked) MessageBox.Show("Port jest zamknięty!", "RS232Terminal", MessageBoxButtons.OK, MessageBoxIcon.Error);

            Thread.Sleep(1000);
            if (serialPort1.IsOpen & checkBox1.Checked)
            {
                serialPort1.WriteLine("NUMER2"); //NUMER2
                serialPort1.WriteLine("\r\n");
                serialPort1.WriteLine(">");
                serialPort1.WriteLine("\r\n");
                serialPort1.WriteLine(textBox4.Text);
                serialPort1.WriteLine("+");
                serialPort1.WriteLine("\r\n");
            }
            else if(checkBox1.Checked) MessageBox.Show("Port jest zamknięty!", "RS232Terminal", MessageBoxButtons.OK, MessageBoxIcon.Error);
            /*/

Awatar użytkownika
SunRiver
Administrator
Posty: 446
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: C#PORT COM Opóźnienie

Post autor: SunRiver » 06 mar 2018, 20:45

No nie dziwię się że ci tak to zadziałało
straszna konstrukcja ci wyszła i głupieje
.... z każdym bitem serca ....
💫SunDUINO
💦Google+
💦Kanał Youtube
💦Sotton

Pawel5
Użytkownik
Posty: 15
Rejestracja: 19 lut 2018, 17:13

Re: C#PORT COM Opóźnienie

Post autor: Pawel5 » 06 mar 2018, 20:50

Jeszcze raczkuję w c# i tak pomyślałem żeby pod jednym przyciskiem wysłać wszystkie numery. Może jakaś sugestia jak zrobić to elegancko? ;)

Awatar użytkownika
SunRiver
Administrator
Posty: 446
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: C#PORT COM Opóźnienie

Post autor: SunRiver » 06 mar 2018, 20:59

niemam koncepcji .. na te twoje ify strasznie dużo ...
możesz za elsować ify do 5 zagnieżdrzen ....

Kod: Zaznacz cały


if ..... 
{
...
}
else if 
{
..
}
else if
{
..
}

'''''



.... z każdym bitem serca ....
💫SunDUINO
💦Google+
💦Kanał Youtube
💦Sotton

Pawel5
Użytkownik
Posty: 15
Rejestracja: 19 lut 2018, 17:13

Re: C#PORT COM Opóźnienie

Post autor: Pawel5 » 06 mar 2018, 21:10

Właściwie sprawdzanie portu mogę zrobić tylko raz i wysyłać dane Numer1, Numer2 itd.

ODPOWIEDZ