それぞれのパーツを一緒にすると、こんな感じになります。ここで、ウォーターフォールのデータは、計算機で生成されたものであることに注意して下さい。
index.js
// file name = index20.js, reads index20.html const bufa = new Buffer('fefe80e017' , 'hex'); // preamble const bufz = new Buffer('fd' , 'hex'); // postamble const buf1 = new Buffer('fefe80e0174351fd' , 'hex'); // CQ const buf2 = new Buffer('fefe80e01751525a3ffd', 'hex'); // QRZ? const buf3 = new Buffer('fefe80e003fd' , 'hex'); // read freq var SerialPort = require('serialport'); var serial = new SerialPort('/dev/ttyUSB0',{ baudrate: 19200, parser: SerialPort.parsers.byteDelimiter([0xfd]) }); var http = require('http'); var fs = require('fs'); var index = fs.readFileSync(__dirname + '/index20.html'); var app = http.createServer(function(req, res) { res.writeHead(200, {'Content-Type' : 'text/html'}); res.end(index); }) .listen(3000); var io = require('socket.io').listen(app); var ndata = 512; // data[512] + 0x0a var pos = 0; var myarray = new Array(); // -- water fall -- process.stdin.on('readable', function() { var buf = process.stdin.read(); if (buf !== null) { for (var i = 0; i < buf.length; i++) { if (buf[i] == 0x0a) { pos = 0; io.emit('waterfall', myarray); } else { myarray[pos++] = buf[i]; } } } }); // -- serial for IC-7410 -- serial.on('open',function(){ console.log('serial port /dev/ttyUSB0 is opened.'); }); serial.on('data',function(data){ console.log('received data: ', data.length, data); if ( !(data[0] == 0xfe & data[1] == 0xfe) ) { console.log('** received serial data error **'); } if (data[2] == 0xe0 & data[3] == 0x80 & data[4] == 0x03) { var f10 = data[5]>>4 & 0x0f; var f1 = data[5] & 0x0f; var f1k = data[6]>>4 & 0x0f; var f100 = data[6] & 0x0f; var f100k = data[7]>>4 & 0x0f; var f10k = data[7] & 0x0f; var f10m = data[8]>>4 & 0x0f; var f1m = data[8] & 0x0f; var freq = f10m.toString()+ f1m.toString()+"," +f100k.toString()+f10k.toString()+f1k.toString()+"." + f100.toString()+ f10.toString()+f1+" kHz"; console.log('freq: ' + freq); io.emit('freqmsg', 'VFO A: ' + freq); } }); serial.on('error', function(err) { console.log('Error: ', err.message); }) // -- socket -- io.on('connection', function(socket){ socket.on('message1', function(){ serial.write(buf1); }); socket.on('message2', function(){ serial.write(buf2); }); socket.on('your message', function(msg){ serial.write(bufa); serial.write(msg); serial.write(bufz); io.emit('your message', msg); }); }); // -- request freq -- function sendTime() { serial.write(buf3); } setInterval(sendTime, 100); // -- EOF --