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



Teraz jest 29 lis 2024, o 08:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 4 kwi 2014, o 21:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sie 2012
Posty: 52
Lokalizacja: Toruń
Pomógł: 1

Witam wszystkich.
Dzisiaj zajmiemy się zajmiemy się pisaniem procedur, tworzeniem zdarzeń(events), oraz kosmetyką(dodaniem obrazków, itp).
Po ustawieniu w panelu tworzenia naszej aplikacji zakładki „Source”(zakładka z kodem) należy wkleić kod pomiędzy klamrę ( „}”) ostatnią kończąca klasę główną naszej aplikacji, a klamrę („}//koniec”) kończącą funkcję „ListaPortow()”.
Obrazek
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Są to procedury do obsługi portu RS232: otwarcia portu, wysyłki danych, odbioru danych, zamknięcia portu. Analizę tych procedur zastawiam jako zadanie domowe, dopowiem tylko, że w procedurze „public void serialEvent(SerialPortEvent arg0) { … }” są cyklicznie odbierane dane tym zdarzeniem „case SerialPortEvent.DATA_AVAILABLE:”.Teraz należałoby dopisać kilka zmiennych związanych z powyższymi procedurami. W miejscu zaznaczonym na rysunku poniżej.
Obrazek
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Musimy jeszcze dodać nasłuchiwacza portu czyli w miejscu jak na rysunku
Obrazek
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Teraz zajmiemy się mnóstwem żaróweczek z czerwonym krzyżykiem po prawej stronie naszego panelu. Zaczynam y od samej góry klikając(LPM) na żaróweczkę (przeważnie dodawanie bibliotek – pierwsza opcja(LPM dwuklik). Gdy po dodaniu interfejsu „SerialPortEventListener” pojawi się nam automatycznie wygenerowana procedura
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

należy ją usunąć, bo prędzej tą procedurę wkleiliśmy do naszego kodu (procedura odbierająca dane z portu). I dalej klikając(LPM) na żaróweczkę (przeważnie dodawanie bibliotek – pierwsza opcja(LPM dwuklik), na razie nic nie robić z żółtymi żaróweczkami z wykrzyknikiem. Jest ich trzy przy zmiennych – informują, że te zmienne nie są jeszcze używane.
Obrazek
Musimy jeszcze wkleić kawałek kody ko konstruktora w miejscu jak na rysunku poniżej.
Obrazek
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Teraz przyszedł czas na zdarzenia(events) czyli na komunikację z użytkownikiem. W tym celu przechodzimy zakładkę „Design” w panelu tworzenia naszej aplikacji (zakładka na której budujemy naszą aplikację) i zaznaczamy komponent o nazwie „comboBox” i w „Structure -> Properties” klikamy na klawisz zdarzeń jak na rysunku poniżej.
Obrazek
Szukamy zdarzenia „item -> stateChanged” i klikamy na nim(LPM dwuklik). Eclipse przerzuci nas do zakładki pisania kodu („Source”) do tego zdarzenia w celu wpisania kodu. To też to czynimy i wpisujemy poniższy kod
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Przechodzimy na zakładkę „Design” w panelu tworzenia naszej aplikacji (zakładka na której budujemy naszą aplikację) zaznaczamy komponent o nazwie „comboBox_1” (zdarzenia są już zaznaczone) i postępujemy tak samo jak wyżej wpisując
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Przechodzimy na zakładkę „Design” w panelu tworzenia naszej aplikacji (zakładka na której budujemy naszą aplikację) i zaznaczamy komponent o nazwie „btnNewButton” (zdarzenia są już zaznaczone). Szukamy zdarzenia „action -> performed” i klikamy na nim(LPM dwuklik). Eclipse przerzuci nas do zakładki pisania kodu („Source”) do tego zdarzenia w celu wpisania kodu. To też to czynimy i wpisujemy poniższy kod
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Przechodzimy na zakładkę „Design” w panelu tworzenia naszej aplikacji (zakładka na której budujemy naszą aplikację) zaznaczamy komponent o nazwie „btnNewButton _1” (zdarzenia są już zaznaczone) i postępujemy tak samo jak wyżej wpisując
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Na koniec dodajmy jeszcze zdarzenie zamykające port, gdy z jakiś przyczyn zamkniemy naszą aplikację krzyżykiem zamknięcia programu. Przechodzimy na zakładkę „Design” w panelu tworzenia naszej aplikacji (zakładka na której budujemy naszą aplikację) zaznaczamy formatkę (najlepiej na belce formatki). Szukamy zdarzenia „window -> closing” i klikamy na nim(LPM dwuklik). Eclipse przerzuci nas do zakładki pisania kodu („Source”) do tego zdarzenia w celu wpisania kodu. To też to czynimy i wpisujemy poniższy kod
Obrazek
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A teraz zajmiemy się kosmetyką.
Przechodzimy na zakładkę „Design” w panelu tworzenia naszej aplikacji. I wyłączamy zdarzenia jasze raz klikając, aż zniknie zaznaczenie (opuszczamy zdarzenia)
Obrazek
Możemy kliknąć w klawisz rozszerzonych właściwości
Obrazek
Do powrotu do domyślnych ustawień służy klawisz na rysunku poniżej
Obrazek
Przechodzimy do panelu „Package Explorer”, a w nim do naszej aplikacji „COM Port Terminal -> src -> New -> Package” klikając na „Package”.
Obrazek
Pokarze się nowe okno gdzie wpisujemy nazwę i zatwierdzamy klawiszem.
Obrazek
Mamy już miejsce na obrazki (najlepiej 24x24 pikseli) Ja zastosowałem obrazki 32x32 pikseli. Obrazki należy skopiować z dowolnego miejsca na dysku i zwyczajnie wkleić do „Image”(przed chwilą go utworzyliśmy) przez kopiuj-wklej
Obrazek
Teraz zaznaczamy formatkę (najlepiej na belce formatki) i przechodzimy do „ Structure -> Properties -> title” klikamy na klawisz po prawej stronie „…”. Pokarze się nowe okno o nazwie „String editor” a w nim wpisujemy słowo „Treminal” i klikamy na klawisz „OK”.
Obrazek
Na tej samej fornatce zaznaczamy „Structure -> Properties -> iconImage” klikamy na klawisz po prawej stronie „…”. Pokarze się nowe okno o nazwie „Image chooser” a w nim klikamy na”Classpath….” , a w okienku na „src -> Image -> Laptop-32.png” i klikamy na klawisz „OK”. (Laptop-32.png – to mój obrazek ty możesz mieć inny własny obrazek).
Obrazek
To samo powtórz dla:
Klawisz „btnNewButton”
text --- „Open”
icon --- „World-32.png”
klawisz „btnNewButton _1”
enabled --- false
text --- „Open”
icon --- „World-32.png”
Ze względu na obrazki na button’ach kliknij na formatkę na jej prawą krawędź i nie puszczając myszki przeciągnij na prawo do 500 pikseli. Potem kliknij na dolną krawędź formatki i trzymając myszką przeciągnij w dól na 350 pikseli.
Kliknij na komponent o nazwie „lblNewLabel” i tytule „New label”. We właściwościach odszukaj „ Structure -> Properties -> text” klikamy na klawisz po prawej stronie „…”. Pokarze się nowe okno o nazwie „String editor” a w nim wpisujemy słowo „port zamknięty …” i klikamy na klawisz „OK”. Później wybierz właściwość „ Structure -> Properties -> font” klikamy na klawisz po prawej stronie „…”. Pokarze się nowe okno o nazwie „Font chooser” a w nim wpisujemy rozmiar na 15 pikseli i klikamy na klawisz „OK”.
Teraz zaznaczamy komponent o nazwie „textArea” wybieramy właściwość „ Structure -> Properties -> editable” i „zaptaszkujemy kwadracik” – m być true.
Przyszedł czas na tworzenie pliku jar. W panelu o nazwie „Package Explorer” klikamy(PPM) na naszej aplikacji „COM Port Terminal -> Export …”
Obrazek
Pojawi się nowe okno „Export” a w nim zaznacz „Runnable JAR file” i kliknij klawisz „Next”.
Obrazek
Pojawi się nowe okno „Runnable JAR File Export” i tu wybrać naszą aplikację, oraz podać gdzie ma być tworzony plik jar i jaka ma być jego nazwa. Potem klawisz „Finish”.
Obrazek
Potem w oknie informacyjnym kliknąć klawisz „OK”. No i to wszystko.
Obrazek

Na koniec dodam, że typ zmiennych AVR „uint_8” ma wartość od 0 do 255, a odpowiednik w języku Java typ „Byte” ma wartość od -128 do 127 dlatego trzeba konwertować typy.
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Mam nadzieje, że komuś przydał się mój poradnik i posypią się aplikacje w języku Java. A na deser zajmiemy się konwersją *. jar w *.exe , oraz klasą umożliwiającą pracę w tle, no ale to za tydzień.

Piotr

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2014, o 12:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sie 2012
Posty: 52
Lokalizacja: Toruń
Pomógł: 1

Witam
Wczoraj zapomniałem ustawić komponent "btnNawButton_1" jego własność "enabled" na "false", ale to już dzisiaj poprawiłem. Wartość "true" powodowała, że można było wysyłać dane przed otwarciem portu. Po poprawce klawisz "btnNawButton_1" jest aktywny tylko gdy port jest otwarty.
Było nie było, ale kilka godzin taki poradnik się tworzy.

Piotr


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2014, o 22:30 
Offline
Użytkownik

Dołączył(a): 09 sie 2014
Posty: 33
Pomógł: 0

Super, że chciało Ci się stworzyć taki tutorial. Dla początkującego w programowaniu to nieoceniona pomoc. Thx.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sie 2014, o 09:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sie 2012
Posty: 52
Lokalizacja: Toruń
Pomógł: 1

No cóż, lubię to (czyli - język Java SE i środowisko Eclipse). Udało mi się połączyć programowanie w Javie i programowanie procesorów AVR w języku C w jednym środowisku Eclipse.
Obrazek
Obecnie uczę się programowania smartfona Samsung GT-S5300 do komunikowania się z AVR'ami przez bluetooth wykorzystując język Java, a to wszystko w środowisku Eclipse (a korzystam z tego programu -> adt-bundle-windows-x86_64-20130729.zip).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2015, o 18:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

Witam.
Sporo się dowiedziałem z twojego kursu. Bardzo dziękuję.
A może tak mógłbyś napisać kurs o javie na androida?
Byłbym niezmiernie wdzięczny.
Pozdrawiam

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2015, o 20:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sie 2012
Posty: 52
Lokalizacja: Toruń
Pomógł: 1

Napisać kurs na androida? - pewnie, że mogę. Aktualnie jestem w fazie końcowych testów komunikacji bluetooth między androidem w wersji 2.3.6 (bo taki mam na moim testowym telefonie) a procesorem Atmega8 z modułem bluetooth ATB-BTM-222. No i wszystko działa, komunikacja jest między procesorem Atmega8 a androidem w dwie strony.
Pewnie jak znajdę trochę czasu to zacznę pisać taki poradnik, a pisanie poradnika też zajmuje dużo czasu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lut 2015, o 10:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

p_zag czy możesz podesłać namiary na kod komunikacji BT z wysyłaniem danych? Przeglądam sieć i nie mogę znaleźć nic działającego do analizy i nauki.
ps. Umiem wł/wył BT, wykryć inne, sparowane.
Utknąłem na połączeniu ze sparowanym.
Dodam tylko, że javę poznaję dopiero od tygodnia z twojego poradnika bo jest dla mnie dobrze napisany.
Nawet nie śmię pytać, czy możesz umieścić kod na androida o którym pisałeś. Znacznie ułatwiło by mi to naukę.
Dziękuję za poradnik.

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2015, o 11:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sie 2012
Posty: 52
Lokalizacja: Toruń
Pomógł: 1

Do komunikacji bluetooth androida przeanalizuj to http://developer.android.com/guide/topics/connectivity/bluetooth.html co prawda po angielsku , ale tłumacz google trochę pomoże, zwróć uwagę na kod wątku inicjującego połączenie "private class ConnectThread extends Thread {...}". Poczytaj też o klasie "android.os.Handler" procedurze w tej klasie zawartej o nazwie "public void handleMessage(Message msg)",oraz poczytaj też o klasie "android.os.Message", "java.io.InputStream" , "java.io.OutputStream".
To na razie tyle.

PS. mam nadzieje, że wiesz co to UUID - dla połączeń SPP to "private final UUID MY_UUID = UUID .fromString("00001101-0000-1000-8000-00805F9B34FB");"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lut 2015, o 07:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

Dzięki p_zag za naprowadzenie. Problem z połączeniem leżał po stronie UUID.
Z tego co doczytałem na stronach polecanych przez Ciebie
Kod:
UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
jest dla połączeń serialowych (com). Po podstawieniu do kodu łączy się bez problemu.

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2015, o 02:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sie 2012
Posty: 52
Lokalizacja: Toruń
Pomógł: 1

Cieszę się że bluetooth Tobie już działa.
Może kiedyś pochwalisz się jakąś aplikacją na androida napisaną w javie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2015, o 09:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

Jak zakończę pracę nad połączeniem z BT to wstawię aplikację do pobrania.
Teraz mam jeszcze jedno pytanko:
Jeżeli utworzymy socket do połaczenia. BT się połączą i wtedy ten przy AVR'ku odłączę od zasilania.
W androidzie sprawdzam w ten sposób:
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ale nie dostaję tego komunikatu.

Jak można sprawdzić czy połączenie zostało zerwane?
Jedyne co mi przychodzi do głowy to sprawdzanie co jakiś czas odebranych danych.
Ale może jest jakieś inne lepsze rozwiązanie?

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2015, o 17:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sie 2012
Posty: 52
Lokalizacja: Toruń
Pomógł: 1

Spójrz na tą stronę http://stackoverflow.com/questions/4715865/how-to-programmatically-tell-if-a-bluetooth-device-is-connected-android-2-2 "Jak programowo stwierdzić, czy urządzenie Bluetooth jest podłączone? (Android 2.2)". Wykorzystałbym klasę BroadcastReceiver , która i tak nasłuchuje transmisję i bada stan bluetooth'a

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


Prawdopodobnie i tak masz klasę typu BroadcastReceiver wystarczy ją tylko rozszerzyć o BluetoothDevice.ACTION_ACL_DISCONNECTED



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 mar 2015, o 08:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

Dzięki, Jesteś kopalnią wiedzy o androidzie. ;)

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 maja 2015, o 18:04 
Offline
Użytkownik

Dołączył(a): 14 gru 2014
Posty: 30
Zbananowany użytkownik

Pomógł: 0

Cześć! Zrobiłem obsługę dwóch żyroskopów przy użyciu biblioteki autorstwa Davide Gironi, 2012 i na obecną chwilę wyświetlam sobie kostki w openGLu w C++.
Chciałbym się przerzucić na Javę, ze względu na to że środowisko graficzne ma wspomaganie i jest darmowe, w przeciwieństwie do c#, w którym lata temu bardzo przyjemnie mi się bawiło.
Ale na samym wstępie zanim zacznę się bawić twoim kodem, odpalam Twój program i po chwili program się wiesza.
Obrazek
Na RS232 przychodzi z mikrokontrolera pakiet danych 9*6+4 znaków z częstotliwością ok 25Hz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 maja 2015, o 22:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sie 2012
Posty: 52
Lokalizacja: Toruń
Pomógł: 1

Witam
Prawdopodobnie wieszanie się programu jest spowodowane odczytem dużej ilości danych w wątku głównym. Aby temu zaradzić stwórzmy inny wątek tylko do odczytu i wyświetlenia danych. Mój program miał za zadanie być ilustracją tworzenia programów w javie "wyklikując" program i jako taki nie jest doskonały. Można go uważać jako szkielet, który trzeba ubrać w odpowiednie procedury.
Wracając do tematu to napisałem taką procedurę tworząca osobny wątek:
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a umieszczenie jej w kodzie wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Nie testowałem tej procedury bo jestem aktualnie w trakcie pisania aplikacji na androida 2.3.6 do komunikacji z mikroprocesorem Atmega8 poprzez WiFi (w zasadzie to komunikacje już mam na jakieś 80%)

Piotr



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

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