TCP соединение и отправка комманд

Links
Offline
Зарегистрирован: 19.02.2021

Всем привет. Есть проблема, незнаю в какакую сторону копать. Короче. В локальной сети есть устройство которое через TCP порт может принимать команды. Я использую NodeMCU v3 для подключения и управления. С подключением, собственно проблем нет. Все подключается. А вот с управлением проблемы. Отправляю команды стандартным  client.print(), устройство на них не реагирует. Подключаюсь к компьютеру для проверки, сообщеня приходят. Нашел информацию по устройству, что его протокол совместим с Telnet, который по умолчанию отправляет CRLF между строками, а устройство требует только LF. На тему Line Feed нашел кучу инфы для линуксовых программ и ничего для ардуины. Со строкой пробовал разные варианты и  client.println(), и "\n", неработет... собственно неработающий кусок:

  WiFiClient client;
  if (!client.connect (host, port)) {
     Serial.println("connect ERROR");
    delay(3000);
     Serial.println("Monitor connected");
     delay(1000);
  }
      client.println("MONITOR A:");
      client.println("Brightness: 10");
      client.println("Saturation: 0");
      
      client.stop();
      Serial.println("Всьо...");
      delay(10000);      

Пните хотябы в какую сторону копать, ато уже совсем из сил выбился...

rkit
Offline
Зарегистрирован: 23.11.2016

Links пишет:

Отправляю команды стандартным  client.print(), устройство на них не реагирует.

В коде нет ни одного вызова client.print(). А как раз его и нужно использовать, с явными окончаниями строк.

Links
Offline
Зарегистрирован: 19.02.2021

P.S. Ошибку в (!client.connect (host, port)) уже увидел. Всеравно неработает.

Links
Offline
Зарегистрирован: 19.02.2021

client.println() - это один из вариантов остался.

      client.print("MONITOR A:");
      client.print("\n");
      client.print("Brightness: 10");
      client.print("\n");
      client.print("Saturation: 0");
      client.print("\n");

Также неработает. Блин, где-то я совсем не там копаю по ходу... 

rkit
Offline
Зарегистрирован: 23.11.2016

client.print("MONITOR A:\n");

Тут проблем нет, разбирайся в устройстве.

b707
Offline
Зарегистрирован: 26.05.2017

Что-то я не вижу, где вы в вашем коде ответ принимаете. То что команды не срабатывают, не обязательно означает что они не доходят. Надо получать и анализировать ответы сервера

Links
Offline
Зарегистрирован: 19.02.2021

Да. Все верно. Я ответы от сервера ардуиной не принимаю. Я почему-то подумал что это не обязательно, так как при подключении с компьютера после отправки комманды ничего не возвращается. Единственное что при подключении устройство отправляет дамп состояния, а он там немалый такой, строк на 35-40. Вот я и поленился и проигнорировал его...