几天前,我曾经写过一个Nugget,专门介绍了格式化写入字符串函数。虽然格式化字符串函数看起来很简单,但是变化非常多,巧妙地运用格式化字符串函数可以替代字符串函数选板中的很多函数,该函数的基本用法见下面的链接。

http://www.eefocus.com/csxcs366/blog/11-02/204708_34f6a.html

今天我们要详细讨论格式化写入字符串函数的多种用法,格式化写入字符串数最为关键的是“格式字符串”的问题。对于通常的“格式字符串”,函数提供了配置对话框。调用对话框的方法如下图所示:

 
初学者创建的程序通常仅仅是为了完成某种特定的功能,它的程序结构往往存在很多问题,因此基本上是无法重用的,LABVIEW创建的程序尤其如此,原因在于LabVIEW图形化编程非常易于使用,与编程者的思维方式更容易契合,因此创建的程序框图显得更为随意,没有规划。

同一些LabVIEW初学者交流程序时,每当要求他们贴图时,他们经常会说“没办法,程序框图太大”。“程序框图太大”本身就说明我们的程序框图存在相当大的问题,如果能把我们的程序框图缩小到一定程度,就说明程序框图的模块化程度很高了。

在完成的程序功能基础上,一定要花费一定时间对代码进行重构和优化,否则一段时间后,可能我们自己也无法看懂了。

下面我通过网友的一个具体的实例谈谈代码重构的问题,示例存在很多的各种问题。因为程序框图非常大,只能通过导航窗口才能看到全貌,如下图所示:


 
问题如下:
有这样一个问题:x的取值范围为【0-1000】,我想进行这样的操作:将x分为20等份,在每一等分中y取不同的值。即,在x=【0-50】时,y=a;x=【50-100】时,y=b;。。。一直到x=【950-1000】时,y=z。
最先能想到的解决办法就是嵌套case,但是这要20个case,太复杂,有没有什么办法可以不用嵌套?比如公式节点里面输入C语言?但是这样的程序c语言我不知道该怎么编,哪位指教一下~急求啊~~~

 
即将横空出世
Picture
 
求出1000内的所有水仙花数,水仙花数值的是一个三位数,其各位数字立方和等于其本身。例如371=3^3+7^3+1^3 这个问题用C语言比较容易实现,但是用VI还没有弄明白,不用公式节点的话该怎么做呢?

 
自从LABVIEW全面支持事件结构后,已经很少用到全局键盘和鼠标了。在事件结构之前,轮询键盘和鼠标是非常常见的。
在LABVIEW  "互联接口"函数选板中,提供了“输入设备控制”子选板,如下图所示:
 

 
我们都知道两点之间最近的路径是直线,遗憾的是程序员往往走的并非直线
C语言中if语句经常会遇到下面的情形。
if (sth==TRUE)
{
      //do sth
}
实际是上可以简化为:
if(sth)
{
   //do sth
}
在LABVIEW编程中,初学者也经常会有类似的错误,看看下面的程序框图:

 
一些初学LV的网友们近期发给我的邮件中多次谈到WHILE循环的一些问题,这些问题虽然很常见,但是是根本性的问题,原因在于这些问题之所以不容易理解,是因为刚刚接触LV,很难理解或者经常忽视了“数据流”的问题。

首先简要回顾一下WHILE循环的基本概念和特点,然后重点回复网友们有关WHILE循环的问题。

几乎所有有关LV的书籍中都把WHILE结构与C语言的DO WHILE循环相提并论 ,其实二者之间是存在很大差别的,其根本区别在于LV是基于数据流驱动的,而C语言则不是。
DO WHILE循环可以保证循环至少运行一次,LV中的WHILE结构也是如此,这是二者之间的共同点。C语言中的WHILE结构如下所示:

do{
// do sth
}while(condition)

我们需要特别注意的是,C语言中DO WHILE循环判断循环条件是在循环中所有语句执行之后,简单地说就是“先运行,后判断”,LABVIEW中的循环结构则不然,这导致了很多LV初学者很难理解LV中WHILE循环的一些特殊现象。

1、可以同时运行多个WHILE循环结构。
同时运行多个WHILE循环结构在C语言中是比较麻烦的,必须开辟多个线程,而LABVIEW是自动多线程的。LABVIEW不仅可以同时并行运行多个WHILE结构,甚至在每个while循环中可以同时运行多个数据流程。
多了同时运行的WHILE循环可以分成两类:
一类是一个VI中多个同时运行的WHILE循环。多个WHILE循环在同一程序框图中。
另一类是每个子VI拥有各自的WHILE循环,此时多个WHILE循环同时工作相当于WINDOWS的多窗口运行。

2、每个循环中必须增加延时函数,释放系统控制权。
如果在循环中没有延时类函数,将导致WHILE循环独占CPU,CPU占用率很快达到100%。

3、仅运行一次的WHILE循环+未初始化的移位寄存器。这就是著名的LV2(功能)全局变量。
 

 
近日与网友讨论串口数据接收与类型转换问题,觉得非常典型,可能对网友们有借鉴意义,择其主要部分,与网友们共享。网友简称为AAA.

 
有网友问:公式节点可以接受数组作为输入参数吗?