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:
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:
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: Jak widać wszystko jest pięknie zamknięte w REGIONACH, przez co kod jest bardzo przejrzysty.
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).
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.
_________________ 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]
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
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?
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?
_________________ 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]
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.
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