# 文件宿模块 sink_file

首次发布：2020-06

最新发布：2022-11

作者：彩鹰工作室

----

文件宿模块用于将连接到本模块的专题数据保存到文本文件或者二进制文件中。这个模块包括两个功能，文本格式csv文件保存功能，二进制格式bin文件保存功能。


# 1.二进制输出功能 


功能名称：sink_filebin

分类名称：sink

功能简称：filebin

## 1.1 输入输出专题

本功能只有输入专题，共5路。名称为  data1 ~ data5。这五个专题可以接收任意格式的数据。

## 1.2 可配置参数（命令行参数）

主要配置图下表：

|名称|配置项|功能|类型|范围|举例|
|---|---|---|---|---|---|---|
|folder|存储文件夹|指定存储的文件夹，注意要用"/"取代"\\"|字符串|-|d:/test_out/dem|
|maxsize|单个文件最大大小（字节）|指定单个文件的最大大小。文件超过这个大小，会新建下一个文件。|整形|0-9223372036854775807|1677721600|
|type[1~5]|各路类型|指定data1通道的类型|整形|0,1|0表示存储纯数据（没有taskBus头），1表示存储taskBus帧|

## 1.3 文件名与内容格式

**（1）文件名规则**

Ins\<N\>_Sub\<M\>_P\<K\>_yyyyMMddHHmmss.bin

- N: 专题生产者的实例（进程）ID
- M: 专题ID
- K: 通道ID
- yyyyMMddHHmmss: 年月日时分秒

举例：
Ins1_Sub1_P3_20221211102809.bin

**（2）二进制原始模式文件格式**

二进制原始模式下，存储的是来自该专题+通道的连续字节数据。需要注意的是，如果原始数据是按包分割的不定长数据，却没有携带长度或者分割指示，则使用该模式存储的原始数据将丢失包与包的界限。

**（3）二进制分帧模式文件格式**

二进制分帧模式下，存储的是携带taskBus头部数据的分帧字节流，其格式如下：

|起点字节|字节长度|结束字节（含）|意义|
|---|---|---|---|
|0|4|3|头部Magic,0x3C,0x5A,0x7E,0x69（首包）|
|4|4|7|x86 Int32 专题编号|
|8|4|11|x86 Int32 通道编号|
|12|4|15|x86 Int32 数据长度N|
|16|N|16+N-1|数据内容|
|16+N|4|16+N+3|头部Magic,0x3C,0x5A,0x7E,0x69（下一包）|
|...|...|...|...|

# 2.纯文本输出功能 

功能名称：sink_filecsv

分类名称：sink

功能简称：filecsv

## 2.1 输入输出专题

本功能只有输入专题，共5路。名称为  data1 ~ data5。这五个专题可以接收任意格式的数据。

## 2.2 可配置参数（命令行参数）

主要配置图下表：

|名称|配置项|功能|类型|范围|举例|
|---|---|---|---|---|---|---|
|folder|存储文件夹|指定存储的文件夹，注意要用"/"取代"\\"|字符串|-|d:/test_out/dem|
|maxsize|单个文件最大大小（字节）|指定单个文件的最大大小。文件超过这个大小，会新建下一个文件。|整形|0-9223372036854775807|1677721600|
|type1~type5|各路类型|指定通道的类型|整形|0~10,参考下表|2|

类型参考下表：

|类型代号|类型|
|---|---|
|0|uint8|
|1|int8|
|2|uint16|
|3|int16|
|4|uint32|
|5|int32|
|6|uint64|
|7|int64|
|8|float|
|9|double|
|10|char|

## 2.3 文件名与内容格式

**（1）文件名规则**

Ins\<N\>_Sub\<M\>_yyyyMMddHHmmss.bin

- N: 专题生产者的实例（进程）ID
- M: 专题ID
- yyyyMMddHHmmss: 年月日时分秒

举例：
Ins1_Sub1_20221211102809.csv

注意：通道的ID将在CSV文件内体现。

**（2）纯文本CSV文件格式**

使用WPS打开CSV文件，有6列，分别是包序号，专题生产者的实例，专题，通道，长度，数据。举例：

|package|Instance|Subject|Path|Size|Values|
|---|---|---|---|---|---|
|0|2|1|3|116|1,2,3,4...|
|1|2|1|3|116|51,22,33,1273...|
|2|2|1|3|64|2,0,0,0...|
|3|2|1|3|64|2,0,0,0,69,0,0...|
|4|2|1|3|64|127,0,0,1...|
|5|2|1|3|64|5,81,0,1...|
|...|...|...|...|...|...|


