广州大彩串口屏论坛_大彩开发者交流论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4505|回复: 4

关于文件读写函数不执行的问题,请解惑

[复制链接]

5

主题

13

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2021-7-6 11:42:44 | 显示全部楼层 |阅读模式
使用的是DC48480W040,贵司淘宝店的图片上把该型号归为物联型
因为要做文件读写,参考的文档是  LUA脚本API V1.4.pdf,还有论坛里面的例子
编译时的固件版本为3.0.925.0,符合手册里“固件版本要求:W系列>=3.0.590。0,F系列>= 4.1.401.0,M系列>= V6.1.59.00”的要求
使用file_open函数时出现如下错误:
error [string "--下面列出了常用的回调函数
..."]:7: attempt to call a nil value (global 'file_open')
程序代码就是粘贴自例子:local open_state = file_open("my.txt", FA_CREATE_NEW | FA_WRITE)


后来试了IO.open 可以使用。

问:应该如何解释?48480w040不是物联型?不支持file_这一系列的函数?


顺便问一下:模拟的时候,不写盘符,默认创建写入的文件在visualTFT目录下,若针对真实的屏,写屏内A分区或者B分区,是否就是“A:”和”B:“?
谢谢



回复

使用道具 举报

2

主题

1253

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12536
发表于 2021-7-6 14:27:10 | 显示全部楼层
您好,DC48480W040是物联型屏幕:
1、LUA脚本里面的文件读写的api函数,其中大部分为M系列专有函数,具体可以参考这个链接中的说明:http://doc.gz-dc.com/LUA/000_lua%20api.html#112---文件系统操作
2、关于物联型文件读写,建议写在B区,避免破坏A区、C区文件,具体可参考这个链接:http://doc.gz-dc.com/LUA/10_Wfile.html
Easy doesn't enter into Grown-up life
成年人的生活里面没有“容易”二字
回复

使用道具 举报

5

主题

13

帖子

79

积分

注册会员

Rank: 2

积分
79
 楼主| 发表于 2021-7-12 20:43:02 | 显示全部楼层
继续学习“文件系统”
因为我是物联型的屏,按2楼建议,使用IO函数读写文件,这应该是lua原生的函数(见LUA的教程)。
先直接跑官方的例子“【物联型】-文件读写V1.0”
发现没办法使用虚拟串口屏仿真,无论按“w”还是“r”键,都说文件不存在。注:官方例子里已经包含Public”文件夹了

下载到真实设备中dc48480w040,发现这样现象:第一次可以把字串写入test.txt文件,然后就不可以再写入了,但是可以多次读出;重启串口屏依然不行
把写入方式改为“a“,可以多次写入,但是是以append添加到上次的串末的。

结论:”w“方式貌似有什么问题?
btw:真实串口屏固件版本为3.0.0514.0,现在有没有新的固件了?是这个问题么?
回复

使用道具 举报

2

主题

1253

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12536
发表于 2021-7-13 09:11:12 | 显示全部楼层
本帖最后由 If后要接end 于 2021-7-13 10:45 编辑
一直在努力 发表于 2021-7-12 20:43
继续学习“文件系统”
因为我是物联型的屏,按2楼建议,使用IO函数读写文件,这应该是lua原生的函数(见LUA ...

您好,用虚拟串口屏仿真的话,文件的读写并不是写在Public文件夹里面,而是写在工程的project目录下,所以文件的路径要把例程中的“B:/”删去;另外,我这边用3.0.0514.0的固件测试了一下,确实存在您所说的问题,“w”覆盖写只能写一次,可以多次读,更新固件之后,可以实现正常读写。
Easy doesn't enter into Grown-up life
成年人的生活里面没有“容易”二字
回复

使用道具 举报

5

主题

13

帖子

79

积分

注册会员

Rank: 2

积分
79
 楼主| 发表于 2021-7-14 16:17:13 | 显示全部楼层
最后的总结(问题解决啦,已经结帖~):
针对物联型触摸屏文件读写的代码有2个例子,都可以运行,只是判断读写出错时的代码不同:
一个是     【物联型】-文件读写V1.0 ,这代码是用调用IO函数的返回值是否为nil,作为判定依据;
一个是     工程文件-文本保存V1.0,这代码里用了assert断言,来捕捉一个异常;

两个程序都必须把物理屏的固件升级到3.0.598.0或者以上,才能正确运行;我之前因为屏买得比较早,是3.0.514.0,所以就会有错误
“物联型文件读写”的那个程序里少了一句file:close(),我也是调了好久才发现的,现在把那个函数完整的代码贴在下面,让其他用户少走点弯路:
-- 自定义函数(非回调函数,可以修改)
function my_read_file()
   
    local info = nil
    local rfile = io.open(file_path,"r")
   
    if rfile ~= nil
    then
        rfile:seek("set")
        info = rfile:read("a")
        set_text(sc_Home, 8, 'R : The '..file_path..' exist :'..info..' !')   
    else
        set_text(sc_Home, 8, 'R :The '..file_path..': does not exist !!')
    end
   
        rfile:close() --这句要有
    return info
end

最后真心感谢一下谢工和贵司所有帮助过我的工程师们~!
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|广州大彩串口屏论坛_大彩开发者交流论坛

GMT+8, 2024-4-16 17:37 , Processed in 0.056693 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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