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

Komunikacja z ATmega przez RS232 w Javie

Szczeh 25 Kwi 2010 11:25 3617 11
  • #1 25 Kwi 2010 11:25
    Szczeh
    Poziom 12  

    Witam,

    zastanawiam się nad tematem projektu i przyszedł mi taki pomysł, aby w projekcie wykorzystać komunikację mikroprocesora i komputera poprzez port szeregowy. Np. mam termometr zrobiony na atmedze, który będzie przesyłał dane do aplikacji. Aplikacja będzie określała częstotliwość pomiarów, dokładność, sporządzała wykresy temperatury w czasie itp.

    Problemem jest to, że chciałbym napisać tę aplikację w Javie, a nie wiem jak platforma wspiera komunikację z mikroprockiem. Do tej pory wyczytałem, że Java nie jest najlepszym wyborem i trzeba się trochę pomęczyć aby wszystko dobrze działało. Były to jednak pojedyncze opinie stąd nie wiem jak się do nich odnosić. Były też opinie, że C# jest lepszy od Javy jeśli chodzi o obsługę RS.

    A jakie są Wasze opinie? Jaki protokół komunikacji polecacie?

    0 11
  • Pomocny post
    #2 25 Kwi 2010 12:12
    mirekk36
    Poziom 42  

    To źle wyczytyałeś i złych opinii się nasłuchałeś. W każdym języku na PC da radę spokojnie się komunikować przez tak podstawowy i najstarszy na świecie port RS232 ;)

    Inną kwestią jest to, że trzeba się nauczyć takiego języka a jeszcze inną jest to, żeby się w danym języku nauczyć obsługiwać porty COM. Nie zaczynaj więc od tyłu, tylko najpierw spróbuj się nauczyć dowolnego wybranego jezyka czy Java czy C# i spróbuj zrobić sobie prostą na początek komunikację - to nie boli. A im więcej będziesz się tu pytał który język lepszy to tym więcej sprzecznych zdań usłyszysz. Każdy będzie chwalił swoje i to co potrafi obsługiwać. Zatem na końcu i tak dojdziesz do tego wniosku, który ci podpowiedziałem wyżej - wybierz dowolny z tych języków i weź się za praktykę zamiast tracić czas na dopytywanie, który lepszy ;) .... bo tylko do obsługi RS232 to każdy jest tak samo dobry.

    0
  • Pomocny post
    #3 26 Kwi 2010 08:27
    rmajda
    Poziom 20  

    Proszę bardzo:
    1. http://www.kuligowski.pl/java/rs232-in-java-for-windows,1

    Słowo klucz (do googla) to: javax.comm


    A kiedyś pisałem coś takiego:

    ".....

    Do komunikacji RS232 w Javie należy użyć pakietu javax.comm w wersji 2.0 gdyż wersja 3 nie jest przeznaczona do pracy w systemie windows, no chyba że ktoś używa Linuxa. Należy sobie ściągnąć pliczek javacomm20-win32.zip zainstalować u siebie w środowisku i co ważne umieścić bibliotekę win32com.dll w katalogu c:\WINDOWS\system32\ bez tego ani rusz a potem dodać adekwatny kod i hula. Pomocne są przykłady jakie dodają do paczki javacomm20-win32.zip oraz opis instalacji jaki jest zawarty w paczce.

    ...."

    0
  • Pomocny post
    #4 26 Kwi 2010 09:02
    ksarim
    Poziom 15  

    Zaproponuję Ci jeszcze coś innego. Pójdź o krok dalej :)

    Spróbuj zrealizować swój pomysł w oparciu o USB(wirtualny port COM - komunikacja po RS485). Nie jest to takie trudne jakby się mogło wydawać. Możesz wykorzystać gotowy układ:
    http://www.meraprojekt.com.pl/mp01501-c27.html
    Lub sam spróbować zbudować coś takiego w oparciu o układ FTDI.

    Aplikację bez problemu napiszesz w javie wykorzystując pakiet jd2xx
    http://bleyer.org/jd2xx/

    Moje rozwiązanie jest sprawdzone i ma kilka zalet:
    - zasięg do 1200m czyli bijesz na głowę RS232
    - komunikacja po USB więc z każdego komputera czy laptopa odpalisz swój projekt a nie tylko ze szrota z COMem :)
    - java, pakiet jd2xx, całość śmiga pod każdym systemem operacyjnym łącznie z Windows 7 więc projekt będzie przenośny.

    Projekt nie jest trudny a na pewno ma większe możliwości.

    0
  • #5 26 Kwi 2010 09:06
    atom1477
    Poziom 43  

    ksarim napisał:
    - zasięg do 1200m czyli bijesz na głowę RS232
    - komunikacja po USB więc z każdego komputera czy laptopa odpalisz swój projekt a nie tylko ze szrota z COMem :)

    USB na 1200m?
    Chyba niedokładnie wyjaśniłeś o co Ci chodzi ;)

    0
  • #6 26 Kwi 2010 09:19
    ksarim
    Poziom 15  

    Jak to nie :)

    ksarim napisał:
    USB(wirtualny port COM - komunikacja po RS485)


    Oczywiście tradycyjne USB nie ma takiego zasięgu.

    Urządzenie będzie podłączane pod USB. System będzie widział to urządzenie jako wirtualny port COM. Układem do transmisji danych jest MAX485 więc zasięg transmisji wynosi 1200m. Na końcu linii wystarczy drugi taki scalak i z punktu programowego nie ma praktycznie różnicy czy jest to RS232 czy RS485 ale różnica w zasięgu transmisji na pewno jest znacząca.

    0
  • #7 26 Kwi 2010 10:33
    atom1477
    Poziom 43  

    No teraz lepiej ;)
    Nie napisałeś gdzie ma być ten konwerter więc ktoś mógł pomyśleć że będzie 1200m kabla USB a dopiero na końcu RS485.

    0
  • #8 27 Kwi 2010 13:03
    Szczeh
    Poziom 12  

    A co do tego Konwertera USB-RS485 na FT232RL, to ile on kosztuje? Bo w projekcie planuję dodanie większej ilości czujników: np. czujnik ruchu, światła.. Czy ten konwerter nadaje się do tego rozwiązania? Najlepiej gdyby był taki konwerter, który miałby możliwość podłączenie większej ilości czujników. Np. trzy czujniki podłączone do jednego konwertera, konwerter do portu usb komputera.

    Myślałem też nad podłączaniem każdego z czujników do jakiegoś większego procka - mastera. Master z kolei podłączony do konwertera. Czy znacie jakieś przykładowe układy, w których taką komunikację zrealizowano? Chodzi mi o to jak mając tylko dwa porty przeznaczone do komunikacji (RX, TX), podłączyć więcej czujników (slave'ów).

    0
  • #9 27 Kwi 2010 13:33
    utak3r
    Poziom 25  

    Jeśli myślisz o większej ilości czujników, to rzeczywiście RS485 staje się bardzo dobrym wyborem (komunikacja właśnie tylko dwoma "drutami" + zasilanie) - jednak będziesz musiał to oprogramować, po obu stronach. Urządzenia adresowalne, odpowiadające na broadcast itp. Ew. OneWire, ale to już zależy od tego, co chcesz podłączać...

    0
  • #10 27 Kwi 2010 14:03
    ksarim
    Poziom 15  

    Konwerter kosztuje około 70zł z wysyłką. Nawet na allegro możesz go znaleźć. Jeżeli nie potrzebujesz tego w ładnej obudowie to oczywiście można coś takiego samemu zrobić i na pewno będzie taniej.

    Do tego dochodzi koszt każdego takiego punktu pomiarowego: procek, scalak do RS485 czujniki itd.

    RS485 jest idealnym rozwiązaniem dla Ciebie. Możesz zrealizować kilka punktów pomiarowych z których każdy może być wyposażony w różne czujniki i podłączony do pary przewodów o łącznej długości do 1200m.

    W komputerze zbierałbyś dane a komunikacja mogła by się odbywać właśnie na zasadzie adresowania i odpytywania poszczególnych punktów pomiarowych(adresów) o wartości pomiarów.

    0
  • #11 27 Kwi 2010 23:07
    p_zag
    Poziom 13  

    Witam
    A ja bym proponował skorzystać z programu napisanego w javie w programie NetBeans IDE 6.8, który dokładnie pasuje do tematu "Komunikacja z ATmega przez RS232 w Javie". Jest to mój artykuł zawierający opis w formie obrazków( NetBeansRXTX_obrazki.zip ), jak podłączyć potrzebną bibliotekę "rxtx-2.1-7-bins-r2.zip" ,jest tam gotowy działający program "portRS232_wzor.zip " i pusta formatka z podłączoną biblioteką xrtx przeznaczona do własnych eksperymentów. Nawiasem mówiąc tworzyłem tą aplikacje w javie w celu połączenia się z Atmegą8.
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=1558278&highlight=

    Piotr

    0
  • #12 07 Maj 2010 16:38
    romario4
    Poziom 16  

    ksarim napisał:

    Aplikację bez problemu napiszesz w javie wykorzystując pakiet jd2xx
    http://bleyer.org/jd2xx/

    Moje rozwiązanie jest sprawdzone i ma kilka zalet:
    - zasięg do 1200m czyli bijesz na głowę RS232
    - komunikacja po USB więc z każdego komputera czy laptopa odpalisz swój projekt a nie tylko ze szrota z COMem :)
    - java, pakiet jd2xx, całość śmiga pod każdym systemem operacyjnym łącznie z Windows 7 więc projekt będzie przenośny.

    Projekt nie jest trudny a na pewno ma większe możliwości.

    Witam!
    A czy ma ktoś jakieś doświadczenie z użyciem tej biblioteki pod linuxem. Skąd mam wziąść odpowiednik biblioteki dll dla linuxa?

    0