Исторически почему umask такой, какой он есть?

Я прислушался к обоим вашим советам и попробовал сделать это по-другому. В конце концов, я решил сделать это как веб-страницу, так как затем я мог бы добавить дополнительные функции, помимо громкости и включения / выключения. Я сильно полагался на множество кусочков, собранных из нескольких источников, поэтому спасибо им всем. Я использовал node.js с сокетами.io, и после небольшого количества проб и ошибок получил что-то, что работает, с обратной связью от устройства (чтобы оно могло инициализировать свое состояние при загрузке страницы) и которое не дублирует постепенно вложенные ответы (это потребовало некоторого выяснения, поскольку я ничего не знал об узле или сокетах до нескольких дней назад!) Вот оно. Наверное, не очень красиво для тех, кто разбирается в этом как следует, но, похоже, он делает то, что я хочу! Чтобы использовать его, установите узел и запустите файл node.js с помощью команды: nodejs main.js Поместите файлы index.html и style.css в подкаталог (относительно папки с node.js) под названием "public" ( без кавычек). Затем укажите в браузере хост (на котором запущен main.js) с номером порта, добавленным к URL-адресу (в данном случае: 8080).

Между прочим, это для Onkyo TX-SR804, но должно работать и для других их приемников, управляемых по RS-232, с использованием адаптера RS-232 на USB (несколько долларов от Amazon).

Это файл node.js:

var express = require('express');
app         = express();
server      = require('http').createServer(app);
io          = require('socket.io').listen(server);

var SerialPort = require("serialport")
var serialPort = new SerialPort("/dev/ttyUSB0", { 
        baudRate: 9600,
        dataBits: 8,
        parity: 'none',
        stopBits: 1
        }
    );

server.listen(8080);
app.use(express.static('public'));             
var paramVal = 0;
var countRep = 0;
var countSend = 0;
var buf = new Buffer(16);
var global_socket;

io.sockets.on('connection', function (socket) {
    global_socket = socket;
    global_socket.on('toOnkyo', function (data) {
        paramVal = data.value;
        buf.write(paramVal, "utf-8");
        serialPort.write(buf);
        console.log(paramVal.toString().substr(0,7) + " (" + parseInt(paramVal.toString().substr(5,2),16) + ")\r\n");               
        global_socket.emit('toOnkyo', {value: paramVal});   
        console.log('new'+paramVal);
        countSend=countSend+1;
        console.log('count send '+ countSend);
        }
    );
    }
);
serialPort.on('data', function(data) {
    console.log('data received: ' + data.toString().substr(0,7) + " (" + parseInt(data.toString().substr(5,2),16) + ")");
    global_socket.emit('onkyoReply', {value: data.toString().substr(0,7)});
    countRep=countRep+1;
    console.log('count '+ countRep);
    }
);
console.log("running");

Это HTML-файл index.html, на который вы указываете в своем браузере. Он должен находиться в папке с именем public, подпапке той, в которой находится node.js. когда вы указываете в браузере сервер, на котором запущен node.js, укажите номер порта (в данном случае 8080)



  
        Onkyo Controller
        
        
        
  
  










  

    



    

         


 



Наконец, файл style.css. Должен быть помещен в ту же папку, что и файл index.html.

body {
    text-align: center;
    margin-top: 50px;
    background: #50D0A0;
}

input[type=range]{
    -webkit-appearance: none;
    width: 80%;
}

input[type=range]::-webkit-slider-runnable-track {
    height: 10px;
    background: #ddd;
    border: none;
    border-radius: 3px;
}

input[type=range]::-webkit-slider-thumb {
    -webkit-appearance: none;
    border: none;
    height: 32px;
    width: 32px;
    border-radius: 50%;
    background: /* goldenrod */ #34A7C1;
    margin-top: -12px;
}

input[type=range]:focus {
    outline: none;
}

input[type=range]:focus::-webkit-slider-runnable-track {
    background: #ccc;
}
.radioLeft
{
    text-align:left;
}

.onoffswitch {
    position: relative; width: 90px;
    -webkit-user-select:none; -moz-user-select:none; -ms-user-select: none;

    left: 50%;
    margin-right: -50%;
    transform: translate(-50%, -50%) 

    }
.onoffswitch-checkbox {
    display: none;
}
.onoffswitch-label {
    display: block; overflow: hidden; cursor: pointer;
    border: 2px solid #999999; border-radius: 20px;
}
.onoffswitch-inner {
    display: block; width: 200%; margin-left: -100%;
    transition: margin 0.3s ease-in 0s;
}
.onoffswitch-inner:before, .onoffswitch-inner:after {
    display: block; float: left; width: 50%; height: 30px; padding: 0; line-height: 30px;
    font-size: 14px; color: white; font-family: Trebuchet, Arial, sans-serif; font-weight: bold;
    box-sizing: border-box;
}
.onoffswitch-inner:before {
    content: "ON";
    padding-left: 10px;
    background-color: #34A7C1; color: #FFFFFF;
}
.onoffswitch-inner:after {
    content: "OFF";
    padding-right: 10px;
    background-color: #EEEEEE; color: #999999;
    text-align: right;
}
.onoffswitch-switch {
    display: block; width: 18px; margin: 6px;
    background: #FFFFFF;
    position: absolute; top: 0; bottom: 0;
    right: 56px;
    border: 2px solid #999999; border-radius: 20px;
    transition: all 0.3s ease-in 0s; 
}
.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
    margin-left: 0;
}
.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
    right: 0px; 
}

Screen shot of web page:

7
18.09.2015, 02:55
0 ответов

Теги

Похожие вопросы