私は TK06A GPS トラッカーを使用しており、独自のサーバー Java ファイルを開発しており、TK06A マニュアルに従って最初のログイン メッセージ パケットを受信しました。GPS メッセージ パケットを取得するためにデバイスに ack を送り返す必要があります。
座標を保持する GPS メッセージ パケットを取得できません。以下のコードを追加しています。LOCでIMEI番号を取得するまでは正しいと確信しており、出力ストリーム/ ACkの送信に問題があります。私はここで完全に打たれました。どこが間違っているのかわかりません。
親切に助けてください!
public void run() {
DataInputStream inputS = null;
DataOutputStream dos = null;
try {
inputS = new DataInputStream(socket.getInputStream());
if (inputS.available() > 0) {
byte[] bb = getBytesFromInputStream(inputS);
ChannelBuffer buf = toByteBuffer(bb);
String imei = readImei(buf);
System.out.println("IMEI::::: " + imei);
buf.skipBytes(5); // End
OutputStream os = socket.getOutputStream();
dos = new DataOutputStream(os);
byte[] response = parseHex();
dos.write(response);
Thread.sleep(1000);
dos.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
try {
inputS.close();
if (dos != null)
dos.close();
socket.close();
} catch (IOException e) {
}
}
}
public byte[] parseHex() {
String hexACKlogin = "787805010001D9DC0D0A"; // String in HEX format
int len = hexACKlogin.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(hexACKlogin.charAt(i), 16) << 4)
+ Character.digit(hexACKlogin.charAt(i+1), 16));
}
return data;
}