logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

C# - Odczyt portu com / przerwanie programu przyciskiem

karolkus 16 Gru 2015 23:52 1515 5
REKLAMA
  • #1 15247325
    karolkus
    Poziom 11  
    Posty: 18
    Ocena: 1
    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: C#
    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]
  • REKLAMA
  • #2 15247555
    kornik280
    Poziom 18  
    Posty: 466
    Pomógł: 36
    Ocena: 14
    Tak tego się napewno nie robi.
    Wykorzystaj event który będzie odpalany gdy dostaniesz nową ramkę, np.
    Kod: C#
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 15249104
    karolkus
    Poziom 11  
    Posty: 18
    Ocena: 1
    kornik280 napisał:
    Tak tego się napewno nie robi.
    Wykorzystaj event który będzie odpalany gdy dostaniesz nową ramkę, np.
    Kod: C#
    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).
  • REKLAMA
  • #4 15272117
    karolkus
    Poziom 11  
    Posty: 18
    Ocena: 1
    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: C#
    Zaloguj się, aby zobaczyć kod
    Załączniki:
    • C# - Odczyt portu com / przerwanie programu przyciskiem com.jpg (30.09 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #5 15272323
    kornik280
    Poziom 18  
    Posty: 466
    Pomógł: 36
    Ocena: 14
    Spróbuj w taki sposób:
    Kod: C#
    Zaloguj się, aby zobaczyć kod


    gdzie Buffer to jest tablica bajtów.
  • #6 15272366
    karolkus
    Poziom 11  
    Posty: 18
    Ocena: 1
    kornik280 napisał:
    Spróbuj w taki sposób:
    Kod: C#
    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: C#
    Zaloguj się, aby zobaczyć kod


    na

    Kod: C#
    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
    Załączniki:
    • C# - Odczyt portu com / przerwanie programu przyciskiem com2obrazek2.jpg (39.85 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • C# - Odczyt portu com / przerwanie programu przyciskiem com2obrazek.jpg (17.65 KB) Musisz być zalogowany, aby pobrać ten załącznik.
REKLAMA