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 15 kwi 2025, o 16:59


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
    Autor Wiadomość
    PostNapisane: 31 sty 2013, o 16:01 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 21 gru 2012
    Posty: 161
    Pomógł: 9

    Poczytałem tematy SunRiver`a o sterowaniu SunDuino przy pomocy RS232 i aplikacji na komputerze.

    Jako, że z C++ miałem mało styczności, jednak miałem jakieś podstawy C# postanowiłem stworzyć podobny program.

    Instalacja środowiska programistycznego jest już opisana w tym temacie:
    http://forum.atnel.pl/topic95.html

    Mam darmowy (akademicki) dostęp do pełnej wersji oprogramowania Visual Studio 2012. I właśnie w tym środowisku piszę. Jednak w naszym przypadku raczej nie będzie różnicy w pisaniu programu. W Visual Express 2010 też spokojnie można tworzyć w C#.
    Właściwie nie ma dużych różnic pomiędzy C++ a C#. Zresztą każdy kto porówna kody zobaczy o co chodzi.

    Nie jest to poradnik, tylko pokazanie możliwości i przykładowy program.
    Jeśli ktoś się zainteresuje napisaniem własnego programu służę pomocą.

    **************** ATMEGA
    Zacznę od wsadu na Atmegę 16 taktowaną 8MHz:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Jak widać kod jest prościutki, zawiera jedynie inicjalizację USART oraz odebranie danych i odesłanie ich w niezmienionej formie.
    Nie będę się rozwodził co służy do czego. Kilka komentarzy jest w programie, reszta elegancko opisana w książkach P. Mirka ;)


    ****************************** VISUAL STUDIO
    Teraz przechodzimy do okienek :)

    W sposób podany TUTAJdodajemy kolejne przyciski, opisy i textboxy.
    Trzeba pamiętać o dodaniu Timer oraz SerialPort z Components (jest to opisane w powyższym linku, nie różni się niczym tworzenie formy dla C# i C++).
    U mnie gotowa forma wygląda tak:
    Obrazek

    Opiszę funkcje zaczynając od góry:
    - w okienko SEND wpisuje się ciąg znaków do wysłania
    - przycisk wyślij (który przy braku połączenia jest nieaktywny) wysyła podany ciąg znaków
    ... - można również wysłać wpisane znaki wpisując tekst oraz naciskając ENTER
    - okienko podpisane jako RECEIVE pokazuje odebrane znaki (w przypadku naszego programu na atmedze będzie to echo wysłanych danych)
    - checkbox +CLR każe nie dodawać kolejne znaki do odebranych, tylko przed odebraniem znaków czyści bufor odebranych danych (niżej zobaczycie jak to zrobiłem - ile programistów tyle sposobów)
    - przycisk WŁĄCZ służy do wysyłania ciągu START oraz STOP do urządzenia, może to służyć do startowania jakiejś funkcji w urządzeniu (np. włącza diodę LED) --- w naszym przypadku nie robi nic, START/STOP zostanie odesłany do komputera.
    - grupa RS232 Setup służy do wybrania portu COM z okienka Port: oraz do włączenia/wyłączenia komunikacji.

    Główny plik w którym dokonywałem jakichkolwiek zmian wygląda tak:
    Obrazek
    Jak widać wszystko jest pięknie zamknięte w REGIONACH, przez co kod jest bardzo przejrzysty.

    Jest może trochę chaos, ale to tylko pozory :P

    Na początek trzeba wiedzieć, gdzie kryje się obsługa portu rs232. Czyli której biblioteki użyć.
    Wszystkie potrzebne informacje znajdziemy dosyć dobrze opisane na stronach M$. Obsługa COM jest tutaj:
    http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx

    Bibliotekę należy dodać na końcu wszystkich standardowych bibliotek w ten sposób:
    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




    Myśl, że reszta kodu jest na tyle dobrze opisana w komentarzach, że po prostu wkleję go tutaj:
    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.


    Ten kod może posłużyć spokojnie do zrobienia dowolnej aplikacji korzystającej z RS232.
    - Może to być włączanie poszczególnych pinów przez wciskanie odpowiednich przycisków (które mogą zmieniać kolor zależnie od tego czy pin jest włączony czy wyłączony).
    - Może to być odbieranie dowolnych danych (jak prosty woltomierz zrobiony przez SunRiver) - zresztą w C# banalnie można dane z adc wyświetlić na diagramie (biblioteka Chart). - trochę więcej pisania kodu związanego z parsowaniem danych. Wystarczy poczytać trochę tutaj: http://social.msdn.microsoft.com/Search/en-US?query=C%23%20chart&ac=8
    - Można obsługiwać wychylenie serw (ramię robota? :)).

    wymieniać można bez końca... wszystko rozbija się o zrozumienie mechanizmu działania połączenia przez USART (RS232).


    Tutaj znajduje się pełny projekt z visual studio 2012:
    https://dl.dropbox.com/u/412268/Elektronika/atnel_forum/Projekty/Visual%20Studio/rs232%20test.zip

    W paczce znajduje się też gotowy program (w rs232test -> bin -> Release -> rs232 test.exe).

    Na koniec dodam jeszcze krótki filmik prezentujący działanie programu:


    Najważniejszą sprawę zostawiłem na koniec!
    Program w tym momencie jest napisany banalnie, nie zawiera obsługi błędów. Więc jeśli coś pójdzie nie tak to się po prostu wykrzaczy!
    Najprostszy przykład -> wpiszcie jako port COM taki jakiego nie macie w komputerze, wyskoczy brzydki błąd!
    Dlatego zalecam zapoznanie się z TRY/CATCH. Nie jest to trudne ale wymaga kilku dodatkowych linijek kodu, który już i tak może sprawiać pewne problemy.

    Pozdrawiam i miłej zabawy życzę! :)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sty 2013, o 16:07 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    no i brawo :)
    kolego

    a jak chcesz to masz tu jeszcze w C# zabawę z servem :)

    topic93.html

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sty 2013, o 16:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 lut 2012
    Posty: 778
    Pomógł: 9

    Doman bardzo fajny projekt, ale zmień filmik na YouTube na publiczny, bo jest na prywatny :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sty 2013, o 16:59 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 21 gru 2012
    Posty: 161
    Pomógł: 9

    osa1313: Nie wiem czemu poleciał jako prywatny :P już zmienione :) dzięki :)
    SurRiver: widziałem :) bardzo fajny projekt :)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sty 2013, o 17:14 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27373
    Lokalizacja: Szczecin
    Pomógł: 1043

    sam będę musiał looknąć w te źródełka - eeeeeh tylko tego czasu zawsze brak ;)

    fajny kawałek roboty ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sty 2013, o 19:32 
    Offline
    Użytkownik

    Dołączył(a): 18 paź 2012
    Posty: 244
    Pomógł: 2

    O widzisz!

    Sam ostatnio mam zamiar zrobić sobie taki programik...Ale w Javie. Masz może jakieś fajne sprawdzone poradniki do komunikacji RS-232 - PC przez aplikacje w Javie? Bo na necie jest pełno ale konkretów jak zwykle brak :(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sty 2013, o 19:45 
    Offline
    Użytkownik

    Dołączył(a): 15 lut 2012
    Posty: 344
    Lokalizacja: Bydgoszcz
    Pomógł: 11

    Kolego kiclaw tutaj(http://www.gmmobile.pl/index.php?option ... a&Itemid=5) masz bardzo fajnie opisany RS232 w Javie(Środowisko Netbeans) w oparciu o biblioteki RXTX. Jak czas pozwoli to sam się nią zainteresuję...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lut 2014, o 18:59 
    Offline
    Nowy

    Dołączył(a): 10 lut 2014
    Posty: 1
    Pomógł: 0

    Tworząc własny terminal chciałem wykorzystać Twój program, ale w ogóle nie reaguje na odbiór i przesył danych. Program na avr działa, sprawdzony z innym terminalem. Mam Visual Studio 2008 i Framework 3.5, czy to może być przyczyna?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lut 2014, o 19:11 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    gengerenge napisał(a):
    Tworząc własny terminal chciałem wykorzystać Twój program, ale w ogóle nie reaguje na odbiór i przesył danych. Program na avr działa, sprawdzony z innym terminalem. Mam Visual Studio 2008 i Framework 3.5, czy to może być przyczyna?


    zobacz to:

    topic5520.html

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 kwi 2017, o 14:06 
    Offline
    Nowy

    Dołączył(a): 19 kwi 2017
    Posty: 3
    Pomógł: 0

    Witam,
    zacząłem używać klasy SerialPort i mam kłopot w takim prostym programie


    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Do drukarki dolatują obcięte dane, zawsze brakuje kilka końcowych znaków.
    Ale jeśli wykomentuję zamykanie portu

    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    to działa dobrze. Jednak to obejście jest nie do przyjęcia.

    Chyba coś nie tak z opróżnianiem bufora.

    Co zrobić żeby dane nie były obcinane?

    ===================
    Rozwiązanie: przed port.close() dałem 100ms zwłoki "czynnej", takiej z Application.DoEvents() i działa.
    Wygląda na to że system operacyjny zamykał port zanim dane opuściły bufor.
    Czas 20ms to za mało, 50ms wystarcza, dałem 100ms.
    Może to zresztą zależeć od wielkości bufora i ilości danych.

    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 kwi 2017, o 17:45 
    Offline
    Użytkownik

    Dołączył(a): 10 lip 2015
    Posty: 334
    Pomógł: 32

    Składnia: [ Pobierz ] [ Ukryj ]
    język csharp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    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: 11 ] 

    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