codesys读写CVS文件
-------------------------------------------------------------工程下载链接(点击下载)------------------------------------------------------------
不会编译程序或者建立工程的点击第一篇文章codesys工程ST语言学习笔记(一)建立工程与编译
codesys文件写txt文件 codesys工程ST语言学习笔记(二)写文件操作与添加库方法
codesys文件写txt文件 codesys工程ST语言学习笔记(三)读文件操作txt,访问hello world 文件
—————————————————— 点击 转codesys学习笔记(五)—————————————————
·CODESYS·
之前笔者使用函数读取txt文件可以正常读取,但是遇到读excel的文件就会返回一组字符串乱码
--------------这是由于excel返回的数据需要进行类型转换
,所以需要从byte转成word最后到字符串格式。-----------------
一个表格的每一个字节转成字符串,然后对这个表格的所有字符串进行拼接,就完成这个表格的格式转换了!
-----------------codesys文件写txt文件 codesys工程ST语言学习笔记(二)写文件操作与添加库方法--------------------------
读文件函数
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
udiBytesRead := SysFileRead(hFile:= hFile, pbyBuffer:= ADR(byteRead), ulSize:=1, pResult:=ADR(udiReadError1));
IF byteRead = 44 OR udiBytesRead = 0 THEN
byteRead := 0;
EXIT;
END_IF
tWord := BYTE_TO_WORD(byteRead);
tStr := WORD_AS_STRING(tWord,FALSE);
strNum := CONCAT(strNum,tStr);
END_WHILE
StrTrimA(ADR(strNum));
ReadDataFun.lrNum := strNum;
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
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工程ST语言学习笔记(二)写文件操作与添加库方法------------------------------------
----------------------------------codesys工程ST语言学习笔记(三)读文件操作txt,访问hello world 文件--------------------------