|
为了提高系统程序的稳定性,且方便查找程序在长期运行过程中发生报错问题。就需要调试工具长期接入被测设备,通电1,2天,记录设备运行数据,最后电脑记事本ctrl+F查找报错点和报错时间;亦或者用excel导入做图标数据分析等都可以使用本lua小程序。
目前我正使用此小程序用于记录设备上发生的链表剩余可分配空间不足,运行参数检查,通讯丢包等异常查找等非常方便。期待坛友们对此代码一起共同优化。
本文参考了第十二期帖子,并对其进行了优化:
https://www.armbbs.cn/forum.php?mod=viewthread&tid=122322&fromuid=58

1)Serial recording tool.lua 运行此程序用于记录串口日志到emmc
功能说明:
※追加记录方式,重新打开小程序可以继续上次记录点记录
※支持记录串口一和串口二(二选一)
※带时间戳保存
期待功能:
※对RTT记录支持
※对UTF-8编码格式的支持,目前仅支持GB2312 GBK编码
代码:
Serial recording tool.lua
(1.62 KB, 下载次数: 9)
[C]
-------------------------------------------------------
-- H7-TOOL 串口日志
-------------------------------------------------------
local str
local len
local offset
local count
local totalstr
local filepath = "0:/H7-TOOL/Lua/串口日志记录/test.csv" -- csv文件记录路径
local reccout
local ret
local key
function printf(...) print(string.format(...)) end
-------------------------------------------------------
-- 第2步:选择串口一,并设置串口波特率921600,奇偶校验位无,数据位8,停止位1
-------------------------------------------------------
uart_cfg(1, 921600, 0, 8, 1)
count = 0
offset = 0
fLen,bin = f_read(filepath,0,16*1024)
print("实际长度:",fLen)
print("文件内容")
print(bin)
offset = fLen --在源文本后追加文本
printf("进入串口日志接收模式")
-------------------------------------------------------
-- 第3步:执行操作
-------------------------------------------------------
while (1)
do
delayms(1) -- 加上这个延迟方便显示屏版展示信息
len, str = uart_recive(1, 100, 500) -- 串口1接收,最大100个字符,超时时间500ms
if(len ~= 0) then -- 接收成功
count = count + 1
printf("【Recv:\t%dByte】串口%d次接收",string.len(str), count)
time = os.time()
hms = os.date("%H:%M:%S,", time)
totalstr = hms..str.."\r\n" -- 合并字符串
ret = f_write(filepath, offset, totalstr) -- 写入到eMMC
if(ret == 1) then
printf("CSV 文件偏移:\t%d",offset)
offset = offset + #totalstr
else
printf("写入CSV文件失败")
end
end
key = get_key() -- 监测到C键单击,退出监测
if(key == 4) then
reccout = 0
printf("终止记录")
end
end
运行过程:
进入eMMC虚拟U盘,可以看到test.csv文件,打开后查看
2)Record viewer.lua 方便脱机查看记录历史
功能说明:
※将文件分页方式预览查看
※支持文件删除
期待功能:
※API对硬件翻页的支持
代码:
[C]
--F01=上一页,PageUp()
--F02=下一页,PageDn()
--F03=删除文件,Del()
-------------------------------------------------------
-- H7-TOOL 串口历史记录查看
-------------------------------------------------------
local len
local count
local totalstr
local filepath = "0:/H7-TOOL/Lua/串口日志记录/test.csv" -- csv文件记录路径
local key
local page=0
local ONE_PAGE_LEN=96 -- 单页显示最大长度
BIN_LEN,bin = f_read(filepath,0,16*1024)
--成功叫一声,失败叫三声
function TestErr(void)
beep()
delayms(100)
beep()
delayms(100)
beep()
end
function Del(void)
f_write(BIN_LEN,0)
end
function PageDn(void)
--截取前ONE_PAGE_LEN位
if(page>BIN_LEN) then
print("已经到底了")
TestErr()
return
end
page=page+ONE_PAGE_LEN
res = string.sub(bin,page-ONE_PAGE_LEN,page)
print(res)
end
function PageUp(void)
--截取前ONE_PAGE_LEN位
if(page<=0) then
print("已在顶部")
TestErr()
return
end
page=page-ONE_PAGE_LEN
res = string.sub(bin,page-ONE_PAGE_LEN,page)
print(res)
end

功能演示:
请解压后查看
H7 Tool 串口记录演示视频.zip
(14.95 MB, 下载次数: 2)
|
评分
-
查看全部评分
|