Я купил GPS, я проверил это с помощью SMS-сообщения и с его собственным программным обеспечением, чтобы получить широту / долготу, и он работает нормально, см. Скриншот:
Теперь я уверен, чтосвязь с gprs->internet
работает, поэтому я хочу создать свое собственное программное обеспечение, которое может выполнять множество других функций, которых нет у производителя программного обеспечения. В своем первом размышлении я попытался прослушать сообщения NMEA с сокетом tcp / ip (java) на порту 7070, вот мой исходный код:
import java.io.*;
import java.net.*;
public class Serveur {
static final int port = 7070;
public static void main(String[] args) throws Exception {
ServerSocket s = new ServerSocket(port);
System.out.println("waiting for connexion from GPS 7070");
Socket socClient = s.accept();
System.out.println("Connexion GPS ok");
BufferedReader in = new BufferedReader(
new InputStreamReader(socClient.getInputStream())
);
PrintWriter out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(socClient.getOutputStream())),
true);
String str = in.readLine();
System.out.println("the GPS message is : " + str);
in.close();
out.close();
socClient.close();
}
}
Я попытался отправить сообщение через клиент Java в локальной сети, и это работает ..
Но проблема, которую я не понимаю: когда я получаю сообщение от GPS, я получаю эту ошибку:
waiting for connexion from GPS 7070
Connexion GPS ok
Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at serveur.Serveur.main(Serveur.java:27)
at serveur.Serveur.main (Serveur.java: 27)
ошибка возникает из line String str = in.readLine();
, если его программное обеспечение смогло перехватить сообщение NMEA, почему не мое приложение ??
ОБНОВЛЕНИЕ:
Я понюхал сеть, вотрезультат:
[протокол, используемый моим GPS] [4]
первый пакет, полученный от GPS (the hidden ip adress is my fixed public address
):
первый ответиз программного обеспечения (1/2) (это пустое сообщение):
из программного обеспечения (2/2):
изGPS:
с программного обеспечения:
с GPS (1/2) (пустое сообщение):
и, наконец, long / lat / speed ... от GPS (2/2):
, как я уже писал, есть пустые сообщения, отправленные GPS ...Итак, вот все детали.
@ Peter Lawrey : Я пытался прочитать сообщение побайтно, но получил сообщение от netbeans ,, не могли бы вы дать мне кусок кода?спасибо Надеюсь, это поможет мне.