R
R
ranilbs2017-05-13 12:18:36
Node.js
ranilbs, 2017-05-13 12:18:36

How to return response in node js after sending AT command to gateway?

//старуем сервер node.js и обрабатываем пост запрос
var http = require('http');
var port = 82;
var s = http.createServer();
s.on('request', function(request, response) {
    response.setHeader('Access-Control-Allow-Origin', '*');
    response.setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept');
    response.writeHead(200);
    console.log(request.method);
    console.log(request.headers);
    console.log(request.url);

    var data = '';
    //data это данные пришедшие с пост
    request.on('data', function(chunk) {
        data += chunk.toString();
    });
    request.on('end', function() {
        console.log(data);
//фильтруем пост запрос оставляем только значение
        var signal = 	data.replace("signal=","");
        var otvet="";
        if(otvet=  sendsms(sendsms(Number(signal)))){
            //возвращаем ответ
response.write(otvet);
response.end();
        }

    });

});
//обязательно
s.listen(port);

//функция отправки АТ команд
function sendsms(signal){
    var mraa = require('mraa'); //require mraa
    var uartdev = new mraa.Uart(0);
    var com = require('serialport');

// получим путь к UART
    var portName = uartdev.getDevicePath();//  '/dev/ttyMFD1';
    var serialPort = new com.SerialPort(portName, {
        baudrate: 115200,
        dataBits: 8,
        parity: 'none',
        stopBits: 1,
        flowControl: false
    });

    serialPort.on('open',function(){

        if(signal==1){
            serialPort.write('AT+QSIMSTAT\r\x1A');
        }
        if(signal==2){
            serialPort.write('AT+QNSTATUS\r\x1A');
        }
        if(signal==3){
            serialPort.write('AT+CSQ\r\x1A');
        }

        if(signal==4){
            serialPort.write('AT+COPS?\r\x1A');
        }

});

//функция ответа
    serialPort.on('data', function (data){
        global.dd= data.toString();
        console.log(dd);

    });

// функция выхода
    serialPort.on('close', function() {
        console.log("port closed.");
    });


// функция при ошибке
    serialPort.on('error', function(error) {
    console.log('port closed', error);

    });
// возвращаем ответ в виде строки обязательно srring

return global.dd;
//serialPort.close();
}

Hello! I don't understand much about nodejs, but I really need to complete one task. Help me please. I am sending AT commands to the gateway. But I'm having trouble getting a response. Then extra line breaks appear and only part of the answer is returned to the variable, then the value of the previous request gets into the variable. I understand that the code is written incorrectly. At me return works earlier than function of the answer.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
C
Coder321, 2017-05-13
@Coder321

So do a return in the close event

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question