MCGSPRO 批量导出导入变量 到u盘中

最近有个客户要求将一页参数导出,可以放在u盘里,然后多台机器批量导入参数

导出按钮,按下后将当前程序里参数导出数据.csv,并保存在u盘中

Dim DAT AS float
Dim DAT2 AS float
Dim DATA AS integer
Dim DATA2 AS integer
Dim rett AS integer

DATA = 0
DATA2 = 1
参数设定页面总数据 = "序号,速度设定,长度设定\n"
'初始化

WHILE  40 - DATA > 0  

!GroupGetFloat(参数设定页面总数据组,DATA,DAT) 
'获得速度设定的值放到dat里
!GroupGetFloat(参数设定页面总数据组,DATA+1,DAT2) 
'获得长度设定的值放到dat2里

'例如01,23,\n 45,67,\n   获得组成员的值准备组合成字符串
参数设定页面总数据  = 参数设定页面总数据 + !Str(DATA2) + "," 
参数设定页面总数据  = 参数设定页面总数据 + !Str(DAT) + ","
参数设定页面总数据  = 参数设定页面总数据 + !Str(DAT2) + "\n"
'data2是等差为1的数列,1234567,dat和dat2是变量的值

DATA= DATA+2
'一个循环加2,直到40,一共20次,对应20行
DATA2= DATA2+1
ENDWHILE
'循环完获得所有数据组合成一起的字符串


rett = !FileWriteByStr("test/数据.csv",参数设定页面总数据,FILE_TRUNC,TEXT_GBK)
'把字符串按指定编码方式写入指定文件
'路径为u盘:test/数据.csv

IF rett >0 THEN 
用户窗口.成功弹窗.Open( )
else

用户窗口.失败弹窗.Open( )
	
ENDIF

注意用!GroupGetFloat要提前设置好组对象的成员,必须按顺序

导入按钮,把u盘里的数据.csv导入到触摸屏中


Dim 局部字符数组1(21) AS string
Dim 局部字符数组2(3) AS string
'数组从[1]开始,
'例如这里局部字符数组2(3)有三个,分别是1/2/3

Dim Data AS integer
Dim ret AS integer
Dim Data2 AS integer

Data = 1 
Data2 = 1 
参数设定页面总数据 = ""
'初始化
ret = !FileReadByStr("test/数据.csv",0,-1,参数设定页面总数据,TEXT_GBK)
!SplitString(参数设定页面总数据,局部字符数组1,"\n")
'从csv读出数据,先全部放到,参数设定页面总数据这个变量里。
'然后按换行符号分割,有21行,除了第一行是注释舍去,其他都分割,规律地放到字符串数组里


IF ret > 0 THEN 	
用户窗口.成功弹窗.Open( )
else
用户窗口.失败弹窗.Open( )
EXIT
'读取失败直接结束
ENDIF


WHILE 21 - Data > 0 
!SplitString(局部字符数组1[Data + 1],局部字符数组2,",")
'第一行不要,所以加Data1,从第二行开始,局部字符数组1[Data + 1]
'先按照逗号分成3组,第一组是注释,没有直接忽略,用!GroupSetFloat把对应的值赋给变量
'所以这里要的是局部字符数组2[2]与局部字符数组2[3]

!GroupSetFloat(参数设定页面总数据组,Data2-1,!Val(局部字符数组2[2]) )
'速度设定
!GroupSetFloat(参数设定页面总数据组,Data2,!Val(局部字符数组2[3]) )
'长度设定


Data = Data + 1
Data2 = Data2 + 2
'这里data2是长度设定,在组队象顺序中对应是第2第4第6第8...,所以循环要加2,
'速度设定就是data2 -1 
ENDWHILE


当然可以在这基础上,功能再增加。导出时输入文件名,可输入多个不同的数据。导入时按下拉框选择对应的文件导入。

那这里用到这个获取的脚本,把他写在用户策略里,命名为“获得当前储存文件”,方便用!SetStgyMode(获得当前储存文件)直接调用

Dim namearr(10) AS string
Dim sizearr(10) AS INTEGER
Dim attribarr(10) AS INTEGER
Dim data AS integer
'这里数组长度为10,也就是最多查找10个

return = !FileFind("test/*",namearr,sizearr,attribarr)
'找test文件夹及子文件夹下的文件或目录,*就是查找所有的意思
'将查找结果的名字(包含路径)存入nameArr字符串数组中
'大小存入sizeArr整数数组中,属性存入attribArr整数数组中



data = 1
IF return > 0 THEN 
	
	WHILE  data < 11
		

	当前储存数据 = 当前储存数据 + namearr[data] + ","
'下拉选择框会通过","作为分割符
	 
	data  = data + 1
	ENDWHILE
else

当前储存数据 = ""

ENDIF
'有查到结果就处理合成字符串,没有就清空字符串

然后做输入框的设置

在窗口启动脚本里调用一次,还有导出时调用一次,执行对应策略后,输入框就会有内容了

选择的内容放在 内容关联变量里,再修改下导入按钮的脚本就行了,只需要改导入的路径

然后是导出按钮增加个输入框来命名,因为路径一直是有带test的,所以要处理一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值