Устройство LT05 + GRPS обрабатывается для запроса входа в систему, но TCP listneer на NodeJs Сокет-сервер не может правильно отправить ответ - PullRequest
0 голосов
/ 25 января 2020

Каждая модель устройства GPRS имеет свою протокольную документацию, поэтому, согласно документации, мне удалось подключить устройство (я использую здесь устройство LT05 + GRS) к прослушивателю TCP, который закодирован в Node.js Модуль SocketIO .

После подключения к серверу устройство должно отправить запрос на вход в некоторый шестнадцатеричный код. После декодирования кода с помощью данного документа протокола и проверки подлинности запроса сервер должен ответить устройству после передачи контрольного кода. Контрольный код генерируется методом проверки CR C -ITU.

В моем случае я получаю запрос на вход в систему, но при отправке ответа на устройство с сервера устройство непрерывно отправляет одно и то же запрос на вход.

Обращаясь к документу, на диаграмме потока данных упоминается, что, когда устройство не получило правильный ответ, оно сбросит запрос на вход в систему. Я сделал все в соответствии с документом для отправки ответа.

Вот мой код.

app. js:

var express = require('express');
var app = express();
var socketServer = require('http').createServer(app);
var io = require('socket.io')(socketServer);
socketServer.listen(3000);
socketServer.on('listening',function(device){
    console.log('ok, server is running');
});
io.on('connection', function(clientSocket){
   console.log('a user connected');  
   clientSocket.on('disconnect', function(){
      console.log('user disconnected');
   });
});

app.get('/', function (req, res) {
  console.log('socket working Fine Suhail');
});
io.on('connection', function(data) {
  console.log('check 2');

    var gps = require("gps-tracking");
    var options = {
        'debug'                 : true,
        'port'                  : 8000,
        'device_adapter'        : "LT05P"
    }

    console.log("Hi! i'm options");
    var server = gps.server(options, function(device, connection) {
        console.log("Hi! i'm connection");



        /******************************
         LOGIN
         ******************************/
        device.on("login_request", function(device_id, msg_parts){
            console.log("Hi! i'm login_request",device_id);
            //Do some stuff before authenticate the device...
            // This way you can prevent from anyone to send their position without your consent
            this.login_authorized(true); //Accept the login request.
        });

        device.on("login",function() {
            console.log("Hi! i'm " + device.uid);
        });

    });
    server.setDebug(true);
});

Вот функция где после запрос на вход, сервер отправит ответ.

this.authorize = function () {

var length = '05';
var protocal_id = '01';
var serial = f.str_pad(this.__count, 4, 0);

var str = length + protocal_id + serial;

this.__count++;

console.log(str,'str'); 

var crc = require('crc');
var crcResult = crc.crc16(str).toString(16);
  console.log('crcResult',crcResult)
var buff = new Buffer('7878' + str + crcResult + '0d0a', 'hex');
    console.log('after crc',buff)
this.device.send(buff);
  };

Вот снимок экрана терминала:

enter image description here

Вот документация протокола ссылка, которую я использую:

Протокол для LT05 +

Как я могу отладить это?

...