Merhaba,
Hatanın nedeni, TCP bağlantısının kesilmesi veya Modbus sunucusunun yanıt verememesi olabilir. Bu tür hatalarla karşılaşıldığında, bağlantı yeniden kurulmadığı sürece işlem devam edemez.
Sorununuzun çözümü, işlemin devam edebilmesi için yeniden bağlanma mekanizması eklemek olacaktır. Bunun için, catch bloğunu düzenleyebilirsiniz. Aşağıdaki kodda, catch bloğu içinde bir fonksiyon tanımlanmıştır. Bu fonksiyon, belirli bir süre sonra tekrar çalışır ve bağlantı yeniden kurulana kadar çalışmayı sürdürür.
setInterval(function () {
client.readHoldingRegisters(6, 1)
.then(function (resp) {
console.log(resp.response._body._values);
oku = resp.response._body._values;
// socket.end()
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "NKoo0074",
database: "deneme"
});
con.connect(function (err) {
if (err) throw err;
var sql = "UPDATE tablo SET deger=" + oku + " WHERE id=" + 1;
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result.affectedRows + " kayıt eklendi.");
con.end();
});
});
}).catch(function (error) {
console.error(error)
setTimeout(function () {
socket.connect(options);
}, 5000);
})
}, 200)
Yukarıdaki kodda, catch bloğunda bir hata olduğunda, setTimeout fonksiyonu kullanarak belirli bir süre bekledikten sonra socket.connect fonksiyonunu tekrar çağırıyoruz. Bu, belirli bir süre sonra tekrar bağlanma girişiminde bulunacağı anlamına gelir.
Umarım bu yardımcı olur.