大彩串口屏读写文件问题

分区

本文使用的是大彩串口屏M系列的:

串口屏内部有三个分区,分别为A、B、C三个区:

A区:系统区,存储组态工程文件

B区:数据区,存储配置信息,记录数据、历史曲线等

C区:备份区,备份数据区文件

在进行文件读写的时候,建议卸载B区,避免破坏A区、C区文件,B取文件读写需要注意以下两点:

·手动创建文件夹:在工程目录下创建"Public"文件夹,此文件夹表示B区,此后读写操作均在B区完成

分配空间大小:在工程属性-高级设置-存储分区B(Mbyte)中,需要分配大小大于0,一般默认即可。

路径

屏内文件读取

假设对屏内的test文件读写,路径如下所示

lua 复制代码
local file_path = 'B:/test.txt'
SD卡/U盘路径读取

读写SD卡或U盘里的"test.txt"文件时,应巧妙利用LUA脚本SD卡、USB插入触发的回调函数里获取盘符,如下所示:

lua 复制代码
local file_path = ''

function  on_usb_inserted(dir)
    file_path = dir..'/'..'test.txt'
end

function  on_sd_inserted(dir)
    file_path = dir..'/'..'test.txt'
end

写文件:读写屏内文件

1.创建Public文件夹,并在该文件夹中创建config.txt文件

config.txt文件中的键值对要与代码中的键值匹配,否则会导致读取异常

2.编写LUA代码

具体代码如下:

lua 复制代码
local config_file_path = 'B:/config.txt'

-- 配置项
local config_table		= {
	device_id = "test123456",
	verify_pwd = 123456,
	alert_stage_1sd_duration_s = 25, -- 第一阶段时长,人员警报秒速
	alert_stage_2nd_duration_s = 15, -- 第二阶段时长,关闭电磁阀秒数
	is_auto_open_gas_valve = false, --人员在场是否自动打开电磁阀
	is_reverse_open_gas_valve = false,--人员在场是否取反打开电磁阀
	is_maintain_open_gas_valve = false,--人员在场是否持续打开电磁阀
	alert_capture_duration_s = 10,
	report_url = "28.19.41.69:8601/MsgPoster",
	network_param = {
		dhcp = 0,
		ipaddr = "",
		netmask = "",
		gateway = "",
		dns = ""
	}
} -- 配置文件


-- 将当前的配置参数保存起来
function save_config_table()
	local jsonStr = cjson.encode(config_table)
	set_text(1,33," ")	
	write_file(config_file_path, jsonStr)
end


-- 加载配置文件
function load_config_table()
	local config1 = read_file(config_file_path)
	
	if config1 ~= nil then
		local data1 = cjson.decode(config1)
		set_text(1,33," ")
		if data1 ~= nil then
			config_table = data1
 			set_text(1,32,"Success")
			return
		end
	end
 -- 没有加载成功,将生成默认配制
	config_table = {
		device_id = "sfm123456",
		verify_pwd = 123456,
		alert_stage_1sd_duration_s = 25,
		alert_stage_2nd_duration_s = 15,
		alert_capture_duration_s = 12,
		is_auto_open_gas_valve = false,
		is_maintain_open_gas_valve = false,
		is_reverse_open_gas_valve = false,
		report_url = "28.19.41.69:8601/MsgPoster",
		network_param = {
			dhcp = 0,
			ipaddr = "",
			netmask = "",
			gateway = "",
			dns = ""
		}
	} -- 配置文件	
	set_text(1,32,"Error")
end

---输入数据
---@param file_path string 路径
---@param info string 文件内容
function write_file(file_path, info)
	-- 以覆盖写入的方式打开文本
	local wfile = io.open(file_path, "w")
	if wfile ~= nil then
		wfile:write(info)
 		set_text(1,33," ")	
	end
	set_text(1,33," ")	
	wfile:close()
	flush_nor()
end
相关推荐
一条泥憨鱼2 天前
【Redis | 黑马点评】基于Redis的消息队列 | stream消息队列 源码解读
java·数据库·redis·缓存·lua
一条泥憨鱼3 天前
【Redis | 黑马点评】分布式锁;Lua脚本;Redisson与看门狗 |源码万字详解
redis·分布式·lua
笨鸟先飞的橘猫5 天前
skynet热更新实现问题与排错记录
学习·lua·skynet
开开心心_Every9 天前
黄金价格软件国内外价格实时监控超方便
运维·服务器·游戏·智能手机·pdf·lua·perl
笨鸟先飞的橘猫10 天前
C 扩展开发指南:从 Lua 到 skynet 的完整链路
c语言·lua
贾宝玉的玉宝贾12 天前
FreeSWITCH 简单图形化界面 70 - 监听/密语的lua脚本
开发语言·junit·lua·voip·freeswitch·sip·ippbx
二喵❥(^_-)16 天前
接口测试流程的三个核心环节
开发语言·lua
小师兄吃牛肉22 天前
C++ 与 Lua 的协程交互:从原理到实战
c++·lua·交互
喜欢的名字被抢了22 天前
09-Redis 进阶原理篇:单线程、多线程、过期、LRU-LFU、Fork 与 Lua
数据库·redis·lua