资讯详情

codesys工程ST语言学习笔记(六)ST语言读写CVS文件excel格式(文件读写)

codesys读写CVS文件

工程下载地址

-------------------------------------------------------------------------------------------------------------------------

也可以在微信微信官方账号下载。微信官方账号链接在文章底部。

如果不能打开下载项目的视图
参见上一篇博文

—————————————————— —————————————————

·CODESYS·

------------------------------- 将一个表格的每个字节转换串,然后拼接表格的所有字符串,完成表格的格式转换!

详见博客文件操作函数

-------------------------------------------

详细代码

读文件函数

FUNCTION ReadDataFun : st_Split VAR_INPUT  hFile: RTS_IEC_HANDLE := RTS_INVALID_HANDLE;  dwLength:__XWORD; END_VAR VAR  byteRead:BYTE;  udiBytesRead,pppPos:__XWORD;  udiReadError1: RTS_IEC_RESULT;  tWord:WORD;  tStr: STRING(2);  strNum:STRING; END_VAR  
IF hFile <> RTS_INVALID_HANDLE THEN  WHILE byteRead <> 44 DO       //44为ASCII十进制数值代码中的逗号符号(‘,’)   udiBytesRead := SysFileRead(hFile:= hFile, pbyBuffer:= ADR(byteRead), ulSize:=1, pResult:=ADR(udiReadError1));   IF byteRead = 44 OR udiBytesRed = 0 THEN
			byteRead := 0;
			EXIT;
		END_IF
		tWord := BYTE_TO_WORD(byteRead);			//将字节数转成WORD类型
		tStr := WORD_AS_STRING(tWord,FALSE);		//将WORD类型数据转成字符串
		strNum := CONCAT(strNum,tStr);				//进行字符串拼接
	END_WHILE
	StrTrimA(ADR(strNum));							//删掉字符串中前导和末尾的空格
	ReadDataFun.lrNum := strNum;					//返回读取的cvs字符串
	SysFileGetPos(hFile, ADR(pppPos));				//获取文件指针的当前位置
	IF pppPos >= dwLength THEN						//判断当前位置是否大于文件中的字符串总长度,可由此判断是否读取完毕
		ReadDataFun.bEnd := TRUE;
	ELSE
		ReadDataFun.bEnd := FALSE;
	END_IF
END_IF

写文件函数

FUNCTION WriteDataFun : BOOL
VAR_INPUT
	hFile: RTS_IEC_HANDLE:= RTS_INVALID_HANDLE;
	lWriteData: string;
END_VAR
VAR
	udiBytesWrite: __XWORD;
	udiWriteError: RTS_IEC_RESULT;
	strWriteData: STRING(10);
	cycleNum: DINT;
	num: DINT;
	byteWriteBuffer: ARRAY[0..9] OF BYTE;
END_VAR

IF hFile <> RTS_INVALID_HANDLE THEN
	
	//'$R'是回车符,'$N'是换行符,可通过WORD_AS_STRING转换得到,例如WORD:= 10(10是由ASCII码对应的十六进制数16#0a转化的十进制数),转换后得到string:= '$N',可查询ASCII码表
	WriteDataFun:= FALSE;
	
	strWriteData:= CONCAT(lWriteData,',');				//字符串后面接上逗号
	StrTrimA(ADR(strWriteData));						//删除字符串前导和末尾的空格
	cycleNum:= StrLenA(ADR(strWriteData));				//计算字符串长度
	FOR num:= 0 TO cycleNum DO
		byteWriteBuffer[num]:= strWriteData[num];		//将字符串内容转换成字节数组
	END_FOR
	udiBytesWrite:= SysFileWrite(hFile:= hFile, pbyBuffer:= ADR(byteWriteBuffer), ulSize:= SIZEOF(byteWriteBuffer), pResult:= ADR(udiWriteError));
	
	WriteDataFun:= TRUE;
END_IF
展示结果
领取文件
关注微信公众号回复:codesys

----------------------------------------codesys工程ST语言学习笔记(二)写文件操作与添加库方法------------------------------------ ----------------------------------codesys工程ST语言学习笔记(三)读文件操作txt,访问hello world 文件--------------------------

【关注微信公众号一起来交流】

标签: adr03arz集成电路ic

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台