如何停止调试信息从打印到串行esp8266 websocketioclient

时间:2018-03-26 01:53:22

标签: socket.io arduino esp8266

我在这里建立一个基于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进行编码。我确信我有一些容易丢失的东西。

2 个答案:

答案 0 :(得分:0)

实际上非常简单。在socketIoClient.h中,你有一个如下的定义:

#define SOCKETIOCLIENT_DEBUG(...) Serial.print(__VA_ARGS__);

您可以将其更改为:

#define SOCKETIOCLIENT_DEBUG(...) do{} while(0);

或简单地说:

#define SOCKETIOCLIENT_DEBUG(...)

这应该可以摆脱调试消息,但我认为esp8266本身也会在某些特殊事件(如连接或断开连接到AP)时向UART输出一些调试消息。您可能需要遵循espressif的API参考:

uart_init中的“os_install_putc1((void *)uart1_write_char”将设置os_printf从UART 1输出,否则,os_printf默认从UART 0输出。“

os_printf被OS用作默认打印功能以及许多应用程序。 Arduino的串口lib应该直接使用uart0而不是os_printf,所以做上述操作只会让你无法获得操作系统产生的消息。

答案 1 :(得分:0)

我知道这很简单,我忽略了一些东西。 Solomons的回答很有意义,但我在检查Stack Overflow和看到他的帖子之前就解决了。解决方案是他的答案或评论.cpp文件中的调试语句的组合,但也需要进入Arduino IDE工具菜单并将DEBUG PORT设置为" disabled"和DEBUG LEVEL到"无"。我之前已经尝试过,但是我的代码中的一个错误让我认为关闭了所有的串行通信。但重新审视使​​用新代码产生了只打印我的

的预期结果
Serial.print();

声明感谢您的帮助。