chenxiaochong 发表于 2020-3-17 15:46:37

数组平移 数组移位的方法

本帖最后由 chenxiaochong 于 2020-3-17 15:52 编辑

在做平滑滤波器时,或者需要连续采样的场景,往往需要把采样的数据放到一个数组里,每次采样值放到数组第一个元素,原数组第一个元素到倒数第二个元素依次往后平移,丢掉数组最后一个元素
本帖介绍了一种函数封装方法,实现上述功能
特点: 能平移任意类型,任意长度的数组

步骤1: 添加CANopenSafetyBase库
本例用到了CANopenSafetyBase库里的MemCopy函数


步骤2: 封装方法(只拿来用的话,可以略过此步骤,直接将附件工程中的arrayTranslation函数整个复制到工程中即可)


步骤3:调用函数
参数说明:
1. en必须用沿触发,每个沿传送一个新值到数组中
2.arrayPoint 为数组的起始地址指针
3.dataPoint 为新值(采样值)的指针 (新值的类型必须与数组元素类型一致!)
4.dataSize   为数组元素(新值)类型的字节宽度 (例:real 宽度为4 lreal 宽度为8),此处可用sizeOf()来取得新值的字节宽度
5.count: 为数组元素个数



注意:dataSize    count一定不要设错,不然可能导致数组溢出,导致不可预知的后果,可以用sizeOf 指令计算出dataSize和count 如图:





页: [1]
查看完整版本: 数组平移 数组移位的方法