硬汉嵌入式论坛

 找回密码
 立即注册
查看: 842|回复: 3
收起左侧

[LUA教程] H7-TOOL的LUA小程序教程第12期:离线串口日志功能,存储到TOOL的4GB容量eMMC磁盘(2023-12-19)

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2023-12-19 00:16:17 | 显示全部楼层 |阅读模式
LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用,支持在线调试运行,支持离线运行。TOOL的LUA教程争取做到大家可以无痛调用各种功能函数,不需要学习成本。

参考帖子:
1、H7-TOOL的LUA小程序教程第6期:文件系统API方便大家SPI,CANFD,I2C和串口操作目标设备就可以实现脱机数据记录2022-08-30
https://www.armbbs.cn/forum.php?mod=viewthread&tid=115122

2、H7-TOOL的LUA小程序教程第5期:串口开发,含Modbus(2023-06-10)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=110616

1、简易功能实现:

a、CSV格式逗号是分割,\r\n是下一行。
b、先提供一个简易的LUA离线版串口日志功能,以CSV格式存储到eMMC中。
c、目标板程序每秒发送一次数据
     printf("%d,%d,%d", a++, b++, c++);
     数据逗号分隔即可,然后LUA小程序里面给这个数据加了个时间戳,末尾加上\r\n,这样就是一条完整的CSV信息。再f_write写入到eMMC磁盘。

2、H7-TOOL进入虚拟U盘

上电首界面长按S键 -> 系统设置 -> USB eMMC磁盘, 进入eMMC模拟U盘后,在如下路径新建文件夹

串口日志LUA
串口日志记录


12.png

将LUA文件存到日志LUA文件夹里面

uart.lua (1.58KB)

下载 (1).png

3、操作显示屏,进入LUA接收状态。

12.png

目标板还没有发数据时,提示如下信息。

下载 (2).png

目标板子,每秒发送一次信息,记录效果如下,大家根据需要修改LUA小程序来适配每次接收超时时间,当前LUA小程序设置是发送速度的一半,即500ms
len, str = uart_recive(1, 100, 500) -- 串口1接收,最大100个字符,超时时间500ms

12.png

点击C键,可以退出监测:

下载 (3).png

进入eMMC虚拟U盘,可以看到test.csv文件,打开后看

128.png

4、LUA小程序内容,大家也可以在上位机上运行这个LUA小程序,也是可以的:

[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步:设置串口波特率115200,奇偶校验位无,数据位8,停止位1
-------------------------------------------------------
uart_cfg(1, 115200, 0, 8, 1)

count = 0
offset = 0
reccout = 100 -- 接收100次

printf("进入串口日志接收模式")
-------------------------------------------------------
--   第3步:执行操作
-------------------------------------------------------
while(reccout > 0)
do
  delayms(1) -- 加上这个延迟方便显示屏版展示信息
  len, str = uart_recive(1, 100, 500) -- 串口1接收,最大100个字符,超时时间500ms
  if(len ~= 0) then  -- 接收成功
    reccout = reccout - 1
    count = count + 1
    printf("成功接收数据次数=%d", 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文件地址偏移=%d", offset)
      offset = offset + #totalstr
    else
      printf("写入CSV文件失败")
    end
  else -- 接收超时
    printf("100ms等待超时")
  end

  key =  get_key() -- 监测到C键单击,退出监测

  if(key == 8) then
    reccout = 0
    printf("终止记录")
  end

end


使用上位机可以方便验证LUA程序的正确性,不用每次都导入到eMMC测试是否正确

下载 (4).png

评分

参与人数 1金币 +10 收起 理由
Vxworks + 10 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2023-12-19 17:58:35 | 显示全部楼层
可以使用了

12.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2023-12-20 08:49:59 | 显示全部楼层
更新完成,已经发布。
回复

使用道具 举报

0

主题

69

回帖

69

积分

初级会员

积分
69
发表于 2023-12-20 10:02:38 | 显示全部楼层
前几天我也实现了个,不过我是txt文本记录的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 07:25 , Processed in 0.204705 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表