首页 > 田园生活

labview移位寄存器(labview把实时数据写入数组)

labVIEW for循环移位寄存器的问题~~

你这个程序有太多问题:

1.移位寄存器前后输入数据类型必须一致。

2.你输入的是什么类型,移位寄存器输出的还是什么类型(你输入的元素,后面不可能出数组啊)。

3.你的数组检索有问题,index根本永远是默认是0,除非你的input是个二维数组,否则其输出的永远是第0个double元素。

4.如果每次取的元素索引不同,很显然要把数组检索放到循环里面去。

5.。。。。

6.给你个忠告,先把语法搞懂,再想算法。

labVIEW移位寄存器的问题

首先你对移位寄存器的赋值是错的,下一次的赋值并不是input data里面的下一个元素。赋值的是i+1,也就是1,2,3,这就不难解释为什么异或出来的有2和3了。

其次,你的数组输出那里有问题,要么你启用自动索引,那么出来的是一个二维数组,输出二维数组之后再转换成一维数组。或者采用以下方法,追加数据,直接输出一维数组。

labview串口接收到的数据怎样实时更新

如果你每次收到的字节数能确定(比如每条发过来的命令字节数固定,或者最前一两个字节表示后面的字节数),就按照字节数接收。然后直接把收到的字符串给显示控件,不使用移位寄存器或反馈节点当然就不显示之前的字符了。

别加“等待”之类的函数(手表图标哪个),串口读取函数会在读到指定数量的字符或到达超时之后返回读到的字符串。用它就能控制循环。也就是说来一条命令或者到达一次超时之后,自动循环一次,字符串显示控件里面的值就是刚收到的字符串了。

如下图:

可以把图片下载后直接拖入2012或2013的程序框图中。外层的错误分支中有个串口配置失败的弹窗提示。

串口的参数我就使用默认的“9600,8,n,1”了,超时值我设置的是100ms,为了让程序运行时不会因为默认的10000ms超时显得程序卡*。但是几乎每100毫秒就会有一个超时错误并返回空字符串,所以内层的错误分支什么也没做,在超时的时候不用空字符串替换原有的显示值。

如果字符数不确定,你还不想保留之前的值,那就不好办了。很有可能会造成一句话分两次显示的情况,某次显示前面一部分,后面一次显示后一部分。

看下图吧:

为减少上述情况的出现,我把超时值改为了1000ms,后面的条件分支根据读到的字节数区分。0的时候不更新显示控件,其它值的时候显示刚刚收到的字符串。因为你不要和前面的拼凑,所以有可能是不完整的。

其实也可以让字符串显示控件自动滚动,或者字符串长度达到一定长度时或点清空按钮时,清空显示值。可以用反馈节点/移位寄存器/局部变量/值属性等。

下图的做法最简单,因为用的是输入控件,可以随便删除之前的内容。

labview for循环移位寄存器作用

for循环移位寄存器作用是寄存;

While循环

While循环是一种结构,它重复执行代码片段直到满足某种条件为止。它可比作传统语言中的Do Loop或Repeat-Until循环。它位于编程→结构→While循环。每个While循环都有一个条件端子和一个重复端子。如图:

重复端子用于记录和输出已执行的循环的次数,条件端子输入的是一个布尔变量:真或假,While循环将一直执行到连接条件端子上的布尔值变成真或假为止,取决于条件端子设置为“真(T)时停止”还是“真(T)时继续”。在条件端子上单击右键即可进行更改。如图:

labview的字符串的四种表示分别是什么

最近在做的项目需要用到分割字符串中的有效数据,而有效数据的分割一般是两个标识符中间的。一直未能找到合适的字符串函数来解析出来有效数据,而昨天恰恰看到了这样一个字符串函数——在字符串中搜索标记。

这个函数的描述是这样的:

其中标记是连接至函数的分隔符或运算符能够识别的文本片段,在这里就是指我上面所谓的有效数据段。而分隔符是上面所说的标识符。

其他引脚的说明如下:

允许空标记?确定函数在遇到多个相邻分隔符时是否能识别标记。如允许空标记?的值为FALSE(默认值),多个相邻的分隔符可以分隔输入字符串中的两个标记。如允许空标记?的值为TRUE,在每个相邻分隔符对之间都将返回空的标记字符串。

输入字符串是要搜索标记的字符串。

偏移量是输入字符串中开始扫描的点。默认值为0,即字符串的起始位置。

运算符是字符串数组,如输入字符串包含字符串数组,即使它们没有被分隔符分隔,函数仍将其视为标记。如输入字符串的一部分匹配多个运算符,函数将把最长的匹配作为标记。例如,如>、=和>=被定义为运算符,输入字符串4>=0将生成>=作为下一个标记字符串,偏移量为1。

运算符中的字符串可能包含下列特殊格式代码,用于将整个数字作为单个标记进行扫描。%d匹配十进制整数%o匹配八进制整数%x匹配十六进制整数%b匹配二进制整数%e,%f,%g匹配浮点数或科学计数法实数%%匹配单个%字符注:如字符串+或-被定义为运算符,函数将无法识别前导(一元)+或-符号。函数始终将其作为单个标记返回。这是“最长匹配”规则的例外情况。

分隔符该字符串数组可作为标记分隔符。分隔符中的字符串不会作为标记返回,而是用于分隔相邻的标记。默认的分隔符为空格字符:空格、制表符、换行符和回车。

使用缓存中的分隔/运算数据?是可选的高级输入端。如没有连线,标记字符串仍为正常状态。通过使用缓存中的分隔/运算数据?可以显著改进字符串解析的性能。在标记字符串第一次执行时,应将使用缓存中的分隔/运算数据?设置为FALSE,在接下来的执行中,只要运算符和分隔符没有改变,就将其设置为TRUE。使用移位寄存器并将常量FALSE作为输入,TRUE作为输出,可保证运算符和分隔符在循环执行中没有改变的情况下正确运行。如使用缓存中的分隔/运算数据?的值为TRUE,并且运算符或分隔符在上次执行时发生了改变,将产生错误的结果。如运算符和分隔符没有连线或连线至程序框图常量,则无需连线使用缓存中的分隔/运算数据?就可得到优化的性能。

字符串输出返回无改变的输入字符串。

标记后偏移量确定在输入字符串中的点,这些点紧随最近找到的标记和任意的分隔符。任何对于输入字符串的后续搜索都从该偏移量开始。如偏移量小于0或大于输入字符串中的字符数,或者已经到达字符串的末尾,则标记后偏移量为-1。

标记字符串是匹配的标记。它可以是运算符中的字符串或输入字符串中位于分隔符间的任意文本字符串。

标记索引如标记字符串匹配运算符中的某个元素,则值为标记字符串在运算符中的索引。如标记字符串是其它字符串,标记索引将返回-1。如函数在到达输入字符串末尾后,仍未找到有效的运算符,标记索引将返回-2。

利用这个函数我们可以将含有标识符的数据分割成多个有效数据段。

据此,我写了一个简单的小程序。如下:

输入字符串输入进while循环,通过本函数,搜索c0分割的字符,就会将第一个有效数据段分离出来。然后本函数的输出–标记后偏移量经过移位寄存器再传给函数的输入–偏移量。就不再考虑已经标记下来的有效数据段,进而搜寻下一个有效数据段。当最后的的数据段后面已经没有标识符了,这个输出的偏移量值为-1,我通过这个条件判定while循环结束。详细具体的输入输出结果,不妨写个顺序结构,一个步骤一个步骤的看。再次不再详述。只是其中的一个输入——允许空标记?true时,如果两个标识符中间没有(两个标识符直接相连的话),也会显示出空字符串。如果为false时,则不会显示空字符串,而是将两个标识符视为一个标识符进行*作。

至于运算符输入项,如果设置了一个条件的话,就会在有效数据段内搜索该运算符,把符合条件的通过标记索引输出出来。

具体再使用其他更细化功能的话,不妨再进行详细实验。

本文链接:http://www.mtgou.com/html/87958726.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。