20行代码实现(UartLogger)串口监控记录器

前言

shineblink core 开发板(简称Core)的库函数支持Uart功能,所以只需要调用两个API,即可实现Uart通信。

PS:Core 仅用五、六行代码即可实现Wifi/Ble/NB/Lora/ThreadMesh/RFID/Eth/Usb/RS485/RS232通信、以及30多种传感器/10多种硬件外设/10多种Mcu内设功能,并且这些功能最多可以 5 种随机组合同时运行。更多关于Core的内容可以在 shineblink.com 上了解。

一、UartLogger功能介绍

我们在开发过程中,有时需要一个第三方的硬件工具(UartLogger)来监控串口Tx、Rx的具体通信内容,这时我们用Core就可以很容易实现这一目的。并且Core可以将监控到的Tx、Rx通信内容以各种形式输出或存储在Core的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
	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
	
	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

三、实验结果

本实验中,我们捕捉和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文件中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值