恭喜,你发布的帖子
发布于 2021-01-19 12:06:20
11楼
本是想使用variant来定义形参的,但我的目的是做一个通用的模拟量模块的批处理的FC,配置实参时需根据模拟量模块的输入输出通道数配置形参的数组元素数量,这样就涉及到限值可变数组,但零时变量不支持限值可变数组,没有想到更好的办法。这个可能还需要版主赐教。
您的需求就是要做一个通用的模拟量通道参数配置,直接封装成UDT即可。因为这个结构本身是不会变的,只是不同的项目模拟量的数量不同,所以仅长度是会变的,故而形参做成array[*]是最方便的,直接通过指令读出实参的长度即可。
如果要定义成variant,那么您就要在FC的临时变量中去声明一个相同的UDT,而不是array[*]了,然后通过CountOfElements读取实际的数组内元素长度,再通过MOVE_BLK_VARIANT指令循环将元素值读进来操作。
variant的优势在于如果实参连接的数组元素类型有区别,那么用varaint可以解析不同的数组元素。而您现在的需求是数组内的元素都是相同的,其实用array[*]反而会更方便。
请填写推广理由:
分享
只看
楼主