人机协同控制模块
视觉算法+运动控制引擎
开发周期缩短40%+

二.动态数据管理模块

声明文件: dsm.h

库文件: dsm.lib, dsm.dll

动态数据管理是RVB系统的基本模块,动态数据是程序运行中发生的某种类型数据的集合,这些数据一般是动态产生,一般无法在编程阶段可以确认元素的多少,相比矩阵而言,这些数据一般是离散的,在内存中一般也是不连续的。除此以外,可能还需要保证数据之间的某种逻辑关系。

目前的动态数据管理模块里面的对象主要包括: 序列(RvSequence), 聚集(RvCluster), 列表(RvList)。这些动态的数据结构可以描述图象中的一些复杂对象如图(RvGraph),轮廓(RvContour),码链(RvChain). 也可以作为一种普通的数据结构使用。

2.1常量

结构体说明

2.1.1数据片

typedef struct _rv_slice_

{ int start, end; }RvSlice;

该数据结构表示序列或聚合中按照数组的形式进行索引,start为开始的索引值, end为结束的索引值。

2.2函数

2.2.1基础函数

rvdBeginRead

声明:void rvdBeginRead(RvDynamic collect, void* pReader, BOOL bReverse );

描述:开始进行动态数据管理对象的读操作。该函数对相应的读对象进行初始化。

参数:1、RvDynamic collect – 动态管理对象

2、void* pReader – 动态管理对象的读对象

3、BOOL bReverse – 是否进行反向读取。仅序列支持。

返回:无

备注: 不是所有的动态数据管理对象都支持快速操作。

rvdEndRead

声明:void rvdEndRead(RvDynamic collect, void* pReader);

描述:结束进行动态数据管理对象的读操作

参数:1、RvDynamic collect – 动态管理对象

2、void* pReader – 动态管理对象的读对象

返回:无

rvdBeginWrite

声明:void rvdBeginWrite(RvDynamic collect, void* pWriter);

描述:开始进行动态数据管理对象的写操作。该函数对相应的写对象进行初始化。

参数:1、RvDynamic collect – 动态管理对象

2、void* pReader – 动态管理对象的写对象

返回:无

备注: 不是所有的动态数据管理对象都支持快速操作。

rvdEndWrite

声明:void rvdEndWrite(RvDynamic collect, void* pWriter);

描述:结束进行动态数据管理对象的写操作。

参数:1、RvDynamic collect – 动态管理对象

2、void* pReader – 动态管理对象的写对象

返回:无

rvdSetRecycler

声明:void rvdSetRecycler(RvDynamic collect, RvDestroyFunc fnDestroy , void* pUserData );

描述:设置对动态数据管理对象中元素进行销毁的函数。

参数:1、RvDynamic collect – 动态管理对象

2、RvDestroyFunc fnDestroy – 元素销毁函数指针。

3、void* pUserData – 销毁函数的用户数据指针。

返回:无

rvdSetComparison

声明:void rvdSetComparison(RvDynamic collect, RvCompareFunc fnCompare , void* pUserData);

描述:设置对两个同类型,同元素数据结构的动态数据管理对象中元素进行比较的函数。

参数:1、RvDynamic collect – 动态管理对象

2、RvCompareFunc fnCompare – 元素比较函数指针。

3、void* pUserData – 销毁函数的用户数据指针。

返回:无

rvdSetCriterion

声明:void rvdSetCriterion(RvDynamic collect, RvConditionFunc fnCondition , void* pUserData);

描述:设置对两个同类型,同元素数据结构的动态数据管理对象中元素进行判别的函数。该函数会对元素中的值进行条件判定。

参数:1、RvDynamic collect – 动态管理对象

2、RvConditionFunc fnCondition – 元素判别函数指针。

3、void* pUserData – 销毁函数的用户数据指针。

返回:无

2.2.2序列对象函数

rvCreateSequence

声明:RvSequence rvCreateSequence( int dataType, RvDestroyFunc fnDestroyElem );

描述:创建一个序列对象。

参数:1、int dataType – 元素数据类型

2、RvDestroyFunc fnDestroyElem – 元素销毁函数指针。

返回:无

rvCreateSequenceEx

声明:RvSequence rvCreateSequenceEx( UINT nElemSize, int flag , RvDestroyFunc fnDestroyElem );

描述:创建一个序列对象。

参数:1、UINT nElemSize – 元素占用内存大小 。(字节为单位)

2、int flag – 序列标记,供用户程序使用。

3、RvDestroyFunc fnDestroyElem – 元素销毁函数指针。

返回:无

rvDestroySequence

声明:void rvDestroySequence(RvSequence sequence);

描述:销毁一个序列对象。

参数:RvSequence sequence – 销毁序列对象。如果已经设置了该序列对象的元素销毁函数,那么元素数据对象本身也会被销毁。

返回:无

rsqAddLast

声明:HITEM rsqAddLast( RvSequence sequence, void* pVal);

描述:将一个元素添加到序列最后位置。

参数:1、RvSequence sequence – 序列对象。

2、void* pVal – 指向元素的对象的指针。

返回:元素节点

rsqAppend

声明: HITEM rsqAppend( RvSequence sequence, void* pVal);

描述: 将一个元素添加到序列最后位置。

参数:1、RvSequence sequence – 序列对象

2、void* pVal – 指向元素的对象的指针。

返回:元素节点

rsqAddFirst

声明:HITEM rsqAddFirst( RvSequence sequence, void* pVal);

描述:将一个元素添加到序列最前位置。

参数:1、RvSequence sequence – 序列对象。

2、void* pVal – 指向元素的对象的指针。

返回:元素节点

rsqRemoveLast

声明:void rsqRemoveLast( RvSequence sequence, void* pVal );

描述:将序列中最后一个位置的元素删除,同时,可以输出最后元素的值。

参数:1、RvSequence sequence – 序列对象

2、void* pVal – 指向元素的对象的指针。

返回:无

rsqRemoveFirst

声明: void rsqRemoveFirst( RvSequence sequence, void* pVal);

描述:将序列中最前一个位置的元素删除,同时,可以输出最后元素的值。

参数:1、RvSequence sequence – 序列对象

2、void* pVal – 指向元素的对象的指针。

返回:无

rsqRemoveElem

声明:void rsqRemoveElem( RvSequence sequence, void* pVal);

描述:按照元素的值删除元素。

参数:1、RvSequence sequence – 序列对象。

2、void* pVal – 指向元素的对象的指针。

返回:无

rsqRemoveItem

声明:HITEM rsqRemoveItem( RvSequence sequence, HITEM hItem);

描述:按照元素的节点句柄删除元素。

参数:1、RvSequence sequence – 序列对象。

2、HITEM hItem – 元素句柄。

返回:下一个元素句柄。

rsqGetFirst

声明:void* rsqGetFirst( const RvSequence sequence);

描述:获取指向第一个位置的元素数据的指针。

参数:1、RvSequence sequence – 序列对象。

2、HITEM hItem – 元素句柄。

返回:指向元素数据的指针。

rsqClear

声明:void rsqClear(RvSequence sequence );

描述:清除序列中的所有元素。

参数:RvSequence sequence – 序列对象。

返回:无。

rsqIsEmpty

声明:BOOL rsqIsEmpty(RvSequence sequence );

描述:判别序列是否为空。

参数:RvSequence sequence – 序列对象。

返回:TRUE或FALSE。

rsqGetCount

声明: int rsqGetCount(RvSequence sequence);

描述:获取序列中的元素数量。

参数:RvSequence sequence – 序列对象。

返回:元素数量。

rsqGetItemValue

声明:void rsqGetItemValue( const RvSequence sequence, int index, void* pVal);

描述:按照索引获取序列中的元素的数据值。

参数:1、RvSequence sequence – 序列对象。

2、int index – 元素所在位置的索引

3、void* pVal – 可以放置元素数据的变量指针

返回:无。

rsqSetItemValue

声明:void rsqSetItemValue( const RvSequence sequence, int index, void* pVal );

描述:按照索引设置序列中的元素的数据。

参数:1、RvSequence sequence – 序列对象。

2、 int index – 元素所在位置的索引

3、void* pVal – 指向放置元素数据的变量指针

返回:无。

rsqGetItemValueEx

声明: void rsqGetItemValueEx( const RvSequence sequence, HITEM item, void* pVal );

描述:按照元素句柄获取序列中的元素的数据。

参数:1、RvSequence sequence – 序列对象。

2、HITEM item – 元素句柄

3、void* pVal – 可以放置元素数据的变量指针

返回:无。

rsqSetItemValueEx

声明: void rsqSetItemValueEx( const RvSequence sequence, HITEM item, void* pVal );

描述:按照索引设置序列中的元素的数据。

参数:1、RvSequence sequence – 序列对象。

2、HITEM item – 元素句柄

3、void* pVal – 可以放置元素数据的变量指针

返回:无。

rsqSeekToBegin

声明:HITEM rsqSeekToBegin(const RvSequence sequence);

描述:获取序列中的第一个位置的元素句柄。

参数:RvSequence sequence – 序列对象。

返回:元素句柄。

rsqSeekToEnd

声明:HITEM rsqSeekToEnd(const RvSequence sequence);

描述:获取序列中的最后一个位置的元素句柄。

参数:RvSequence sequence – 序列对象。

返回:元素句柄。

rsqGetItemAt

声明:HITEM rsqGetItemAt( const RvSequence sequence, int index );

描述:按照索引获取序列中的元素句柄。

参数: 1、RvSequence sequence – 序列对象。

2、int index – 元素所在位置的索引。

返回:元素句柄。

rsqGetNextItem

声明:HITEM rsqGetNextItem(const RvSequence sequence, HITEM item, int nCode);

描述:获取指定的元素句柄的后面或前面一个位置的元素句柄。

参数:1、RvSequence sequence – 序列对象。

2、HITEM item - 元素句柄。

3、int nCode - 位置代码,只能取1 RV_SQ_NEXT; 2 RV_SQ_PREV

返回:元素句柄。

rsqMerge

声明:int rsqMerge(RvSequence sequence, RvSequence income );

描述:将一个序列中的所有元素合并到另一个序列中。合并以后,被合并的所有元素将被删除。

参数:1、RvSequence sequence – 序列对象。

2、RvSequence income – 被合并序列对象

返回:已经合并的元素数量。

备注:新的版本将可以设置条件来进行有选择性的合并元素。

2.2.3聚合对象函数

rvCreateCluster

声明:RvCluster rvCreateCluster(int dataType, RvDestroyFunc fnDestroyElem);

描述:创建一个聚合对象。

参数:1、int dataType – 元素数据类型

2、RvDestroyFunc fnDestroyElem - 元素销毁函数

返回:聚合对象

rvCreateClusterEx

声明: RvCluster rvCreateClusterEx(UINT nElemSize, int flag , RvDestroyFunc fnDestroyElem);

描述:创建一个聚合对象。

参数:1、UINT nElemSize – 元素数据内存大小(以字节为单位)

2、int flag - 标记,供应用程序使用。

3、RvDestroyFunc fnDestroyElem - 元素销毁函数

返回:聚合对象

rvDestroyCluster

声明:void rvDestroyCluster(RvCluster cluster);

描述:销毁一个聚合对象。

参数:RvCluster cluster – 聚合对象

返回:无

rclAppend

声明:void rclAppend(RvCluster cluster, void* pVal);

描述:向聚合对象添加元素。

参数:1、RvCluster cluster – 聚合对象

2、void* pVal – 数据变量指针。

返回:无

rclAppendEx

声明:void rclAppendEx(RvCluster cluster, void* pElemArray, int nArraySize);

描述:销毁一个聚合对象。

参数:1、RvCluster cluster – 聚合对象

2、void* pElemArray – 元素数据数组的指针

3、int nArraySize – 元素数据数量

返回:无

rclRemove

声明: void rclRemove(RvCluster cluster, void* pVal);

描述:将聚合里面所有数据元素的值等于输入的值的数据元素删除。

参数:1、RvCluster cluster – 聚合对象

2、void* pVal – 元素数据变量

返回:无

rclClear

声明:void rclClear(RvCluster cluster);

描述:删除聚合对象中所有元素。

参数:RvCluster cluster – 聚合对象

返回:无

rclIsEmpty

声明: BOOL rclIsEmpty(RvCluster cluster);

描述:判断聚合对象是否为空,即一个元素也没有。

参数:RvCluster cluster – 聚合对象

返回:TRUE 或FALSE

rclGetCount

声明: int rclGetCount(RvCluster cluster);

描述:获取聚合对象中的元素数量。

参数:RvCluster cluster – 聚合对象

返回:元素数量

rclGetAt

声明:void* rclGetAt(RvCluster cluster, int index);

描述:按照索引,获取聚合对象中的元素数据指针。

参数:1、RvCluster cluster – 聚合对象

2、int index – 索引

返回:元素数据指针

rclSetAt

声明:void rclSetAt(RvCluster cluster, int index, void* pVal);

描述:按照索引,设置聚合对象中元素的数据。

参数:1、RvCluster cluster – 聚合对象

2、int index – 索引

3、void* pVal – 元素数据变量指针

返回:无

rclRemoveAt

声明:void rclRemoveAt(RvCluster cluster, int index);

描述:按照索引,将聚合对象中指定位置的元素。

参数:1、RvCluster cluster – 聚合对象

2、int index – 索引

返回:无

rclRemoveAll

声明:void rclRemoveAll(RvCluster cluster);

描述:将聚合对象中所有元素删除。

参数:RvCluster cluster– 聚合对象

返回:无

rclMerge

声明: RvCluster rclMerge(RvCluster cluster , RvCluster income );

描述:将两个聚合对象中元素合并。

参数:1、RvCluster cluster– 聚合对象

2、RvCluster income – 元素被合并的聚合对象

返回:返回聚合以后的对象,即cluster。

rclRevertToArray

声明:int rclRevertToArray(const RvCluster cluster, RvSlice slice, void* pElemArray, int nArraySize);

描述:将聚合对象中的元素数据转化到数组里面。

参数:1、RvCluster cluster – 聚合对象

2、RvSlice slice – 数据片

3、void* pElemArray – 保存元素数据的数组指针

4、int nArraySize – 可以保存的元素数据的数组大小,即表示可以保存多少元素的数据。

返回:无

rclSetArray

声明:void rclSetArray(RvCluster cluster, void* pElemArray, int nArraySize);

描述:设置将一个数组中的数据添加到聚合对象。如果聚合对象有元素,将清除。

参数:1、RvCluster cluster – 聚合对象

2、void* pElemArray –元素数据的数组指针

3、int nArraySize –元素数据的数组大小,即表示有多少元素。

返回:无

2.2.4列表对象函数

rvCreateList

声明:RvList rvCreateList(RvDestroyFunc fnDestroyElem);

描述:创建一个列表对象。

参数:RvDestroyFunc fnDestroyElem

返回:列表对象

rvDestroyList

声明:void rvDestroyList(RvList list);

描述:销毁列表对象

参数:RvList list - 列表对象。

返回:无

rlsGetHead

声明:void* rlsGetHead(RvList list);

描述:获取列表对象的第一个位置元素的数据

参数:RvList list - 列表对象。

返回:元素数据指针

rlsGetTail

声明:void* rlsGetTail(RvList list);

描述:获取列表对象的最后一个位置元素的数据

参数:RvList list - 列表对象。

返回:元素数据指针

rlsGetCur

声明:void* rlsGetCur(RvList list);

描述:获取列表对象的当前位置元素的数据

参数:RvList list - 列表对象。

返回:元素数据指针

rlsGetAt

声明:void* rlsGetAt(RvList list, int index);

描述:按照索引,获取列表对象元素的数据

参数:1、RvList list - 列表对象。

2、int index – 索引

返回:元素数据指针

rlsAddHead

声明:void rlsAddHead(RvList list, void* val );

描述:添加新元素到列表对象的第一个位置

参数:1、RvList list - 列表对象。

2、void* val – 元素数据变量指针

返回:无

rlsAddTail

声明:void rlsAddTail(RvList list, void* val);

描述:添加新元素到列表对象的最后的位置

参数:1、RvList list - 列表对象。

2、void* val – 元素数据变量指针

返回:无

rlsAdd

声明:void rlsAdd(RvList list, void* val);

描述:添加新元素到列表对象的最后的位置

参数:1、RvList list - 列表对象。

2、void* val – 元素数据变量指针

返回:无

rlsRemoveAll

声明:void rlsRemoveAll(RvList list);

描述:将列表对象中的所有元素删除

参数:RvList list - 列表对象。

返回:无

rlsRemoveHead

声明:void* rlsRemoveHead(RvList list);

描述:将列表对象中的第一个位置的元素删除

参数:RvList list - 列表对象。

返回:被删除元素的数据指针。

rlsRemoveTail

声明:void* rlsRemoveTail(RvList list);

描述:将列表对象中的第后位置的元素删除

参数:RvList list - 列表对象。

返回:被删除元素的数据指针。

rlsRemoveCur

声明:void* rlsRemoveCur(RvList list);

描述:将列表对象中的当前位置的元素删除

参数:RvList list - 列表对象。

返回:被删除元素的数据指针。

rlsRemove

声明:void rlsRemove(RvList list, void* pVal);

描述:将列表对象中的元素值等于指定的值的元素删除

参数:1、RvList list - 列表对象。

2、void* pVal - 元素数据指针

返回:无

rlsRemoveAt

声明:void* rlsRemoveAt(RvList list, int index);

描述:按照索引将列表对象中的元素删除

参数:1、RvList list - 列表对象。

2、int index – 元素索引

返回:被删除元素的数据指针。

rlsGoHead

声明:BOOL rlsGoHead(RvList list);

描述:将列表对象中的当前元素节点移动到列表第一个元素

参数:RvList list - 列表对象。

返回:是否成功。当列表里面的元素为空的时候,将会失败。

rlsGoTail

声明:BOOL rlsGoTail(RvList list);

描述:将列表对象中的当前元素节点移动到列表最后元素

参数:RvList list - 列表对象。

返回:是否成功。当列表里面的元素为空的时候,将会失败。

rlsStep

声明:BOOL rlsStep(RvList list, BOOL bBackward=FALSE);

描述:将列表对象中的当前元素节点移动到下一个元素

参数:1、RvList list - 列表对象。

2、BOOL bBackward – 是否反方向移动

返回:是否成功。当列表里面的元素为空的时候,将会失败。

rlsGetCount

声明:int rlsGetCount(RvList list);

描述:获取列表对象中的元素的数量。

参数:RvList list - 列表对象。

返回:元素数量。

rlsIsEmpty

声明:BOOL rlsIsEmpty(RvList list);

描述:判断列表对象中的是否存在元素。

参数:RvList list - 列表对象。

返回:TRUE 或者FALSE。

rlsIsBegin

声明:BOOL rlsIsBegin(RvList list);

描述:断列表对象中的当前元素是否为第一个位置指针。

参数:RvList list - 列表对象。

返回:TRUE 或者FALSE。

rlsIsEnd

声明:BOOL rlsIsEnd(RvList list);

描述:断列表对象中的当前元素是否为最后位置指针。

参数:RvList list - 列表对象。

返回:TRUE 或者FALSE。



QQ技术交流群:
微信技术交流群:
Marklab工作室
研发中心: 广东省东莞市大岭山镇元岭小区翠云街1巷16号
商务中心: 广东省东莞市松湖智谷B6栋225b

二维码1 二维码2 二维码3


Marklab工作室 版权所有  粤ICP备13082990号-2   友情链接 hao123 绿盟 搜狗 站长之家 太平洋下载 天极下载 淘宝店 软云动力

赞助和协作单位 广东省科学院自动化研究所 深圳市东百胜技术有限公司

统计显示 ▼