Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 2 maja 2025, o 14:13


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
    Autor Wiadomość
    PostNapisane: 15 lut 2014, o 22:29 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 cze 2013
    Posty: 137
    Lokalizacja: Kraków
    Pomógł: 0

    (przeniesione z działu programowanie C#)
    Hej
    Od jakiegoś czasu mam problem z nietypowym zastosowaniem Serial Port. Wszystkie poradniki pokazują jak wykorzystać go w celu odbierania danych w trybie terminalu, a ja potrzebuję go użyć nieco inaczej i nie mogę sobie z tym poradzić (to znaczy niby napisałem jakiś kod który działa, ale mnie zbluzgali na elektrodzie że jest brzydki i w sumie to mają rację :D). Oto co potrzebuję osiągnąć.
    Chcę napisać osobną klasę do komunikacji z AVRem na zasadzie rozkazów i odpowiedzi. Wymusza to jedną poważną rzecz: w funkcji wysyłającej komendę muszę ZATRZYMAĆ program do czasu otrzymania odpowiedzi. Tak dokładniej, to najpierw trzeba utworzyć ramkę, potem ją wysłać, a następnie odczytywać dane aż w buforze nie będzie całej ramki odpowiedzi.
    Do tego celu napisałem sobie funkcję ReadBytes, która zatrzymuje program i czeka dopóki nie odczyta zadanej ilości bajtów. Tak to wyglądało w moim pierwotnym rozwiązaniu:
    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Działać - działało, jednak mimo że nie znam się na pisaniu aplikacji okienkowych pod PC, to nawet ja widzę że to rozwiązanie jest po prostu złe ;).

    Ostatnio postanowiłem trochę to przerobić - poczytałem o zdarzeniu DataReceived i zapowiadało się całkiem fajnie, ale wyszło jak zwykle... próbowałem czegoś takiego:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Niestety podczas używania w serial_DataReceived otrzymuję błąd o indeksie spoza zakresu tablicy. W debugerze wygląda to jakby bufferindex miał przypisaną losową ujemną wartość. Zamieniłem to na coś takiego:
    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Ale efekt jest identyczny. Coś czytałem o tym że jak tworzony jest drugi wątek to nie można się w nim odnosić do kontrolek z pierwszego, ale przecież tablica i liczba to nie kontrolki :).
    Moglibyście mi coś doradzić w tym temacie? Jak najlepiej to rozegrać? Tylko proszę o wyjaśnienie jak dla laika, nigdy nie pisałem w C#, ani nie projektowałem aplikacji wielowątkowych.

    _________________
    Więcej dziwactw na: www.youtube.com/user/mopsiok



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 lut 2014, o 10:35 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 cze 2013
    Posty: 137
    Lokalizacja: Kraków
    Pomógł: 0

    Jeśli byłby ktoś zainteresowany lepszą wersją "brzydkiej wersji" :) to oto co udało mi się stworzyć:
    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    To wciąż nie to co chciałem uzyskać, ale jeśli nikt nie ma lepszego rozwiązania to chyba zostanę przy tym. Mam nadzieję że komuś się to przyda :).

    _________________
    Więcej dziwactw na: www.youtube.com/user/mopsiok



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO