Я подключаюсь к последовательному устройству через inte rnet, используя ethe rnet к последовательному устройству. Я общаюсь с ним через небольшое приложение node.js. Следующий код возвращает нужную мне информацию:
var net = require('net');
var zone1 = 'AgABBgAJ';
var zone2 = 'AgACBgAK';
var zone3 = 'AgACBfAZ';
var zone4 = 'AgACBaAW';
var zone5 = 'AgACBsAV';
var client = new net.Socket();
client.connect(10006, '10.0.1.217', function() {
console.log('Connected');
client.write(Buffer.from(zone1, 'base64').toString('ascii')+'\n');
});
client.on('data', function(data) {
var data_array = new Uint8Array(data);
console.log(data_array);
var decoded = [];
decoded['zone'] = data_array[16];
decoded['power'] = data_array[18] == 128 ? 'On' : data_array[18] == 0 ? 'Off' : data_array[18] == 192 ? 'Muted' : 'Unknown';
decoded['input'] = data_array[22] + 1;
decoded['vol'] = data_array[23] - 196;
decoded['mute'] = data_array[18] == 192 ? 'On' : 'Off';
decoded['state'] = (data_array[18] == 128) || (data_array[18] == 192) ? true : false;
console.log('-- Zone: ' + decoded['zone']);
console.log('-- Power: ' + decoded['power']);
console.log('-- Input: ' + decoded['input']);
console.log('-- Volume: ' + decoded['vol']);
console.log('-- Mute: ' + decoded['mute']);
client.destroy(); // kill client after server's response
});
client.on('close', function() {
console.log('Connection closed');
});
Теперь мне нужно написать другие команды (zone2, zone3, zone4, zone5) и также получить от них данные.
Есть ли способ l oop через массив команд и выводить данные после каждой команды?
Спасибо!
РЕДАКТИРОВАТЬ: Вот вывод из приложения
Connected
Uint8Array [
2, 0, 0, 6, 0, 63, 0, 0,
0, 0, 0, 0, 0, 71, 2, 0,
1, 5, 0, 0, 0, 0, 0, 222,
8, 8, 0, 246
]
-- Zone: 1
-- Power: Off
-- Input: 1
-- Volume: 26
-- Mute: Off
Connection closed