Обходной путь для открытия COM-порта для последовательной связи на стороне клиента (желательно в Python)

Цель

Я сделал веб-сайт с использованием фреймворка Flask и довольно хорошо разбираюсь в HTML, CSS, JS, Python. Моя цель - подключить Arduino к USB-порту клиентского ПК и использовать serial.write() для отправки ему числа.

Примечания

У меня есть рабочий пример взаимодействия с python, если arduino подключен к серверу.

import serial
ser = serial.Serial('COM4', 9600)
ser.write('5')

Теперь я хочу запустить именно эти 3 строки на стороне клиента.

Это вообще выполнимо? Я много исследовал, и кажется, что это невозможно из соображений безопасности? (Я надеюсь, что кто-то докажет, что я ошибаюсь.) Вот почему я ищу обходной путь. Но перед этим я должен упомянуть, что мне не нужны никакие данные (числа) с сервера. Как только веб-страница загружена, вся последовательная связь, которая мне нужна, находится на стороне клиента.

Клиентский python: я изучил написание python на клиентской стороне и прочитал о skulpt и PyPyjs, но не уверен, как я мог бы запустить упомянутые 3 строки с ними на стороне клиента (ни одна из них, похоже, не поддерживает < em>pyserial необходим для импорта серийного номера или, по крайней мере, мне не удалось найти документацию)

Я также просмотрел документацию по Arduino для взаимодействия с программным обеспечением, но кажется, что все упомянутые языки являются серверными. . Если вы знаете какие-либо возможные языки направления, которые могли бы помочь, я был бы рад узнать и изучить их. Я видел много форумов, упоминающих Node.js, но я понимаю, что это также будет выполнять работу только на стороне сервера.

Я был бы признателен за любую помощь в том, где еще/другие темы я должен изучить. Заранее спасибо.


person Arash    schedule 29.08.2016    source источник


Ответы (1)


Это вообще выполнимо? Я много исследовал, и кажется, что это невозможно из соображений безопасности?

Ты прав. Браузеры не имеют доступа к COM-порту. Неважно, какой язык или фреймворк вы выберете, браузер не предоставит вам такой доступ.

Вам нужно будет сделать отдельное настольное приложение. Вы можете использовать HTML и JavaScript для доступа к последовательным портам, но не в браузере. Это могут сделать приложения для Chrome (которые на самом деле скоро исчезнут), а также приложение, использующее Electron.

person vcsjones    schedule 29.08.2016
comment
Может ли автономное приложение работать в фоновом режиме и действовать как мост между веб-страницей и COM-портом? Мне просто интересно, как это делают одностраничные веб-приложения, такие как Fitbit. Кроме того, спасибо за электронное предложение. Глядя на это. - person Arash; 29.08.2016
comment
@arow да, это возможно. Это также чрезвычайно сложно сделать безопасно, но суть в том, чтобы сделать что-то вроде создания приложения, которое настраивает сервер на локальном хосте, и ваш SPA отправляет запросы AJAX на локальный хост. - person vcsjones; 29.08.2016