如何停止调试信息打印到串行 esp8266 websocketioclient
How to stop debug info from printing to serial esp8266 websocketioclient
我正在从这里构建一个基于 Socket-IO-client 的项目 https://github.com/timum-viw/socket.io-client
我需要关闭所有正在打印的串行数据,除了我发送到串行的数据。我尝试删除 #define USE_SERIAL 并删除或更改 USE_SERIAL 以使用 Serial1 端口还编辑了 SocketIOClient.cpp 以删除其中的调试语句,但仍然有很多这样的...
[WS][0][sendFrame] sending Frame Done (4506us).
[WS][0][handleWebsocketWaitFor] size: 2 cWsRXsize: 0
[readCb] n: 2 t: 597463
[WS][0][handleWebsocketWaitFor][readCb] size: 2 ok: 1
[WS][0][handleWebsocket] ------- read massage frame -------
[WS][0][handleWebsocket] fin: 1 rsv1: 0 rsv2: 0 rsv3 0 opCode: 1
[WS][0][handleWebsocket] mask: 0 payloadLen: 1
[readCb] n: 1 t: 597478
[WS][0][handleWebsocket] text: 3
我想接收一个 websocket 消息并将其打印到串行,以便 arduino mega 可以读取传递给它的串行。我不想解析所有正在打印的序列来找到我真正需要的消息。
我正在使用基本的 nodemcu esp8266 12E 模块,使用 arduino ide 1.8.5 进行编码。我确定我遗漏了一些简单的东西。
其实很简单。在 socketIoClient.h 中你有这样的定义:
#define SOCKETIOCLIENT_DEBUG(...) Serial.print(__VA_ARGS__);
您可以将其更改为:
#define SOCKETIOCLIENT_DEBUG(...) do{} while(0);
或简单地:
#define SOCKETIOCLIENT_DEBUG(...)
那应该让你摆脱调试消息,但我认为 esp8266 本身也会在某些特殊事件(如连接或断开连接到 AP)时向 UART 打印一些调试消息。您可能需要遵循 espressif 的 API 参考资料:
"os_install_putc1((void *)uart1_write_char) in uart_init will set os_printf to be output from UART 1, otherwise, os_printf default output from UART 0."
os_printf 被 OS 以及许多应用程序用作默认打印功能。 Arduino 的串行库应该直接使用 uart0 而不是 os_printf 所以执行上述操作只会让你摆脱 OS 产生的消息。
我知道这很简单,但我忽略了一些东西。 Solomons 的回答是有道理的,但我在检查 Stack Overflow 并看到他的 post 之前就解决了它。解决方案是结合他的回答或注释掉 .cpp 文件中的调试语句,但还需要进入 Arduino IDE 工具菜单并将 DEBUG PORT 设置为 "disabled" 并将 DEBUG LEVEL 设置为 "None"。我之前已经尝试过,但我的代码中的一个错误让我认为关闭了所有串行通信。但是用新代码重新审视它产生了只打印我的
的预期结果
Serial.print();
声明感谢您的帮助。
我正在从这里构建一个基于 Socket-IO-client 的项目 https://github.com/timum-viw/socket.io-client
我需要关闭所有正在打印的串行数据,除了我发送到串行的数据。我尝试删除 #define USE_SERIAL 并删除或更改 USE_SERIAL 以使用 Serial1 端口还编辑了 SocketIOClient.cpp 以删除其中的调试语句,但仍然有很多这样的...
[WS][0][sendFrame] sending Frame Done (4506us).
[WS][0][handleWebsocketWaitFor] size: 2 cWsRXsize: 0
[readCb] n: 2 t: 597463
[WS][0][handleWebsocketWaitFor][readCb] size: 2 ok: 1
[WS][0][handleWebsocket] ------- read massage frame -------
[WS][0][handleWebsocket] fin: 1 rsv1: 0 rsv2: 0 rsv3 0 opCode: 1
[WS][0][handleWebsocket] mask: 0 payloadLen: 1
[readCb] n: 1 t: 597478
[WS][0][handleWebsocket] text: 3
我想接收一个 websocket 消息并将其打印到串行,以便 arduino mega 可以读取传递给它的串行。我不想解析所有正在打印的序列来找到我真正需要的消息。
我正在使用基本的 nodemcu esp8266 12E 模块,使用 arduino ide 1.8.5 进行编码。我确定我遗漏了一些简单的东西。
其实很简单。在 socketIoClient.h 中你有这样的定义:
#define SOCKETIOCLIENT_DEBUG(...) Serial.print(__VA_ARGS__);
您可以将其更改为:
#define SOCKETIOCLIENT_DEBUG(...) do{} while(0);
或简单地:
#define SOCKETIOCLIENT_DEBUG(...)
那应该让你摆脱调试消息,但我认为 esp8266 本身也会在某些特殊事件(如连接或断开连接到 AP)时向 UART 打印一些调试消息。您可能需要遵循 espressif 的 API 参考资料:
"os_install_putc1((void *)uart1_write_char) in uart_init will set os_printf to be output from UART 1, otherwise, os_printf default output from UART 0."
os_printf 被 OS 以及许多应用程序用作默认打印功能。 Arduino 的串行库应该直接使用 uart0 而不是 os_printf 所以执行上述操作只会让你摆脱 OS 产生的消息。
我知道这很简单,但我忽略了一些东西。 Solomons 的回答是有道理的,但我在检查 Stack Overflow 并看到他的 post 之前就解决了它。解决方案是结合他的回答或注释掉 .cpp 文件中的调试语句,但还需要进入 Arduino IDE 工具菜单并将 DEBUG PORT 设置为 "disabled" 并将 DEBUG LEVEL 设置为 "None"。我之前已经尝试过,但我的代码中的一个错误让我认为关闭了所有串行通信。但是用新代码重新审视它产生了只打印我的
的预期结果Serial.print();
声明感谢您的帮助。