Интерфейс к Iskra на компе

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем caracal, 7 июн 2017.

  1. caracal

    caracal Нерд

    Есть необходимость, точнее было бы очень удобно в процессе разработки бегунками в HTML форме на компе менять параметры программы, вертящейся на Iskra.
    Понятно, что можно воткнуть туда bluetooth и рулить ей через WebBluetooth или воткнуть туда wi-fi и рулить. Но для этого надо это все купить) А хотелось бы рулить через шнур.

    Круто было бы, если бы в самой IDE была возможность сделать HTML/JS страничку и там из Javascript-a можно было бы просто кидать команды в консоль Искры. Это бы очень упростило разработку. Было бы время, допилил бы туда эту возможность. Но времени увы нет(

    Интересно знает ли кто какой-нибудь best practice как управлять Iskra через Web интерфейс на компе по шнурку?

    Пока нарыл вот это, но еще не попробовал.
    https://github.com/amirlazarovich/espruino2web
    Похоже это и есть решение, но через Ноду не очень удобно, конечно
     
  2. caracal

    caracal Нерд

    Уп-с, увидел в соседней ветке про NW.js, вечером покурю что такое.

    Просто на самой Ноде не хотелось бы делать ибо и сервак и клиент делать, что явно лишнее. Хотелось бы только клиент.
     
    Последнее редактирование: 7 июн 2017
  3. caracal

    caracal Нерд

    Покурил NW.js:)
    Просто так serialport с NW.js не заводится. Попробовал несколько способов, этот прокатил)

    Итак, для Mac рецепт следующий:
    1. Если нет npm, то ставим(смотреть в Гугле как)
    2. Ставим NW.js SDK версию(в ней есть консоль) и кидаем mwjs.app в папку с приложениями
    3. Создаем алиас чтоб запускать в любом месте, как nw. Для этого в терминале набираем
      Код (Bash):
      touch ~/.bash_profile; open ~/.bash_profile
      и открывается файл bash_profile. В него добавляем алиас
      Код (Bash):
      # alias to nw
      alias nw="/Applications/nwjs.app/Contents/MacOS/nwjs"
    4. Создаем где-нибудь папку MyIskraJSControlPanel
    5. Заходим в терминале в эту папку
    6. Ставим nw-gyp (нужен чтобы подключать к NW.js нативные node модули). В нашей папке в терминале запускаем
      Код (Bash):
      sudo npm install -g nw-gyp
      sudo npm install -g node-gyp
      sudo npm install -g node-pre-gyp
    7. Ставим модуль serialport. В терминале
      Код (Bash):
      sudo npm install serialport
    8. Переходим в папку модуля. В терминале
      Код (Bash):
      cd node_modules/serialport/
    9. Пляшем с бубнами и пересобираем модуль. В терминале
      Код (Bash):
      sudo node-pre-gyp clean
      sudo node-pre-gyp configure --runtime=node-webkit --target=0.23.0
      sudo node-pre-gyp build --runtime=node-webkit --target=0.23.0
      (номер версии ставим как у NW.js)
    10. Готово! NW.js скрещенная с serialport

    Само приложение:
    1. В папке MyIskraJSControlPanel создаем package.json
      Код (Javascript):
      {
          "name": "ЫskraJS",
          "main": "index.html"
      }
    2. Создаем index.html
      HTML:
      <html>
          <head>
              <meta charset="utf-8" />
              <title>Control IskraJS</title>
          </head>
          <body>
             
              <h3 id=message></h3>
             
              <button onclick="LED1(1)">Включить LED1</button><br>
              <button onclick="LED1(0)">Выключить LED1</button><br>
              <button onclick="StartFunc()">Запустить MySuperFunc1()</button><br>
             
          </body>
      </html>

      <script>

          var SerialPort = require('serialport');
          var Port = new SerialPort('/dev/tty.usbmodem1431');
         
          Port.on('open', function() {      
              document.getElementById('message').innerHTML = 'IskraJS на связи :)';
          });


          function LED1(state) {      
              Port.write('LED1.write(' + state + ')\n', function(err) {
                  if (err) return console.log('Error on write: ', err.message);
              });      
          }

          function StartFunc() {      
              Port.write('MySuperFunc1()\n', function(err) {
                  if (err) return console.log('Error on write: ', err.message);
              });      
          }  
         
      </script>
    3. Вместо '/dev/tty.usbmodem1431' ставим порт, как в EspruinoIDE
    4. Запускаем приложение. Набираем в терминале в папке
      Код (Bash):
      nw .
    5. Наслаждаемся
    [​IMG]

    Возможно что-то по пути забыл, но последовательность примерно такая

    Как пользоваться Windows сразу говорю - не знаю)

    Надеюсь кому-нибудь сэкономил время:)
     
    Последнее редактирование: 7 июн 2017
    sys и arkadyf нравится это.