MDF库详解:如何使用Scarborough项目读取和解析MDF 3.0版本文件数据

如何使用mdf库读取mdf文件

mdf文件格式最新版本为4.0,而当下我们最常用的版本为3.0。以下说明全部基于3.0版本。

调用mdf库:

/*   flag默认值为true
 *   true: 初始化时读取所有通道的数据rawDataArray,当文件超过20MB时,处理时间可能会较长,超过10s,所以一般不启用
 *   false: 初始化时不读取通道数据,只生成所有通道对象,即使文件超过100MB,也能在2s以内读取文件完毕
 */
var mdfObject = new MDF(arrayBuffer:arrayBuffer, flag = false);

通过MDF库解析出来的MDF对象,列出对象层级、常用的属性和方法:

  • arrayBuffer: readAsArrayBuffer(file)时返回的arrayBuffer,当初始化时flag=true时,arrayBuffer = null

  • dgBlocks: data group blocks 数据块数组

    • dgBlock: data group block
      • cgBlocks: channel group blocks, cgBlock的数组
        • cgBlock: channel group,cnBlock的数组
          • cnBlocks: cnBlock的数组,数组第一个元素为该组对应的时间序列
            • cnBlock: 终于到了信号通道本身了
              • longSignalName:
                信号名称,包含设备名称,中间用分隔。例如nmot_wccp:1,真正的信号名字为nmot_w,设备名称为ccp:1。注意,当使用mdf.searchChannelsByRegExp方法查找信号通道时,参数需要使用不带设备名称的信号名字。
              • rawDataArray:
                不具有物理意义的通道原始数据。当没有读取数据时,没有该属性。需要使用cnBlock.ccBlock.convertAll(cnBlock.rawDataArray)返回经过必定规则转换后得到的具有实际物理意义的通道数据。
              • samplingRate: 采样周期,单位秒。例如0.1,表明采样周期100ms。
              • ccBlock:
                • conversionType:
                  转换类型,详细来分有十几种,但常用的可能就几种。当值为10/11/12时,信号通道的值为查表类型(离散的,列如0 => ‘空挡’,1 => ‘1档’,2 => ‘2档‘,3 => ‘3档’, 4 => ‘4档‘,5 => ‘5档’),而其他情况,则认为信号通道的值为连续数值型。
              • convertAll(rawDataArray): 方法,用于将信号原始数据rawDataArray转换成有物理意义的值。注意在用echarts画图时,对于连续数值型的信号,y轴的type= value ,而对于离散的信号,y轴的type= category
  • hdBlock: 文件附加信息块

    • fileComment
      • text: hdBlock的属性有一些信息但不全,完整的信息以字符串的方式保存在hdBlock.fileComment.text,例子如下:
        "Date: 2018/3/21↵Time: 17:15↵Recording Duration: 00:28:09↵Database: test↵Experiment: Default↵ Workspace: Workspace↵Devices: CCP:1↵Program Description: E60705A301_c_CAN2↵WP: E60705A301_c_CAN2_GSL_180321_3↵RP: E60705A301_c_CAN2_GSL_180321_2↵¡ì@"
  • idBlock: 文件版本信息块

  • readDataBlockOf(cnBlock, arrayBuffer): 方法,用于读取通道的rawDataArray

  • readDataBlocks(arrayBuffer): 方法,用于读取所有通道的rawDataArray

  • searchChannelsByRegExp(regexp): 方法,用于检索名字符合正则表达式(或字符串)的通道,返回符合条件的通道数组

  • searchChannelsIf(function): 方法,自定义检索规则,返回符合条件的通道数组

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容