Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[JAVA] Połaczenie z portami COM

LukaszSzukasz1 28 Sep 2021 14:03 300 5
Computer Controls
  • #1
    LukaszSzukasz1
    Level 2  
    Witam,
    Nie mogę połączyć się z portami COM w Win10 używając rxtx. W Windowsie wszystko jest ok z portami --- napisałem inną aplikację korzystającą z innych driverów tj: jSerialComm-2.7.0.jar i wszystko gra. Proszę zapoznajcie się z wynikiem z konsoli poniżej. Kombinuje 2 dzień i poza bólem oczu nic nie osiągnąłem. Mogę podesłać kod jak wynik kompilacji nie wystarczy. :)

    run:
    wrz 28, 2021 1:15:39 PM gnu.io.RXTXInitializer provideNativeLibraries
    INFO: Native library rxtxSerial-amd64.dll already exists at C:\Users\User\AppData\Local\Temp\rxtxSerial-amd64-2.2.2.dll
    wrz 28, 2021 1:15:39 PM gnu.io.RXTXInitializer <clinit>
    INFO: Native lib Version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net
    wrz 28, 2021 1:15:39 PM gnu.io.RXTXInitializer <clinit>
    INFO: Java lib Version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net
    java.lang.NullPointerException: Cannot invoke "String.split(String)" because "ext_dirs" is null thrown while loading gnu.io.RXTXCommDriver
    wrz 28, 2021 1:15:39 PM gnu.io.CommPortIdentifier <clinit>
    WARNING: Have not implemented native_psmisc_report_owner(PortName)); in CommPortIdentifier
    java.lang.NullPointerException: Cannot invoke "String.split(String)" because "ext_dirs" is null thrown while loading gnu.io.RXTXCommDriver
    name.prokop.bart.fps.FiscalPrinterException: name.prokop.bart.fps.FiscalPrinterException: Nie można otworzyć portu: NoSuchPortException @ COM5
    at name.prokop.bart.fps.drivers.Posnet101.print(Posnet101.java:111)
    at name.prokop.bart.fps.util.HeavyTesting.main(HeavyTesting.java:33)
    Caused by: name.prokop.bart.fps.FiscalPrinterException: Nie można otworzyć portu: NoSuchPortException @ COM5
    at name.prokop.bart.fps.drivers.Posnet101.connect(Posnet101.java:171)
    at name.prokop.bart.fps.drivers.Posnet101.print(Posnet101.java:104)
    ... 1 more
  • Computer Controls
  • Computer Controls
  • #3
    LukaszSzukasz1
    Level 2  
    klasa którą uruchamiam:
    Code: java
    Log in, to see the code


    jedna z klas użytych w programie:
    Code: java
    Log in, to see the code


    i kolejna klasa z programu:
    Code: java
    Log in, to see the code


    oczywiście program jest większy ale powyższe listingi powinny wystarczyć do analizy problemu. :please:
  • #4
    gaskoin
    Level 38  
    Akurat pokazałeś wszystko tylko nie jak używasz tej biblioteki :D Na początek zobacz czy w ogóle wypluje jakieś porty:

    Code: java
    Log in, to see the code
  • #5
    LukaszSzukasz1
    Level 2  
    Właśnie rzecz w tym że portów nie wypluwa. Inną metodą ( o czym pisałem na początku wątku ) to wypluwa COM1 i COM3.
    Poniżej klasa ( i wynik z konsoli) z programu, która testuje porty.
    Code: java
    Log in, to see the code


    wypluwanie portów w konsoli:


    wrz 28, 2021 4:27:38 PM gnu.io.RXTXInitializer provideNativeLibraries
    INFO: Native library rxtxSerial-amd64.dll already exists at C:\Users\User\AppData\Local\Temp\rxtxSerial-amd64-2.2.2.dll
    wrz 28, 2021 4:27:39 PM gnu.io.RXTXInitializer <clinit>
    0 port(ow):
    *************************************************
    0 port(ow) szeregowych:

    0 port(ow) rownoleglych:

    INFO: Native lib Version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net
    wrz 28, 2021 4:27:39 PM gnu.io.RXTXInitializer <clinit>
    INFO: Java lib Version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net
    java.lang.NullPointerException: Cannot invoke "String.split(String)" because "ext_dirs" is null thrown while loading gnu.io.RXTXCommDriver
    wrz 28, 2021 4:27:39 PM gnu.io.CommPortIdentifier <clinit>
    WARNING: Have not implemented native_psmisc_report_owner(PortName)); in CommPortIdentifier
    java.lang.NullPointerException: Cannot invoke "String.split(String)" because "ext_dirs" is null thrown while loading gnu.io.RXTXCommDriver
    java.lang.NullPointerException: Cannot invoke "String.split(String)" because "ext_dirs" is null thrown while loading gnu.io.RXTXCommDriver
    java.lang.NullPointerException: Cannot invoke "String.split(String)" because "ext_dirs" is null thrown while loading gnu.io.RXTXCommDriver
    java.lang.NullPointerException: Cannot invoke "String.split(String)" because "ext_dirs" is null thrown while loading gnu.io.RXTXCommDriver
    java.lang.NullPointerException: Cannot invoke "String.split(String)" because "ext_dirs" is null thrown while loading gnu.io.RXTXCommDriver
    java.lang.NullPointerException: Cannot invoke "String.split(String)" because "ext_dirs" is null thrown while loading gnu.io.RXTXCommDriver
    BUILD SUCCESSFUL (total time: 0 seconds)

    Dodano po 6 [godziny] 6 [minuty]:

    Jest mały progres, porty COM widzi!!!! :) Jednak mismatch wersji RXTX się pojawił, ktoś ma pomysł?? :

    run:
    WARNING: RXTX Version mismatch
    Jar version = RXTX-2.2pre1
    native lib Version = RXTX-2.2pre2
    2 port(ow):COM1 COM5
    *************************************************
    2 port(ow) szeregowych:
    COM1 otwieram OK
    COM5 otwieram nie udało się: PortInUseException @ COM5

    0 port(ow) rownoleglych:

    Error 0x5 at ..\src\termios.c(892): Odmowa dost�pu.

    BUILD SUCCESSFUL (total time: 0 seconds)
  • #6
    gaskoin
    Level 38  
    Ja tego rxtx używałem sto lat temu na studiach, ale pamiętam, że działał pod windowsem tak samo dziadowsko :) Obecnie bym się chyba decydował na C# ze względu na jego lepsze wsparcie dla aplikacji desktopowych i możliwość uruchomienia pod linuxem (wtedy się nie dało).


    Wracając do tematu - ten mismatch oznacza, że masz jara starszego niż dll.
    Code: bash
    Log in, to see the code

    To sugerowałoby, że masz ten dll w kilku miejscach. Postaraj się, żebyś miał w jednym. Najlepiej tylko w projekcie z jednego źródła


    Co do tego, że wykryło port, ale nie możesz się połączyć to podejrzewam, że została Ci wisząca stara aplikacja jeśli odpalasz w niej wątki. Jeśli odpalasz je jako daemon to mogły nie zdążyć zamknąć portu i wisi jako używany. Nie pokazałeś kodu więc tylko zgaduję.