Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C# - Odczyt portu com / przerwanie programu przyciskiem

16 Gru 2015 23:52 1065 5
  • Poziom 9  
    Cześć,

    Jest sobie arduino które odczytuje z kilku analogowych czujników i wysyła to przez usb.


    Stworzyłem taki programik w visual studio:

    jedno okno jeden label przyciski otworz port odczytaj i ostatni zamknij.

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Program się odpala etykietka przyjmuje wartość wysyłaną przez arduino. ale oczywiście nic poza tym nie mogę zrobić (po wciśnięciu odczyt program chodzi w pętli)
    Wiem ze wypadało by ta pętle odpalić jako dodatkowy watek. niemniej nie znalazłem żadnego ładnego opisu jak to zrobić (a niestety nigdy wcześniej się wątkami nie zajmowałem)[/code]
  • Poziom 18  
    Tak tego się napewno nie robi.
    Wykorzystaj event który będzie odpalany gdy dostaniesz nową ramkę, np.
    Kod: csharp
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    kornik280 napisał:
    Tak tego się napewno nie robi.
    Wykorzystaj event który będzie odpalany gdy dostaniesz nową ramkę, np.
    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Dzieki serdeczne za ta propozycje dzisiaj jak dzieci zasna wyprobuje ja :)
    zastanawia mnie czy nie będzie problemu bo kilkanaście razy na sekundę jest odczyt wysylany (jedna linijka).
  • Poziom 9  
    kornik280 napisał:
    ...Wykorzystaj event który będzie odpalany gdy dostaniesz nową ramkę, ...


    Oki pokombinowałem trochę dopiero dzisiaj. Nawet jakoś działa. niemniej nie wiem dlaczego pierwsza linia wyświetlana jest prawidłowo a następne są ucinane dla lepszego zobrazowania problemu zrobiłem screena z listboxem (docelowo będzie się to wyświetlało w etykiecie - labelu). Dodam ze arduino wysyła pełne linie tak jak ta pierwsza przy podglądzie terminalem tez jest ok.

    zródło wygląda tak:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod
  • Poziom 18  
    Spróbuj w taki sposób:
    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    gdzie Buffer to jest tablica bajtów.
  • Poziom 9  
    kornik280 napisał:
    Spróbuj w taki sposób:
    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    gdzie Buffer to jest tablica bajtów.


    Dzięki za podpowiedz. Niemniej szukając informacji o SerialPort.Read natknąłem się na SerialPort.ReadLine()
    po zamianie :

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    na

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    teraz zostało mi tylko każda linie rozbić na 6 części i zacząć je wyświetlać w labelach ale to już powianiem ogarnąć:) Jednak 10 lat przerwy w programowaniu i zmiana środowiska z dobrze mi znanego obiektowego Pascala na C # robi swoje.
    Windows 10 nie przestanie mnie zaskakiwać. Nie mogłem w paincie nazwac obrazka jako com2 - zarezerwowana nazwa