6.输入输出

输入输出

对于文件操作而言,Lua I/O库提供了两种不同模型。

简单I/O模型

简单I/O 模型虚拟了当前输入流和一个当前输出流,其I/O操作在这些流上实现的。默认当前输入流为标准输入流(C的stdin),输出流为标准输出流(C的stdout).

  1. io.input与io.output可以用于改变当前的输入输出流,调用io.input(file-name) 会以只读模式打开指定的文件,并将其设置为当前输入流,之后所有输入来自该文件,除非再次调用io.input.输出与之类似。若出现错误,只有完整I/O 模型才能处理其抛出的异常。
  2. io.write用于写入任意数量字符数字到当前输出流。
  3. io.read从当前输入流中读取,其参数规定了读取的内容。
    • “a” 读取整个文件
    • “l” 读取下一行(丢弃换行符)
    • “L” 读取下一行(保留换行符)
    • “n” 读取一个数值
    • num 以字符串读取num个字符
      注: io.read(0) 是个特例,用于测试是否到达了文件末尾。如果还有数据,则返回一个空字符串,否则返回nil。
      同时io.read()可以接受多个参数,根据多个参数返回相应的多个值,若要逐行迭代一个文件,使用io.lines迭代器则会更简单。
a,b,c =io.read("n","n","n")
完整I/O模型

对于同时读写多个文件时,就要使用完整模型了。
(1)io.open 用来打开文件,其仿造了c语言的fopen。两个参数,第一个为待打开文件的名称,另一个为打开的模式(r,w,a,以及一个可选的表示二进制文件的b)。当正确执行时,返回文件流,当错误时,返回nil同时返回一条错误信息和错误码。一般用assert包裹io.open,当出错时,错误信息作为函数assert的第二个参数传入,同时输出错误。

assert(io.open("xxx.txt","r"))
--输出
nil	xxx.txt: No such file or directory	2
 xxx.txt: No s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个使用WinCC的C脚本的例子,该脚本用于读取一个PLC的数据,并在WinCC界面上显示出来: ``` // 定义PLC地址 #define PLC_ADDRESS "PLC1" // 定义读取数据的变量名 #define DATA_VARIABLE "DB1.DBD10" // 定义WinCC对象名 #define WINCC_OBJECT "Tag1" // 定义读取数据的时间间隔 #define READ_INTERVAL 1000 // 定义PLC连接句柄 HANDLE hConnection; // 定义WinCC对象句柄 HANDLE hWinCCObject; // 定义数据变量 DWORD dwData; // 初始化PLC连接 hConnection = PlcOpen(PLC_ADDRESS, "S7-300", 0, 2); if (hConnection == INVALID_HANDLE_VALUE) { // 连接失败,弹出错误提示框 MessageBox(NULL, "PLC连接失败!", "错误", MB_OK | MB_ICONERROR); return; } // 初始化WinCC对象 hWinCCObject = GetObjectHandle(WINCC_OBJECT); if (hWinCCObject == INVALID_HANDLE_VALUE) { // 获取对象失败,弹出错误提示框 MessageBox(NULL, "WinCC对象获取失败!", "错误", MB_OK | MB_ICONERROR); return; } // 循环读取数据 while (1) { // 读取PLC数据 if (PlcRead(hConnection, DATA_VARIABLE, &dwData, sizeof(dwData)) == 0) { // 读取成功,更新WinCC对象 SetTagValue(hWinCCObject, &dwData, sizeof(dwData)); } // 等待一段时间后再次读取数据 Sleep(READ_INTERVAL); } // 关闭PLC连接 PlcClose(hConnection); ``` 该脚本中使用了一些WinCC的API函数,例如PlcOpen、PlcRead、SetTagValue等,用于与PLC通信和操作WinCC对象。同时,还使用了C语言的一些基本语法,例如宏定义、变量定义、循环、条件判断等。该脚本的作用是循环读取PLC数据,并将数据更新到WinCC界面上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值