• Система автоматизации с открытым исходным кодом на базе 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 или прочих доп. сигналов не узнать есть ли соединение и не переполнен ли буфер... И так по мелочи накапливается всякого, что никто в здравом уме не может частный итог считать как "стандартное применение".
 
Сверху Снизу