Cześć !
Dysponuję anteną GPS ANTARIS podłączaną do gniazda USB. Mam do niej oprogramowanie, dzięki któremu widzę, że antenka działa w porządku i wysyła na port COM7 pakiety zgodne z protokołem NMEA. Wysyła sobie takie pakiety co 2 sekundy.
Chcę odczytywać te pakiety z pominięciem oprogramowania, pisząc do tego własny program w Javie.
Wzorując się na programie opisanym w dokumentacji, a dostępnym tutaj : http://java.sun.com/developer/releases/javacomm/SimpleRead.java
napisałem własny kod. Różni się on od bazowego tylko tym, że od razu otwieram port "COM7", a nie szukam portu "defaultowego".
Parametry portu szeregowego ustawiam takie same jak w przykładzie, ale tak się szczęśliwie składa, że zgadzają się z parametrami anteny (8 bitów danych, 1 stopu, 0 parzystości).
Mój program bez zarzutów przechodzi przez linię :
<code = java>
com = CommPortIdentifier.getPortIdentifier("COM7");
,
bez zarzutu działa otwieranie portu :
<code = java>
thePort = com.open("moj program", 1000);
port jest rzeczywiście szeregowy i ustawiam mu poprawne parametry, pobieram strumień, szykuję listenera:
<code = java>
if (portType == com.PORT_SERIAL) {
SerialPort sp = (SerialPort)thePort;
try {
inputStream = sp.getInputStream();
} catch (IOException e) {System.out.println("buba");}
try {
sp.addEventListener(this);
} catch (TooManyListenersException e) {System.out.println("buba");}
sp.notifyOnDataAvailable(true);
try {
sp.setSerialPortParams(4800,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException ucoe) {
ucoe.printStackTrace();
return;
}
}
Jednak na tym miłe rzeczy się kończą - nic nie jest sczytywane z portu, choćbym czekał na jakiś sygnał kilka minut, to ani razu nie zostanie wywołana funkcja serialEvent(), ani razu nie zajdzie zdarzenie, wygląda to tak, jakby antenka nic nie wysyłała ...
Z czego to może wynikać?
Co robię nie tak?
Z góry wielkie dzięki,
Kamyk