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.

Pytanie o aplikację w Javie

Woycek 11 Cze 2012 18:17 798 5
  • #1 11 Cze 2012 18:17
    Woycek
    Poziom 12  

    Witam!
    Zajmuję sie głównie programowaniem mikroprocesorów w ASM. Do urządzenia które zbudowałem i oprogramowałem znajomy napisał mi aplikację w Jawie na PC. Komunikacja odbywa się po RS232 i wszystko pięknie działa. Postanowiłem w którymś tam momencie że wygodniej mi będzie (ze względów czysto konstrukcyjnych) zastosować konwerter z RS 232 na USB.

    Po wnikliwej analizie materiałów z internetu wybrałem konwerter na układzie FT232RL. Po zainstalowaniu sterownika ze strony producenta wszystko pięknie ruszyło,ale... Mój układ wysyła ciągi znaków typu np: L375L lub T+24T aplikacja to odbiera i w oknie wyświetla odpowiednie wskazania (wyniki pomiarów).

    Jak pisałem wcześniej na RS-ie wszystko działa bez problemu, a jak zastosuję konwerter to raz na jakiś czas (zupełnie niepowtarzalnie) aplikacja odbiera moje dane nieprawidłowo.

    Już piszę o co chodzi Np: ciąg L375L odbiera jako 2 ciągi znaków np:L37 i 5L. Powtarzalne jest to że w przypadku złego odczytu przez aplikację ciąg znaków zawsze podzielony jest na dwie części natomiast stopień tego podziału jest przypadkowy. I teraz moje pytanie do fachowców...

    Czy aplikacja w Javie powinna być pisana z uwzględnieniem faktu że będzie zastosowany konwerter RS232 na USB czy nie ma to znaczenia? Dodam że osoba pisząca aplikację w Javie nie wiedziała że przyjdzie mi do głowy taki konwerter stosować. Co wy na To? Tylko proszę łopatologicznie bo zupełnie nie ogarniam programowania PC-tów.

    Proszę prawidłowo rozdzielać zdania (używać spacji). Post poprawiłem.[adamas_nt]

    0 5
  • #2 11 Cze 2012 19:12
    tymon_x
    Poziom 30  

    Woycek napisał:
    czy aplikacja w Javie powinna być pisana z uwzględnieniem faktu że będzie zastosowany konwerter RS232 na USB czy nie ma to znaczenia?

    Bez znaczenia.
    Woycek napisał:
    Już piszę o co chodzi np: ciąg L375L odbiera jako 2 ciągi znaków np:L37 i 5L.Powtarzalne jest to że w przypadku złego odczytu przez aplikację ciąg znaków zawsze podzielony jest na dwie części natomiast stopień tego podziału jest przypadkowy.

    Wina nie leży po stronie konwertera USB<->RS232 tylko po słabej aplikacji, która źle odbiera dane i je parsuje. A to już niech Twój znajomy dochodzi o co biega :P

    0
  • #3 11 Cze 2012 20:26
    Woycek
    Poziom 12  

    No tak ale czy w przypadku gdyby aplikacja była "skopana" to nie odbierała by wcale moich danych?
    A ona je odbiera prawidłowo tylko co jakiś czas się wysypuje. Pomiary są co minutę i tak średnio w ciągu każdej godziny wypadną 2 pomiary(tzn.zostaną źle odczytane przez aplikację).

    0
  • #4 11 Cze 2012 20:43
    krru
    Poziom 32  

    Po prostu twój znajomy napisał błedną aplikację - to że w pewnym przypadku program działa dobrze, wcale nie znaczy że jest dobrze napisany. Dokładnie te same błedy popełniają często początkujący programiści pisząc programy z wykorzystaniem TCP. Zakładają, że jeśli jedna strona nada 5 znaków to druga tyle odbierze ze jednym czytaniem. Coś takiego zadziała w sieci lokalnej, gdzie transfer jest szybki i bezpośredni, natomist wysypie się, jak pomiędzy komputerami będzie złożona sieć z ruterami, różnymi łączami itp.
    W RS-ie nie ma żadnego grupowania danych - każdy znak transmitowany jest niezależnie i program należy pisać w sposób uwzględniający to. Przypuszczam, że aktualny program wykorzystuje timery do odczytywania danych, zakładając, że co jakiś czas pojawia się blok danych USB natomiast buforuje dane i może je dostarczyć z innym timingiem. Podobnie jakbyś np. chciał połączyć swoje urządzenia poprzez modemy telefoniczne z korekcją danych. To nie jest alfabet Morse'a, gdzie przerwy pomiędzy znakami mają kluczowe znaczenie.
    Może się okazać, że błąd jest w założeniach - tzn wysyłane dane nie są samosynchronizujące się.

    0
  • #5 11 Cze 2012 20:50
    krzyjak
    Poziom 29  

    Woycek napisał:
    No tak ale czy w przypadku gdyby aplikacja była "skopana" to nie odbierała by wcale moich danych?
    A ona je odbiera prawidłowo tylko co jakiś czas się wysypuje. Pomiary są co minutę i tak średnio w ciągu każdej godziny wypadną 2 pomiary(tzn.zostaną źle odczytane przez aplikację).


    Ściągnij sobie program Terminal i zobacz co dochodzi do tego portu. Będziesz wiedział czy winą jest przejściówka czy program.

    0
  • #6 12 Cze 2012 13:02
    Woycek
    Poziom 12  

    krzyjak napisał:

    Ściągnij sobie program Terminal i zobacz co dochodzi do tego portu. Będziesz wiedział czy winą jest przejściówka czy program.


    No pewnie że to zrobiłem :D Terminal w moim "programowaniu" to podstawowe narzędzie do kontrolowania transmisji.

    Myślę że to co napisał krru wyjaśnia mój problem.

    Dziękuję za zainteresowanie i temat traktuję jako rozwiązany.

    Została mi teraz "walka" z autorem aplikacji :cry: .

    0