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

写文件函数

FUNCTION WriteDataFun : BOOL
VAR_INPUThFile: RTS_IEC_HANDLE:= RTS_INVALID_HANDLE;lWriteData: string;
END_VAR
VARudiBytesWrite: __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 DObyteWriteBuffer[num]:= strWriteData[num];      //将字符串内容转换成字节数组END_FORudiBytesWrite:= SysFileWrite(hFile:= hFile, pbyBuffer:= ADR(byteWriteBuffer), ulSize:= SIZEOF(byteWriteBuffer), pResult:= ADR(udiWriteError));WriteDataFun:= TRUE;
END_IF
展示结果
领取文件
关注微信公众号回复:codesys

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

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

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

  1. c语言注释语句执行吗,C语言学习笔记之C语言概念解析(附资料分享)每一个语句都必须以分号结尾但预处理命令函数头和花括号“}”之后不能加分号...

    [[怪兽爱C语言]C语言学习笔记之C语言概念解析(附资料分享)]https://toutiao.com/group/6582429294901854728/?iid=15906422033&a ...

  2. C语言学习笔记---初始C语言006

    C语言程序设计笔记---006 C语言初识关键字和宏定义 1.数据类型关键字 2.存储类型关键字 3.控制语句关键字 3.1.跳转结构关键字: 3.2.循环结构关键字: 3.3.分支结构关键字: 3. ...

  3. Dart 语言学习笔记(Dart语言完全指南)

    Dart 语言学习笔记 Part 1:概览 Dart是一门纯OOP语言.所有的类都继承于Object类.null也是对象,变量仅仅存储对象的引用 Dart是强类型语言,即使Dart可以进行类型推断(使 ...

  4. C语言学习笔记---初始C语言001

    C语言程序设计笔记---001 初识C语言 1.C语言的标准 2.C语言的特点 3.第一个C程序 ***/知识点汇总/*** 基于VS2019编译器展示一下 代码片: 4.自我介绍 初识C语言 1.前 ...

  5. C语言学习笔记1——C语言程序

    C语言简介: BCPL ->newB ->C ->UNIX ->Minux ->Linux ->gcc C语言诞生于1970-1973年,在肯·汤姆逊和丹尼斯·里奇 ...

  6. C语言学习笔记:C语言的指针函数与函数指针??

    前言 在C语言里函数.指针这两个词结合的顺序不同其意义也不同,即指针函数与函数指针的意义不同,这是什么情况呢?估计许多学习C语言的小伙伴已经感觉自己懵懵的了,别急且听小编来说个明白. 指针函数 指针函 ...

  7. C语言学习笔记之C语言简史(不看后悔系列)

    文章目录 C语言简史 一.什么是C语言? 只要计算机体系架构不变,C语言就会长盛不衰. C语言简史 一.什么是C语言? 麻省理工学院,AT&T贝尔实验室,通用电气,三方大佬,准备为GE-645 ...

  8. c++代码转为go_Go语言学习笔记六--string编码

    分解探索string编码 转为byte数组 func main() {s := "Hi小智加油!"fmt.Println("len(s):",len(s)) / ...

  9. [R语言学习笔记1] R语言for循环的使用

    学习R语言的过程中,后期逐渐就会用循环语句来减少自己的重复工作.所以了解for循环,是必备技能之一. R语言中的for循环结构是: for (循环变量 in 序列向量){表达式1表达式2...} 要注 ...

  10. R语言学习笔记--《R语言实战》

    文章目录 R语言基础 一.数据结构 1. 向量 2. 矩阵 3. 数组 4. 数据框 5.列表 二.数据输入 1.键盘输入 2.分隔符文本输入 (csv) 图形初阶 一.图形参数 1.符号和线条 2. ...

最新文章

  1. 2022-2028年中国体育用品行业投资分析及前景预测报告(全卷)
  2. qps是什么意思_面试官:说说你之前负责的系统,QPS 能达到多少?
  3. 中国程序员人数将增长50%,过半500强都要卖软件,边缘应用程序增长8倍丨IDC预测下一个五年...
  4. mabatisplus怎么给实体类自定义属性_如果你的角色属性可以自定义,你会怎么点?...
  5. [LeetCode226]Invert Binary Tree
  6. java注释 param_java注释文档(下)
  7. python——输入输出
  8. php手机接口购物车怎么实现,php购物车的实现原理
  9. java线程暂停与恢复suspend和resume
  10. ES10 可以使用几个新特性
  11. iar 看时序_IAR 硬件仿真查看运行时间
  12. error: [FabricCAClientService.js]: Failed to enroll admin, error:%o message=Calling enroll endpoint
  13. 【EasyPR】Linux安装使用EasyPR开源车牌识别系统
  14. 【Linux】SCP 拷贝命令
  15. Android软键盘遮挡问题解决
  16. Excel学习经验总结
  17. adcclk最大_DSP28335 ADC程序 中文说明 -
  18. 2019年十大国外边缘计算供应商
  19. 虚拟机网络适配器下的3种网络模式(主机模式、桥接模式和NAT模式)
  20. Spring4详解系列(一)Spring之旅

热门文章

  1. dhtmlxgantt pro 7.1.10 | dhtmlxgantt 专业版 7.1.10
  2. DHTMLXGantt and DHTMLXGantt pro
  3. 单片机音频谱曲软件_单片机谱曲软件讲解
  4. NetApp 数据存储 AFF 和 FAS 系统的磁盘架和存储介质
  5. 计算机科学导论考试A卷试题,计算机科学导论试题A答案
  6. 思想茶叶蛋 (Aug 20,2022)| 网传B站hr说用户是loser、互联网之父的救赎和Web3.0
  7. 2021-11-07-防火墙添加安全策略
  8. wpsmac和pc版的区别_办公得力小助手你选谁, WPS Mac版和Microsoft区别在哪里?
  9. 思维导图软件哪个好?盘点10款好用的思维导图软件
  10. php解决时间超过2038年