using System;
using System.Collections.Generic;
using System.ComponentModel;
using TDMS.Common;
namespace TDMS
{
///
/// NI定义了一个技术数据管理(Technical Data Management,TDM)解决方案。
/// - TDMS文件就是该技术解决方案的承载数据文件。本接口是这个文件格式的具体描述。
/// - 文件格式由三个层次组成:文件、组、通道。
/// - 文件层可包含任意数量的组,而每个组又可包含任意数量的通道。
/// - 在层次结构的每个级别,可以存储无限数量的自定义标量属性。
/// - 每个级别都接受无限数量的自定义属性,以实现文档齐全且可供搜索的数据文件。
/// - 位于文件中的描述性信息是此模型的一个主要优点,它提供了一种简单的方法来记录数据,而无需设计您自己的标头结构。
///
/// https://knowledge.ni.com/KnowledgeArticleDetails?id=kA03q000000x4PcCAI&l=zh-CN
/// https://www.ni.com/en/support/documentation/supplemental/06/the-ni-tdms-file-format.html
/// https://www.ni.com/docs/en-US/bundle/labwindows-cvi/page/cvi/libref/cvitdmslibrary.htm
///
public interface ITDMSFile : ITDMSLevel
{
public bool IsOpen { get; }
///
/// 获取 TDMS 文件的信息。
///
TDMSFileInfo FileInfo { get; }
///
/// 保存 TDMS 文件。
///
bool Save();
///
/// 打开指定路径的 TDMS 文件。
///
/// 文件路径。
bool Open(string filePath);
///
/// 通过指定的 TDMS 文件信息打开文件。
///
/// 文件信息。
bool Open(TDMSFileInfo fileInfo);
///
/// 创建 TDMS 文件。
///
/// 文件路径。
/// 文件类型。
/// 文件名称。
/// 文件描述。
/// 文件标题。
/// 文件作者。
bool Create(string filePath, string fileType, string name, string description, string title, string author);
///
/// 创建 TDMS 文件。
///
/// 文件信息。
bool Create(TDMSFileInfo fileInfo);
///
/// 添加指定名称和描述的通道组。
///
/// 组名称。
/// 组描述。
/// 添加的通道组。
ITDMSChannelGroup? AddGroup(string groupName, string description = "");
///
/// 获取或设置指定索引位置的通道组。
///
/// 索引位置。
/// 指定索引位置的通道组。
ITDMSChannelGroup? this[int index] { get; }
///
/// 获取或设置指定名称的通道组。
///
/// 组名称。
/// 指定名称的通道组。
ITDMSChannelGroup? this[string groupName] { get; }
///
/// 获取 TDMS 文件中的默认属性值。
/// - name
/// - description
/// - title
/// - author
/// - datetime
/// 其中datetime采用字符串表达,但可以TryParse转换为类型。
///
/// 属性值字典
IDictionary GetDefaultProperties();
}
}