2

我是Arduino的新手。我使用Arduino IDE用于上传代码到ESP8266模块。我在Tiva-TM4C123板上写了一个ATM应用程序。我正在尝试使用Telnet和IP地址从Internet连接到应用程序。我将ESPTELNET库的示例代码上传到ESP8266模块,并使用UART将ESP WiFi模块连接到TM4C123卡。ESP8266模块将数据从TIVA卡发送到我通过Telnet连接的Putty屏幕。但它不会转移我从Putty屏幕写入Tiva卡的内容。我找不到像telnet.read()这样的函数。是否有一个Telnet函数,可以从Putty屏幕中读取数据?我搜索了很多但找不到它。 If I find this function, I know that I can send the read data to the tiva card with Serial.write(telnet.read).ESP's RX and TX are connected to the tiva card. I created a wireless connection to the Putty screen. When a char or string is entered on the telnet screen, it will send it to the tiva card with Serial write from the TX of the ESP8266.I want to write a code that will run in the following logic.

if(telnet.available()){serial.print(telnet.read());}

下面是示例代码

#include“esptelnet.h”/ * -------------------------------------------- * / #define serial_speed 115200 #define wifi_ssid“****”#define wifi_password“****”/ * ------------------------------------------------- * / esptelnet telnet;ipaddress ip;/ * -------------------------------------------  * / void setupserial(长速度,String msg =“”){serial.begin(速度);虽然(!序列){}延迟(200);serial.println();serial.println();if(msg!=“”)serial.println(msg);} / * ----------------------------------------- */ bool isConnected() { return (WiFi.status() == WL_CONNECTED); } /* ------------------------------------------------- */ bool connectToWiFi(const char* ssid, const char* password, int max_tries = 20, int pause = 500) { int i = 0; WiFi.mode(WIFI_STA); #if defined(ARDUINO_ARCH_ESP8266) WiFi.forceSleepWake(); delay(200); #endif WiFi.begin(ssid, password); do { delay(pause); Serial.print("."); } while (!isConnected() || i++ < max_tries); WiFi.setAutoReconnect(true); WiFi.persistent(true); return isConnected(); } /* ------------------------------------------------- */ void errorMsg(String error, bool restart = true) { Serial.println(error); if (restart) { Serial.println("Rebooting now..."); delay(2000); ESP.restart(); delay(2000); } } /* ------------------------------------------------- */ void setupTelnet() { // passing on functions for various telnet events telnet.onConnect(onTelnetConnect); telnet.onConnectionAttempt(onTelnetConnectionAttempt); telnet.onReconnect(onTelnetReconnect); telnet.onDisconnect(onTelnetDisconnect); // passing a lambda function telnet.onInputReceived([](String str) { // checks for a certain command if (str == "ping") { telnet.println("> pong"); Serial.println("- Telnet: pong"); } }); Serial.print("- Telnet: "); if (telnet.begin()) { Serial.println("running"); } else { Serial.println("error."); errorMsg("Will reboot..."); } } /* ------------------------------------------------- */ // (optional) callback functions for telnet events void onTelnetConnect(String ip) { Serial.print("- Telnet: "); Serial.print(ip); Serial.println(" connected"); } void onTelnetDisconnect(String ip) { Serial.print("- Telnet: "); Serial.print(ip); Serial.println(" disconnected"); } void onTelnetReconnect(String ip) { Serial.print("- Telnet: "); Serial.print(ip); Serial.println(" reconnected"); } void onTelnetConnectionAttempt(String ip) { Serial.print("- Telnet: "); Serial.print(ip); Serial.println(" tried to connected"); } /* ------------------------------------------------- */ void setup() { setupSerial(SERIAL_SPEED, "Telnet Test"); Serial.print("- Wifi: "); connectToWiFi(WIFI_SSID, WIFI_PASSWORD); if (isConnected()) { ip = WiFi.localIP(); Serial.print(" "); Serial.println(ip); setupTelnet(); } else { Serial.println(); errorMsg("Error connecting to WiFi"); } } /* ------------------------------------------------- */ void loop() { telnet.loop(); // send serial input to telnet as output // this part read tiva and transmit to ESP if (Serial.available()) { telnet.print(Serial.read()); } } //* ------------------------------------------------- */
4.
  • 我认为你只能通过键盘发送数据…PuTTY没有屏幕读取功能 7月31日在15:32
  • 试一试Serial.write (telnet.read ());.最好是使用如果在这里:而(telnet.available ()) 7月31日在15:39
  • 问题是没有telnet.read()或telnet. available()函数。 7月31日15:47
  • 好的。对不起,我不知道图书馆在哪。我编写了一个更简单的telnet服务器库TelneStream,但它实际上只是一个包装在薄层中的服务器类。Arduino esp8266 3.0有我的ArduinoWiFiServer演示由PagerServer telnet示例 7月31日在15:51
0.

我看来,图书馆已被编写为接受终止的输入由换行符终止。

char c = client.read();if(c!='\ n'){if(c> = 32){输入+ = c;} // eol  - >发送输入} els {if(on_input!= null)on_input(输入);输入=“”;}

它将继续向输入缓冲区添加字符,直到检测到换行字符,然后将内容传递给.onInputReceived收到的处理程序。

如果我的理解是正确的,你可以做的最好的事情而不改变图书馆本身是: -

telnet.oninputreceive([](string str){serial.println(str);});

同样,如果我是正确的,那么换行符将总是需要出现来推动数据通过。

希望这对你有用。

6.
  • @Juraj精确。 7月31日15:59
  • 那么为什么你写的是改变图书馆 7月31日16:01
  • @VoidPointer是,当我使用此时,有数据交换,但我需要调试它以确认它是正确的。我会尽快回复您。 7月31日16:01
  • 1
    对不起。现在我明白你的意思了。它是 7月31日16:03
  • @juraj因为它不仅仅是有关数据的问题。纽诺还必须出席交货,而不是传输收到的任何东西。如果没有这种理解,它可能会很贡献为什么数据没有推出。 7月31日16:04

你的答案

点击“发布答案”,您同意我们的同意服务条款隐私政策Cookie政策

不是您要找的答案?浏览其他标记的问题问你自己的问题