Мне нужен модуль Modbus для использования в узле, и я нашел несколько легкое решение, которое прекрасно работает. Его Modbus-Stack для узла TooTallNate. (https://github.com/TooTallNate/node-modbus-stack)Node Modbus Stack ECONNREFUSED
Я реализовал его и, похоже, сработал. Используя мой браузер, я звоню на свой сервер Node, а затем с помощью Wireshark. Я вижу, что пакет Modbus переходит с моего сервера Node (ведущий Modbus) на другое устройство (подчиненное устройство Modbus), тогда я вижу, что другой пакет Modbus переходит от устройства к серверу Node.
Но сервер никогда не сможет вернуть данные в мой браузер. Оказывается, сервер Node прослушивал и готов был обработать событие «ответ», но получал событие «ошибка». Когда я обработал событие 'ошибок' Я увидел следующее (строкового):
{ "код": "ECONNREFUSED", "ERRNO": "ECONNREFUSED", "системный вызов": "подключиться"}
Узла код:
var http = require("http");
var querystring = require("querystring");
var url = require("url");
var fs = require("fs");
var RIR = require("modbus-stack").FUNCTION_CODES.READ_HOLDING_REGISTERS;
http.createServer(onRequest).listen(8080);
function onRequest(request, response) {
var query = url.parse(request.url).query;
var path = url.parse(request.url).pathname;
var wants;
if(path == '/mbust'){
mbReturn(function(data){
response.writeHead(200,{"content-Type":"text"});
response.end(data);
});
}
else{
wants = 'unknown request'+" "+path+" "+query;
response.end(wants);
}
}
function mbReturn(pasd){
var client = require("client").createClient(502,'192.168.1.199');
var req = client.request(RIR,2000,1);
req.on('response',function(registers){
pasd(registers);
client.end();
});
req.on('error',function(e){
pasd(JSON.stringify(e));
client.end();
});
}
И вот где я застрял. Любые идеи/советы о том, как отлаживать это, действительно помогут. Это своего рода незнакомая территория для меня, так что все могло бы помочь.
TIA!
Niko
обновление: Я позвонил e.stack, чтобы увидеть происхождение вызовов ошибки и это то, что я получил:
Error: connect ECONNREFUSED
at errnoException (net.js:776:11)
at Object.afterConnect [as oncomplete] (net.js:767:19)