我们在开发过程中,有时需要一个第三方的硬件工具(UartLogger)来监控串口Tx、Rx的具体通信内容,这时我们用Ubeeto物联网开发板就可以很容易实现这一目的。并且开发板可以将监控到的Tx、Rx通信内容以各种形式输出或存储在开发板的TF卡上。
下图举了一个典型的例子来诠释UartLogger的作用:
利用UartLogger我们就可以在开发ESP8266串口WIFI模块时,捕捉到MCU和ESP8266通信的具体内容。其他类似的场景只要是Uart接口,UartLogger都可以发挥其作用。
注意:本例中假设被监控的Uart口波特率是115200,实际波特率需要您自己调整。
--配置Core的USB接口作为虚拟串口连接电脑,打印输出UartLogger捕捉到的内容 --当然,您也可以配置成蓝牙输出,WIFI输出,看您心情了 LIB_UsbConfig("CDC_PD") LIB_GpioOutputConfig("D8","STANDARD") LIB_GpioOutputConfig("D9","STANDARD") LIB_Uart0Config("BAUDRATE_115200") LIB_Uart1Config("BAUDRATE_115200") prefix0 = {13, 10, 82, 88, 48, 58, 13, 10} --"\r\nRX0:\r\n" prefix1 = {13, 10, 82, 88, 49, 58, 13, 10} --"\r\nRX1:\r\n" --开始大循环 while(GC(1) == true) do --记录TX数据线上的消息 recv_flag0,recv_tab0 = LIB_Uart0Recv() if recv_flag0 == 1 then LIB_GpioToggle("D8") --LED1 Toggle LIB_UsbCdcSend(prefix0) LIB_UsbCdcSend(recv_tab0)--在串口终端上显示RX0引脚捕捉到的内容 end --记录TX数据线上的消息 recv_flag1,recv_tab1 = LIB_Uart1Recv() if recv_flag1 == 1 then LIB_GpioToggle("D9") --LED2 toggle LIB_UsbCdcSend(prefix1) LIB_UsbCdcSend(recv_tab1)--在串口终端上显示RX1引脚捕捉到的内容 end end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在API文档中通过Ctrl+F查询。
本实验中,我们捕捉和ESP8266串口WIFI模块的通信内容,并打印输出到终端软件上,下图为捕捉到的具体内容:
将监控到的Tx、Rx通信内容存储在TF卡这一功能在找问题时非常方便,我们不用一直守着设备,而是在某个时间取出TF卡查看内容即可。
具体实现很简单,只需要将上面例程中的LIB_UsbCdcSend()函数换成LIB_Fwrite()即可,例如:
原代码
LIB_UsbCdcSend(prefix0) LIB_UsbCdcSend(recv_tab0)--在串口终端上显示RX0引脚捕捉到的内容 LIB_UsbCdcSend(prefix1) LIB_UsbCdcSend(recv_tab1)--在串口终端上显示RX1引脚捕捉到的内容
替换后的代码:
LIB_Fwrite("abc.txt", prefix0) LIB_Fwrite("abc.txt", recv_tab0)--将RX0引脚捕捉到的内容存到TF卡上abc.txt文件中 LIB_Fwrite("abc.txt", prefix1) LIB_Fwrite("abc.txt", recv_tab1)--将RX1引脚捕捉到的内容存到TF卡上abc.txt文件中
简单、快捷、高效、强大的物联网开发板
© 2022. All Rights Reserved. 粤ICP备2021058065号