• 大彩串口屏读写文件问题


    分区

    本文使用的是大彩串口屏M系列的:
    串口屏内部有三个分区,分别为A、B、C三个区:
    A区:系统区,存储组态工程文件
    B区:数据区,存储配置信息,记录数据、历史曲线等
    C区:备份区,备份数据区文件
    在进行文件读写的时候,建议卸载B区,避免破坏A区、C区文件,B取文件读写需要注意以下两点:
    ·手动创建文件夹:在工程目录下创建“Public”文件夹,此文件夹表示B区,此后读写操作均在B区完成
    在这里插入图片描述
    分配空间大小:在工程属性-高级设置-存储分区B(Mbyte)中,需要分配大小大于0,一般默认即可。

    路径

    屏内文件读取

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

    local file_path = ‘B:/test.txt’
    
    • 1
    SD卡/U盘路径读取

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

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    写文件:读写屏内文件

    1.创建Public文件夹,并在该文件夹中创建config.txt文件
    config.txt文件中的键值对要与代码中的键值匹配,否则会导致读取异常

    2.编写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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
  • 相关阅读:
    电脑重装系统后鼠标动不了该怎么解决
    高项 11 风险管理
    卷妹带你回顾Java基础(一)每日更新Day2
    网站图床系统源码
    Go 并发可视化解释 - sync.Mute
    负载均衡加权轮询算法
    PaddleSeg学习3——使用PP-LiteSeg模型对道路进行分割
    CSAPP Lab5:Shell
    MQ - 40 连接器:以MQ Connector为核心搭建数据集成架构的方案设计
    穿透三翼鸟“三不卖”原则:看似“逆向”背后的十足远见
  • 原文地址:https://blog.csdn.net/shouchen1/article/details/134088017