跳转至

Connect IoT - CSV文件驱动程序#

逗号分隔值(CSV)文件是一个用逗号分隔值的分隔文本文件。CSV文件以纯文本格式存储表格数据(数字和文本)。文件的每一行都是一条数据记录。每条记录由一个或多个用逗号分隔的字段组成。使用逗号作为字段分隔符是此文件格式的名称来源。

数据类型#

这些是受支持的特定数据类型:

名称 描述
字符串 字符串值
布尔值 布尔值
整数 整数值
十进制 十进制值
对象 结构化值

异常流程参数#

异常流程支持以下参数,用于定义通信参数以及驱动程序的预期行为:

名称 类型 可能的值 默认值 描述
路径 字符串 "" 要监视文件更改的位置的路径。如果未提供任何值,则不会创建观察程序,因此不会触发任何事件。
fileMask 字符串 "*/.csv" 观察程序用来识别要处理的文件的glob模式。使用类似于https://globster.xyz/ ⧉的工具尝试使用有效值。
hasHeader 布尔值 True csv文件是否具有标头?
delimiter 字符串 "," 字段分隔符是什么?
initialLinesToIgnore 整数 0 文件开头要忽略的行数
commentChar 字符串 "" 如果设置,该字符后面的所有文本将不会被处理
numberOfLines 整数 1 每轮要读取的每个文件的行数
skipEmptyLines 布尔值 True 解析器是否应忽略空行?
archivePath 字符串 "" 计划在处理后用于存档文件的目录。以后可以在要执行的可用操作中将此值用作变量。
watcherType 枚举 Chokidar
NSFW
Chokidar 要使用的观察程序类型。根据选择,需要不同的设置。Chokidar是最佳的整体选项,但当存在多个文件时,CPU和内存占用率高,启动速度变慢。在其他情况下,NSFW性能更佳。测试两者以确定最佳选项。
ignoreInitial 布尔值 False 用于定义在启动/重新启动期间是应处理还是忽略已创建、更改或删除的文件的标志
pollingInterval 整数 100 文件系统轮询的时间间隔(以毫秒为单位)
alwaysStat 布尔值 True 始终获取观察程序标识的文件的其他属性(大小、时间戳等)。需要额外的操作系统资源。
depth 整数 0 要监视的子目录数。数目越多,观察程序所需的内存/CPU/时间就越多。
awaitWriteFinish 布尔值 True 仅在文件完成写入时触发观察程序事件。
awaitWriteFinishStabilityThreshold 整数 2000 在触发事件之前,文件大小保持不变的时间(以毫秒为单位)。

特定于Chokidar观察程序类型的异常流程参数#

Chokidar观察程序类型具有一些仅它知道的设置。如果使用其他类型,则这些设置不会产生任何影响。

名称 类型 可能的值 默认值 描述
watcherMode 枚举 FileSystemEvents
Polling
Polling 要成功通过网络监视文件(以及在其他非标准情况下),通常需要使用Polling,但这可能会导致CPU利用率高。FileSystemEvents是监视本地文件最有效的方法。
pollingBinaryInterval 整数 300 文件系统轮询二进制文件的时间间隔(以毫秒为单位)
awaitWriteFinishPollInterval 整数 100 文件大小轮询间隔
atomic 整数 100 使用“原子写入”而不是直接写入源文件的编辑器时,自动筛选定义的值(以毫秒为单位)内出现的工件。如果定义为0,则禁用此功能。

扩展参数#

与其他异常流程驱动程序一样,还需要一些额外参数来对预期行为提供更多上下文。

属性#

名称 类型 可能的值 默认值 描述
propertyType 枚举 FileContent
FileName
RelativePath
FullPath
Size
IsFile
IsDirectory
AccessTime
CreationTime
UpdateTime
EndOfFile
FileContent 提供属性的含义,并在发生特定事件时根据它接收值。
FileContent 文件中字段的表示形式
FileName 正在处理的文件的名称
RelativePath 正在处理的文件的相对路径
FullPath 正在处理的文件的完整路径
Size 文件大小
IsFile 表示句柄是否为文件的标志
IsDirectory 表示句柄是否为目录的标志
AccessTime 上次访问文件的日期和时间
CreationTime 创建文件的日期和时间
UpdateTime 上次更新文件的日期和时间
EndOfFile 表示文件已到达末尾的标志
identifierType 枚举 名称
索引
名称 标识字段数据的方法(在属性设备ID中定义)。仅在propertyType为以下项时适用 FileContent

事件#

名称 类型 可能的值 默认值 描述
EventTrigger 枚举 NewFile
DeletedFile
ChangedFile
NewData
NewData 指示将触发事件的操作系统操作。
NewFile 检测到新文件时
DeletedFile 删除文件时
ChangedFile 更改文件时
NewData 创建/更改文件时,触发包含数行的事件(可配置)

命令#

名称 类型 可能的值 默认值 描述
commandType 枚举 存在
复制
重命名
删除
移动
CreateFile
ReadFile
CreateDirectory
EmptyDirectory
装载
MoreDataRequest
MoreDataRequest 指示将执行的命令类型。
Exists 检查文件或目录是否存在
Copy 将文件或整个目录从一个位置复制到另一个位置
Rename 重命名文件或目录
Delete 删除文件或目录
Move 移动文件或目录
CreateFile 创建数据或将数据附加到文件中
ReadFile 读取现有文件的全部内容
CreateDirectory 创建新目录
EmptyDirectory 删除目录的所有文件和子目录
Mount 将网络驱动器位置装载到本地路径中
MoreDataRequest 处理数据后,请求下一个数据块。

内部驱动程序接口#

此异常流程驱动程序提供了一组接口,可用于简化在控制器工作流中的使用。本节旨在详细介绍它们。尽管这些接口大多数(如果不是全部)都有专门设计的任务来使用它们,但用户可以在驱动程序定义实体中自由地重新定义它们。

属性#

名称 PropertyType 数据类型 描述
FileName FileName 字符串 监视的目录中标识的文件的名称。将包括扩展名,但不包括目录路径。
FullPath FullPath 字符串 文件名及其在本地系统中的完整路径。
FileSize Size 整数 文件大小
EndOfFile EndOfFile 布尔值 文件已到达末尾
ExampleField FileContent 字符串 用标头名称标识的CSV文件的字段示例
ExampleField2 FileContent 字符串 用索引(第二项)标识的CSV文件的字段示例

事件#

名称 EventTrigger 更新的属性 描述
OnNewFile NewFile FileName
FullPath
FileSize
当观察程序检测到先前未识别的文件出现时,将引发此事件。
触发时间可能取决于某些设置,如watcherModeawaitWriteFinishawaitWriteFinishStabilityThreshold以及其他设置。
OnFileChanged ChangedFile FileName
FullPath
FileSize
当观察程序检测到已识别的文件(并触发了OnNewFile事件)并且它以某种方式被更改时,将引发此事件。
触发时间可能取决于某些设置,如watcherModeawaitWriteFinishawaitWriteFinishStabilityThreshold以及其他设置。
OnFileDeleted DeletedFile FileName
FullPath
FileSize
当观察程序检测到先前被识别但现在被删除(或移动到其他位置)的文件时,将引发此事件。
OnDataAvailable NewData FullPath
ExampleField
ExampleField2
EndOfFile
读取和解析文件中的数据时触发

命令#

本节中列出的所有命令路径都可以使用以下令牌来简化使用:

名称 描述 示例
${Path} 将令牌替换为设置期间定义的path设置 ${path}\file.csv 变为 c:\watchedDirectory\file.csv
${Archive} 将令牌替换为设置期间定义的archive设置 ${archive}\newFile.csv 变为 c:\archive\file.csv
名称 CommandType 参数/类型/默认值 描述
MoreDataRequest MoreDataRequest path /字符串/"" 处理数据后,请求下一个数据块
FileOrDirectoryExists Exists path /字符串/"" 检查path位置是否存在
CopyFileOrDirectory Copy source /字符串/""
destination /字符串/""
overwrite /布尔值/false
preserveTimestamps /布尔值/false
recursive /布尔值/true
attempts /整数/1
sleepBetweenAttempts /整数/1000
尝试将source位置(文件或目录)复制到destination位置。如果失败,则将重试attempts次,每次等待sleepBetweenAttempts毫秒。
如果它是目录并且recursive设置为true,则还会复制所有子目录。
RenameFileOrDirectory Rename source /字符串/""
destination /字符串/""
attempts /整数/1
sleepBetweenAttempts /整数/1000
尝试将source位置(文件或目录)重命名为destination位置。如果失败,则将重试attempts次,每次等待sleepBetweenAttempts毫秒。
MoveFileOrDirectory Move source /字符串/""
destination /字符串/""
overwrite /布尔值/false
attempts /整数/1
sleepBetweenAttempts /整数/1000
尝试将source位置(文件或目录)移动到destination位置。如果失败,则将重试attempts次,每次等待sleepBetweenAttempts毫秒。
DeleteFileOrDirectory Delete path /字符串/""/
attempts /整数/1
sleepBetweenAttempts /整数/1000
已删除path位置(文件或目录)。如果失败,则将重试attempts次,每次等待sleepBetweenAttempts毫秒。
CreateFile CreateFile path /字符串/""
content /字符串/""
encoding /字符串/"utf8"
mode /整数/0o666
flag /字符串/"w"
attempts /整数/1
sleepBetweenAttempts /整数/1000
尝试写入path位置中的某文件。如果失败,则将重试attempts次,每次等待sleepBetweenAttempts毫秒。

mode将使用unix格式定义文件属性/权限,但采用十进制值。
flag确定如何访问文件(写入、重写、附加等)。以下位置介绍了支持的标志: https://nodejs.org/api/fs.html#fs_file_system_flags. ⧉
ReadFileContent ReadFile path /字符串/""
encoding /字符串/"utf8"
attempts /整数/1
sleepBetweenAttempts /整数/1000
尝试读取path位置中文件的内容。如果失败,则将重试attempts次,每次等待sleepBetweenAttempts毫秒。
CreateDirectory CreateDirectory path /字符串/""
attempts /整数/1
sleepBetweenAttempts /整数/1000
尝试在path位置创建新目录。如果失败,则将重试attempts次,每次等待sleepBetweenAttempts毫秒。
EmptyDirectory EmptyDirectory path /字符串/""
attempts /整数/1
sleepBetweenAttempts /整数/1000
尝试删除path位置的所有文件和子目录。如果失败,则将重试attempts次,每次等待sleepBetweenAttempts毫秒。

驱动程序扩展#

此异常流程驱动程序提供了一组扩展,允许自定义执行独立于关联的驱动程序定义的操作。这意味着您可以使用自定义获取/设置节点值,而无需描述它们。

这在访问共享的设备数据或者由于过于复杂而无法使用常规机制访问的设备数据时特别有用。在需要访问命名约定可能因设备而异的数据时也很有用。

对象#

对象是作为参数传递或作为结果值返回的结构。

RegisterHandler#

名称 类型 描述
类型 字符串 要注册通知的事件的ID。示例: connect.iot.driver.fileBased.event.ChangedFile_1234567891011

UnregisterHandler#

名称 类型 描述
类型 字符串 要注销通知的事件的ID。示例: connect.iot.driver.fileBased.event.ChangedFile_1234567891011

ExecuteCommand#

名称 类型 描述
command JSON对象 包括命令名称、设备ID和参数类型
parameters JSON对象 参数名称和值。

方法#

注册事件通知#

通知异常流程驱动程序在特定事件发生时引发该事件。

void connect.iot.driver.fileBased.registerEvent(data: RegisterHandler)

Note

事件将发布到侦听器connect.iot.driver.fileBased.,并附加注册的事件的名称以及随机ID。例如: connect.iot.driver.fileBased.event.ChangedFile_1234567891011

注销事件通知#

通知异常流程驱动程序在发生特定事件时停止引发事件。

void connect.iot.driver.fileBased.unregisterEvent(data: UnregisterHandler)

示例#

通知 connect.iot.driver.fileBased.unregisterEvent

{
  "name": "ChangedFile_1234567891011"
}

执行命令#

执行自定义命令。

any connect.iot.driver.fileBased.executeCommand(data: ExecuteCommand)

示例#

SendRequest connect.iot.driver.fileBased.executeCommand

{
    "command": {
        "name": "FileOrDirectoryExists",
        "deviceId": "Exists",
        "extendedData": { "commandType": "Exists" },
        "parameters": [
            { "name": "path", "dataType": "String", "deviceType": "String" },
        ],
    },
    "parameters": {
        "path": "c:/temp/file.csv",
}