• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

PySerial. Serial over TCP/IP с 8266

achest

New member
Добрый день!

Есть программа, называется BCNC. она написана на Питоне и использует библиотеку pyserial.
Есть СНС машинка на базе ардуино, grbl, тянуть кабель к которой не хочется.

В документации на bcnc стоит: введите socket://192.168.x.x:81 или rfc2217://192.168.x.x:23 (это телнет)

Собрал схему. Нашел библиотеку. https://github.com/arkypita/ESP8266-SerialWebSocket
прошил. В броузере с использованием плагина для сокета все работает.
Подключаю BCNC - получаю странную ошибку, c Upgrade Connection.

Ладно, попробую по другому. Пусть вместо веб сокета будет телнет. https://github.com/arkypita/ESP8266-SerialTelnet
Запускаю телнет - все работает.

С pySerial Опять ошибка:
"Remote does not seem to support RFC2217 or BINARY mode {!r}".format(mandadory_options))
serial.serialutil.SerialException: Remote does not seem to support RFC2217 or BINARY mode [we-BINARY:False(INACTIVE), we-RFC2217:False(REQUESTED)]

Если посмотреть в код библиотеки, то он просто принимает байты и отправляет их из одного потока в другой... RFC2217 явно что-то большее, т.е. ошибка -ок.
Поиск на RFC2217 esp8266 ничего не дает. Поиск по ключевому слову Телнет - 3-4 кода, по сути с такой же функциональностью как вышеприведенный.

Вопрос такой: Как называется библиотека с помощью которой можно соеденить pySerial и мое ардуино. Мне все равно как там протокол называется, главное работает.

Спасибо.
 

pvvx

Активный участник сообщества

achest

New member
И где вы там нашли поддержку протокола BCNC или RFC2217 с установкой параметров для UART, передачей логина и пароля?
Питон вам и отвечает, что вы не то установили на ESP :)
Параметры UART зашиты по умолчанию в ESP и их менять не надо. bCNC работает по последовательному порту.




Вот документация на bCNC.


Directly in bCNC

i found, that pyserial library already knows how to connect to remote serial using this URL syntax (#592):
  • socket://localhost:2217 (= plain TCP connection)
  • rfc2217://localhost:2217 (= rfc2217 connection)
Вот кусок доки из pySerial:
The connection is not encrypted and no authentication is supported! Only use it in trusted environments.


Повторяю вопрос: Что надо загрузить в ESP что бы bCNC+Grbl работал.
 

pvvx

Активный участник сообщества
Параметры UART зашиты по умолчанию в ESP и их менять не надо. bCNC работает по последовательному порту.
Но pySerial требует исполнения некоторых команд, описанных в RFC2217 :p
И ему пофиг что у вас не требуется менять скорость UART
Что мне поставить на ESP? Я кажется так вопрос и задал.
Повторяю вопрос: Что надо загрузить в ESP что бы bCNC+Grbl работал.
Спросите это у того, кто собирается играть вашу игру или в Предложения о выполнении проектов на заказ
 

pvvx

Активный участник сообщества
Вот тут играют в вашу игру, от куда вы скопировали что надо поставить:
Но там про bCNC ни слова...
 

achest

New member
Тут про вашу ошибку и как реализовать на ESP32.
Ну там очень странная переписка... Не понятно заработало у него или нет. Я вот смотрю его код... ( https://github.com/mstrens/grbl_controller_esp32 ) Я не вижу ни сокета ни RFC2217.

Код:
telnet.cpp:
WiFiServer telnetServer(23);

...
void telnetInit() {
  telnetServer.begin();
  telnetServer.setNoDelay(true) ;
..
void sendViaTelnet( char c) {
  if (telnetClient && telnetClient.connected()) {
    telnetClient.print(c) ;
  }
}

comm.c
void getFromGrblAndForward( void ) {
...
 c=Serial2.read() ;
.....
 sendViaTelnet((char) c) ;  
}
 

achest

New member
Спросите это у того, кто собирается играть вашу игру или в Предложения о выполнении проектов на заказ
Использование ESp8266 в качестве WIFI -Bridge это вроде как семое что есть стандартное применение! Почему нет тогда нормальной (бесплатной) библиотеки? Почему нужно ее специально писать?
 

pvvx

Активный участник сообщества
Использование ESp8266 в качестве WIFI -Bridge это вроде как семое что есть стандартное применение! Почему нет тогда нормальной (бесплатной) библиотеки? Почему нужно ее специально писать?
По тому, что вы начали с BCNC и запросили RFC2217. Это потом оказалось, что достаточно просто сокета.
А стандартного сокета на TCP-UART не может быть в принципе, т.к. у ESP нет нормального буфера (мало RAM) и каждый выбирает свой ограниченный размер, как и что означает началом-концом блока (какая межсимвольная пауза и прочее). И в сокете без RTS/CTS или прочих доп. сигналов не узнать есть ли соединение и не переполнен ли буфер... И так по мелочи накапливается всякого, что никто в здравом уме не может частный итог считать как "стандартное применение".
 
Сверху Снизу