Управление контроллером TXT через веб страницу

Обсуждаем модели и конструкции, построенные своими руками
Muaed
Сообщения: 38
Зарегистрирован: 19 окт 2021, 12:38

Управление контроллером TXT через веб страницу

Сообщение Muaed »

Можно ли отправить в ТХТ контроллер с веб страницы из формы команды на включения моторчиков или получить данные с енкодера?
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Управление контроллером TXT через веб страницу

Сообщение Mr.Kubikus »

Я перенёс вопрос в отдельную ветку
С уважением, Григорий
GitHub FB ВК
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Управление контроллером TXT через веб страницу

Сообщение Mr.Kubikus »

Muaed писал(а):
09 дек 2021, 19:04
Можно ли отправить в ТХТ контроллер с веб страницы из формы команды на включения моторчиков или получить данные с енкодера?
Добрый день!

Такую задачу можно решить разными способами:
1. На борту TXT уже имеется веб-сервер - civetweb. Он использует порт 80. Можно запустить еще один экземпляр на другом свободном порту и реализовать взаимодействие между браузером и входами/выходами TXT через CGI (C/C++/Python) .
2. Собрать приложение на C/C++, которое реализует все необходимые функции. В качестве встраиваемого веб-сервера можно использовать упомянутый ранее civetweb. Пример решения.
3. Написать приложение на языке Python, которое использует модуль http.server для взаимодействия с браузером и модуль ftrobopy для управления входами/выходами контроллера
4. Аналогично пункту 3, но с использованием языка программирования JavaScript и среды исполнения NodeJS
5. Аналогично пункту 3, но с использованием языка программирования Go.

Вам нужно готовое решение или вы хотите разобраться в технологии?
С уважением, Григорий
GitHub FB ВК
Muaed
Сообщения: 38
Зарегистрирован: 19 окт 2021, 12:38

Re: Управление контроллером TXT через веб страницу

Сообщение Muaed »

для управления входами/выходами, из закладки Тест контроллера, какой формат команды отправляет программа RoboPro?
Можно ли такие команды подать из формы веб страницы?
Я хотел самому разобраться, но все ссылки на английском.
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Управление контроллером TXT через веб страницу

Сообщение Mr.Kubikus »

для управления входами/выходами, из закладки Тест контроллера, какой формат команды отправляет программа RoboPro?
ROBO Pro в режиме "Тест контроллера" открывает TCP-соединение с сервером TxtControlMain, который выполняется на контроллере TXT, через порт 65000 и затем обменивается командами, описание которых можно найти в официальном репозитарии txt_demo_c_online fischertechnik.
Можно ли такие команды подать из формы веб страницы?
Нет, такие команды нельзя отправить из формы веб страницы т.к. данные из формы отправляются на веб-сервер по протоколу HTTP, который отличается от указанного выше. Вам понадобится промежуточный узел на стороне TXT, который будет принимать команды по протоколу HTTP и переводить его в протокол, который понимает сервер TxtControlMain. Это решение можно сделать на языке Python, который есть в контроллере TXT.
Я хотел самому разобраться, но все ссылки на английском.
Отлично! Буду рад помочь вам. Задавайте вопросы.
С уважением, Григорий
GitHub FB ВК
Muaed
Сообщения: 38
Зарегистрирован: 19 окт 2021, 12:38

Re: Управление контроллером TXT через веб страницу

Сообщение Muaed »

Добрый день!
UDP или сокеты можно использовать.(у меня практика на Делфи)

С уважением, Муаед.
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Управление контроллером TXT через веб страницу

Сообщение Mr.Kubikus »

Добрый день!
Muaed писал(а):
15 дек 2021, 11:28
UDP или сокеты можно использовать.(у меня практика на Делфи)
Произвольный UDP пакет отправить из браузера в TXT не получится т.к. это не допускается браузером для обеспечения безопасности. Из браузера можно отправлять команды на TXT без перезагрузки страницы с помощью технологии AJAX в виде HTTP запросов к серверу.
С уважением, Григорий
GitHub FB ВК
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Управление контроллером TXT через веб страницу

Сообщение Mr.Kubikus »

Muaed писал(а):
15 дек 2021, 11:28
(у меня практика на Делфи)
Я думаю, что платформа Делфи сейчас уже не актуальна для построения приложений с web-интерфейсом. Рекомендую рассмотреть Python как язык для разработки ПО для вашей задачи. Этот язык сейчас крайне популярен обучения основам программирования и подходит для быстрой сборки прототипов приложений и поддерживается контроллером TXT - у него на борту установлен Python 3.8. Вот пример на Питоне, который реализует примитивный веб-серевер:

Код: Выделить всё

import http.server
import socketserver

PORT = 8000

Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()
Создайте на своем компьютере в текстовом редакторе, который поддерживает UTF-8, файл web-server.py с приведенным выше содержимым и загрузите в контроллер. Также можно создать файл сразу на контроллере если вы умеете работать с редактором vi - он есть на борту у TXT. Затем подключитесь к контроллеру через SSH и запустите приложение:

Код: Выделить всё

python web-server.py
После этого, если контроллер подключен к ПК чере USB, можно открыть в браузере адрес http://192.168.7.2:8000. Вы увидите ответ веб-сервера - содержимое папки, в которой он был запущен:
txt-python-simple-web-server-02.jpg
txt-python-simple-web-server-02.jpg (19.56 КБ) 18629 просмотров
В консоли контроллера TXT, где запущен web-server.py будут следующие сообщения:

Код: Выделить всё

$ python web-server.py 
serving at port 8008
192.168.7.1 - - [16/Dec/2021 12:14:28] "GET / HTTP/1.1" 200 -
192.168.7.1 - - [16/Dec/2021 12:14:35] "GET / HTTP/1.1" 200 -
Попробуйте этот пример у себя. Буду рад помочь вам разобраться с этой задачей.
С уважением, Григорий
GitHub FB ВК
Muaed
Сообщения: 38
Зарегистрирован: 19 окт 2021, 12:38

Re: Управление контроллером TXT через веб страницу

Сообщение Muaed »

Как из этой формы

Код: Выделить всё

<form action="/cgi_bin/ssss.py" >
<input type="text" name="left"><br />
<input type="text" name="right"><br />
<p><input type="submit"></p>
</form>
передать данные на сервер

Код: Выделить всё

import http.server
import socketserver

PORT = 8000

Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()
для управление роботом?
Muaed
Сообщения: 38
Зарегистрирован: 19 окт 2021, 12:38

Re: Управление контроллером TXT через веб страницу

Сообщение Muaed »

обработчик

Код: Выделить всё

#!/usr/bin/env python3

import cgi

our_form=cgi.FieldStorage()

in_name=our_form.getfirst("in_name","не задано")
in_comment=our_form.getfirst("in_comment","не задано")

print("Content-type: text/html")
print()
print(in_name)
print(in_comment)
Html файл нормально запускается.
При отправке данных из формы возвращается текст исходника обработчика.
Где я допускаю ошибку?
Веб сервер не запускает *.py файлы.
Ответить