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

[java][rs232]Port szeregowy i Netbeans, czas zacząć.

28 Sty 2010 17:24 14482 8
  • Poziom 14  
    Witam wszystkich.
    Długo szukałem w internecie i tu na forum czegoś na temat portu szeregowego rs232.
    Znalazłem głównie aplikacje i kody na konsole(czarny ekran i białe napisy) to tak jakby w epoce okienkowych systemów (np. Windows XP) cofać się do starego poczciwego DOS'a. Dlatego postanowiłem podzielić się z wami owocem moich ponad półrocznych poszukiwań.
    Napisałem w Netbeans'e program do komunikacji z portem szeregowym RS232, jest to całkowicie okienkowa aplikacja.
    [java][rs232]Port szeregowy i Netbeans, czas zacząć.
    Testowałem ją na tzw. "echo" - loopback i działa bez zarzutu.
    [java][rs232]Port szeregowy i Netbeans, czas zacząć.
    Tak wygląda kompilacja mojej aplikacji.
    [java][rs232]Port szeregowy i Netbeans, czas zacząć.
    A to jest uruchomienie aplikacji w środowisku Netbeans.
    [java][rs232]Port szeregowy i Netbeans, czas zacząć.
    Nie jestem literatem, dlatego nie będę się rozpisywał jak napisać własną aplikację, jak w Netbeans zainstalować potrzebne biblioteki RxTx(rxtx-2.1-7-bins-r2) , oraz jak uruchomić własną aplikację poza środowiskiem Netbeans.
    Zamiast tego stworzyłem katalog z obrazkami, które po kolei pokazują co i jak robiłem to -> NetBeansRXTX_obrazki.zip
    Katalog o którym mówią te obrazki to -> portRS232.zip
    Potrzebne biblioteki to -> rxtx-2.1-7-bins-r2.zip
    Tu jest katalog z wzorcową działającą aplikacją to -> portRS232_wzor.zip
    A tu katalog z plikiem typu jar (i inne potrzebne pliki) który uruchamia się po za środowiskiem Netbeans to -> start java.zip

    Przyjemnej pracy przy tworzeniu własnej aplikacji na RS232
    Piotr Zagrodzki
  • Poziom 13  
    Witam a w jakim pliku znajduje się obsługa portu RS, wrzuciłem pliki do NetBeans i niestety mam tylko gołe okienko bez buttonów i reszty.
    Będę wdzięczny za okazaną pomoc
    Pozdrawiam
  • Poziom 14  
    Witam
    dannnek napisał:
    Witam a w jakim pliku znajduje się obsługa portu RS, wrzuciłem pliki do NetBeans i niestety mam tylko gołe okienko bez buttonów i reszty.

    Wszystko masz w pliku "portRS232_wzor.zip" są tam buttony i cała reszta aplikacji gotowej do komunikacji z portem Rs232. Po rozpakowaniu skopiuj plik "portRS232_wzor\dist\portRS232_wzor.jar" do rozpakowanego pliku "start java.zip".
    Powinno być tak: start java\portRS232_wzor.jar(powinien być też katalog lib i plik "rxtxSerial.dll") i uruchom portRS232_wzor.jar - ukarze się okienko aplikacji z buttonami i całą resztą.
    Plik "portRS232.zip" jest tylko swego rodzaju bazą dla własnych eksperymentów (ma już podłączoną bibliotekę obsługi portu RS232), dlatego jest to pusta formatka do której trzeba dołożyć własne buttony i inne elementy, oraz procedury obsługi portu. Możesz się wzorować na moim pliku "portRS232_wzor.zip", a możesz wzorować się np.
    http://embeddedfreak.wordpress.com/java-serial-port-trail/
    http://www.java2s.com/Code/JavaAPI/javax.comm...dEventListenerSerialPortEventListenerarg0.htm
    http://www.java-samples.com/showtutorial.php?tutorialid=11
    http://www.captain.at/howto-java-serial-port-javax-comm-rxtx.php
    http://blog.dariorsl.info/
    jest to zaledwie kilka stron z których ja korzystałem

    Piotr
  • Poziom 13  
    Niewątpliwie pomogłeś, materiał moim zdaniem nadaje się na jakiś fajny toturial, jakbyś dodał jeszcze instrukcje (obrazki) jak wyklikać cały program to było by już bosko :)
    Pozdrawiam

    Dodano po 13 [sekundy]:
  • Poziom 14  
    dannnek napisał:
    ... materiał moim zdaniem nadaje się na jakiś fajny toturial, jakbyś dodał jeszcze instrukcje (obrazki) jak wyklikać cały program to było by już bosko :)

    No cóż jest to możliwe, ale będzie to duuużo obrazków. Jak będę miał więcej czasu to taki "obrazkowy samouczek" zrobię.
  • Poziom 11  
    Jedno pytanko czy ta biblioteka smiga pod linuchami ???
  • Poziom 16  
    prim0 napisał:
    Jedno pytanko czy ta biblioteka smiga pod linuchami ???

    Tak, przynajmniej na Ubuntu.

    p_zag napisał:
    Testowałem ją na tzw. "echo" - loopback i działa bez zarzutu.

    A jak z polskimi znakami, tzn. naciskasz 'ą' i wyświetla też 'ą'?
  • Poziom 10  
    Nie umiem uruchomić tego pod Ubuntu.

    W NetBeans otworzyłem projekt portRS232_wzor.
    Dodałem bibliotekę RXTXcomm.
    Usunąłem plik rxtxSerial.dll.
    Dodałem odpowiadający powyższemu plik librxtxSerial.so.
    Wykonałem Clean and Build.
    Po uruchomieniu przyciskiem Run dostaję coś takiego zamiast okienka, czyli tak jakby potrzebowal tego pliku rxtxSerial.dll albo mi się zdaje.
    [java][rs232]Port szeregowy i Netbeans, czas zacząć.
    Możecie podpowiedzieć co robię źle, jak uruchomić ten program?

    EDIT:
    poradzilem sobie (chyba) przez zainstalowanie rxtx przez synaptica.
    teraz mam takie coś:
    [java][rs232]Port szeregowy i Netbeans, czas zacząć.
    to oznacza, że nie mam żadnego portu szeregowego?
    w czasie uruchamiania mam podłączony telefon przez wirtualny rs232 po bluetoothie widziany jako plik /dev/rfcomm0. jeśli faktycznie ten wyjątek oznacza brak portów to wiecie co musiałbym zmienić żeby to zauważył?
    podstawiłem 0 pod int numports i też nie zadziałało, jak dałem 1 to odpaliło się okienko.

    EDIT2:
    Dalszy ciąg zmagań. Wyguglowałem, że nie standardowo nie rozpozna mi portu rfcomm. Trzeba by modyfikować bibliotekę, a konkretnie klasę RXTXCommDriver. Wyczytałem to tutaj: Link.
    Tylko że teraz mam kłopot z podmianą tej klasy. Ściągnąłem z podanego tam linku plik z klasą, dopisałem rfcomm gdzie trzeba i próbowałem kompilować , ale wywala mi 19 błędów. Mógłby mi ktoś teraz powiedzieć jak to zrobić?

    EDIT3:
    Pojawia się dalszy problem. Podłączyłem przejściówkę USB<->RS232, którą system widzi jako /dev/ttyUSB0. I niestety program dalej nie działa, nie mam teraz jak podłączyć tego teraz, ale pokazywało coś podobnego jak na drugim zrzucie ekranu. Wydaje mi się, że wciąż chodziło o
    Code:
    portList = new String[numports];

    gdzie w tym przypadku numports chyba będzie równe 0. też zmieniałem tą zmienną na 0 na początku, uruchamiało się okienko, ale tam niewidziany był port. Uruchomilem ten programik
    Code:

    package rs232;

    import gnu.io.CommPortIdentifier;
    import java.util.Enumeration;

    public class lista {

      public void list() {
          Enumeration porty = CommPortIdentifier.getPortIdentifiers();

          while(porty.hasMoreElements())
              System.out.println(((CommPortIdentifier)porty.nextElement()).getName());
      }

      public static void main(String[] args) {     
         new lista().list();
         //pokazuje katalogi z bibliotekami
          System.out.println(System.getProperty("java.library.path"));
      }
    }

    ze strony Link i on rozpoznał tą przejściówkę, pokazał w konsoli ttyUSB0.
  • Poziom 9  
    Bardzo fajna aplikacja.

    Jest tylko jeden problem na który zwrócił uwagę daniel488 w funkcji getPorts() pomijany jest ostatni element w momencie gdy tablica jest kopiowana.

    Code:

     private void getPorts() {
        ...
             numports = -1;

    ...         
        portList = new String[numports];
            for (int i = 0; i <= numports; i++) {
                portList[i] = tempPortList[i];
            }
        }


    numports to indeks ostatniego elementu, czyli nowa tablica powinna mieć rozmiar o 1 więcej.

    No i druga sprawa, to czemu w funkcji odbioru, po każdym dopisaniu do pola tekstowego jest wstawiany znak nowej linii? Według mnie do nadawca powinien decydować kiedy ma być nowa linia. Teraz gdy wysyła się ciąg znaków to jest on w losowych momentach przerywany znakiem nowej linii.