代码之家  ›  专栏  ›  技术社区  ›  Anzurio

为什么人们不将LabVIEW用于数据采集和虚拟化以外的目的?[关闭]

  •  20
  • Anzurio  · 技术社区  · 15 年前

    这是一个主观问题,我希望我不会得到太多的反对票。

    与传统的基于文本的编程相比,lv似乎提供了一个不错的图形替代方案。据我所知,它不仅仅是一种虚拟化/数据采集编程语言。尽管如此,这一范式似乎与创造者的名字息息相关。

    我提出这个问题是因为它似乎并没有被广泛用于多用途应用。我不是任何类型的LV专家,我更像一个学习者。我还在习惯左心室。

    14 回复  |  直到 12 年前
        1
  •  26
  •   Fuzz    15 年前

    如果您有国家仪器硬件,并且想做一些诸如获取、绘图和记录数据的工作,那么LabVIEW是非常棒的。

    当您开始连接到定制设备时,模块之间的连接变得复杂,必须对输入和输出设备执行所有的字符串操作工作。

    在我工作的地方,我们发现我们很恼火,不得不制作大量复杂的vi接口到设备,然后开始在.NET中编写它们,并将它们与LabVIEW接口。

    最后,我们一起放弃了LabVIEW,使用了用于Visual Studio的NI测量工作室,以C_的灵活性为我们提供了所有好看的NI控件(波形图、水箱、仪表、开关等)。

    总之,即使有几个24英寸的屏幕,有时候LabVIEW代码的连接也会变得过于复杂,无法对其进行评论、调试和扩展,以供将来的任何更改使用。我建议您看看Visual Studio的Measurement Studio,并使用您最喜欢的.NET语言和漂亮的NI控件。

        2
  •  18
  •   dmckee    15 年前

    我在“图形替代传统的基于文本的编程”方面的两次经历是可怕的。我发现这样的语言使用起来很慢,很难编辑,而且不容易表达。调试它们是一场噩梦。它们也没有真正的优势。

    可以肯定的是,我已经看了很久了,但是我问过的其他人的意见只是路加·温情,所以我再也没有花时间去看。欢迎再次查看的理由,并将被带到船上…

        3
  •  13
  •   truthisnotbeauty    15 年前

    LabVIEW可用于编写大型、复杂的软件项目。毫无疑问,使用LabVIEW要比使用基于语法的语言有趣得多。我已经用LabVIEW编程了数学密集的动态模拟。LabVIEW的新版本包括许多令人兴奋的功能,特别是用于多处理器的功能。我非常喜欢LabVIEW。但我不推荐给任何人。

    不幸的是,除了简单的采集和显示之外,它绝对是一场噩梦。有朝一日,它可能会得到充分的发展,被认为是一种可行的替代基于文本的语言。然而,NI的开发人员一直选择忽略困扰LabVIEW的三个基本问题。

    1)系统不稳定,存在漏洞。有成千上万的bug已经发布到LabVIEW支持论坛,但尚未修复。其中一些相当严重,例如内存泄漏或基本函数中的数学错误。

    2)文件残缺不全。通常情况下,当您在本地帮助文件中查找关于labview函数的帮助时,您会发现一个句子,它只会重述您试图查找的项目的名称。例如,用户在“纹理过滤模式”设置中查找帮助文件,而在帮助文件中写入的唯一内容是“纹理过滤模式-选择用于纹理过滤的模式”。哎呀,谢谢。把事情弄清楚,不是吗?这个问题要深入得多;通常,当你要求国家仪器公司的技术代表提供关于LabVIEW功能或数学函数的具体行为的关键细节时,他们根本不知道自己的库中的函数是如何工作的。这听起来有点夸张,但相信我,事实并非如此。

    3)虽然不可能保持图形代码的整洁和良好的文档化,但LabVIEW的设计使这些任务既困难又低效。为了防止代码变得混乱、混乱,您必须经常(每隔几次操作)使用诸如集群、子vis和大型类型定义控件之类的结构(它们可以在大型项目中扩展到多个屏幕)。这些结构消耗内存并破坏性能,迫使LabVIEW在内存中复制多个数据并执行免费操作——所有这些都是为了防止图形图看起来像彩虹色的意大利面,而看不到任何评论或文本。在LabVIEW中编程就像在和魔鬼玩pictionary。想象一下,你的大型软件项目被写成一个墙大小的流程图,上面一点字也没有。现在假设所有的线相互交叉一千次,这样追踪数据流就完全不可能了。您刚刚设想了在LabVIEW中编程的最自然和最有效的方法。

    LabVIEW很酷。LabVIEW的每一个新版本都在不断改进。如果国家仪器不断改进,它将是伟大的一天,作为一种通用的编程语言。现在,作为大型或逻辑复杂项目的软件开发平台,这是一个非常糟糕的选择。

        4
  •  9
  •   Dave    14 年前

    我已经在LabVIEW上写了将近20年了。我开发自动化测试系统。我开发了射频、VISON、高速数字和多种不同口味的混合信号测试系统。在切换到LabVIEW之前,我是一名“C”程序员。

    确实,您可以在LabVIEW中快速构建一些程序,但与其他任何语言一样,学习构建一个干净、易于维护、可重用代码的大型应用程序需要大量的培训。20年来,我从来没有遇到过一个LabVIEW错误阻止我完成一个项目。

    回到今天,niweek每年都会有一次软件枪战。LabVIEW和LabWindows(NI的“C”版本)的程序员都会遇到同样的问题,他们会争先恐后地看哪个组先完成。每年,所有LabVIEW程序员都是在第一个LabWindows用户完成之前完成的。我已经向我的许多专注于文本编程的朋友提出了挑战,他们都承认他们没有机会,即使我让他们定义软件问题。

    所以,我觉得LabVIEW是一个很好的编程工具。如果您要与任何类型的NI硬件进行接口连接,这绝对是一条必经之路。这不是所有问题的答案,但我确信有很多人不使用它,仅仅是因为他们不把LabVIEW视为真正的编程语言。毕竟,我们只是用线把一堆积木连在一起,对吗?我觉得很有趣,有多少基于文本的程序员对它不屑一顾,因为他们为自己创建的混乱的文本代码感到自豪,只有他们才能理解。任何语言的优秀程序员都应该编写其他人容易阅读的代码。编写不可能遵循的过于复杂的代码并不能使程序员成为天才。这意味着程序员是一个参与者(一个可以处理简单问题并使其复杂化的人)。我相信接吻原则(保持简单愚蠢)。

    不管怎样,这是我的两分钱!**

        5
  •  6
  •   Sam Harwell    15 年前

    我以为LabVIEW是FPGA编程的梦想。独立的可执行块…工作。一般来说,我使用LabVIEW来完成与DAQ和FPGA硬件接口的各种任务,但这就是问题所在。在我看来,这是LabVIEW的强项,也是它被建立的原因,但在这个领域之外,它感觉“很麻烦”。就完成工作而言,它就像任何其他有学习曲线的语言一样,一旦你发现完成工作并不太糟糕。我见过一些人在那之前放弃了,他们认为学习曲线是永久的或是什么。

    拿起一个30英寸的显示器就大不一样了。

    我知道人们不喜欢的一件事是版本控制集成。

    编辑:labview/hardware is 海拉 “只是为了乐趣”的使用是昂贵的。我在他们的硬件(学生价格)上花了1万美元,从学校免费获得了在房子周围制作玩具的软件。

        6
  •  6
  •   Ton Plomp    15 年前

    我们公司在过去10年中一直在使用LabVIEW来测量、监控和报告我们的主题(列车)。
    最近,我们已经开始将labview用作具有大量数据的数据库的GUI,labview的强大功能以及最新的功能(类、xcontrols)允许使用它来创建这些类型的GUI,而在其他平台上只需少量的开发成本。虽然我们不需要外部程序员,以咨询的速度。

        7
  •  3
  •   user1456420    12 年前

    我第一次在大学物理实验室使用LabVIEW,最初我认为与其他基于文本的语言相比,LabVIEW速度慢且笨重。创建复杂的逻辑太困难了,代码变得非常草率、非常快(到处都是电线)。

    然后,几年后,我学习了如何使用Sub-VI和捆绑包。有什么不同!在这一点上,我使用LabVIEW实现了非常高的功能。我从一个摄像头中获取原始输入,使用各种图像过滤器和处理来最终解析道路中的线路,以便车辆可以在没有驾驶员的情况下沿着这条道路行驶——这是DARPA城市挑战赛的结果。我还从文本航点数据生成地图,生成高级解析函数,以及一系列与处理输入设备数据无关的其他应用程序。真的很有趣。而且速度快。

    大学毕业后,我又开始使用基于文本的语言了。我一直在使用:php、javascript、vba、c_、vbscript、vb.net、matlab、epson rc+、codeigner、各种API,我相信还有其他一些。我经常对我必须记住的语法数量感到非常沮丧,以便以任何显著的速度编程。我觉得不得不根据我使用的语言转换思想流派是很烦人的…当所有编程语言基本上都做相同的事情时!我需要一个第二个监视器来随时提供帮助,这样我就可以找到不同语言中相同函数的语法。我很怀念拉布维尤,太可惜了,它太贵了,不然我什么都会用它。

    我认为基于图形的编程有很大的潜力。通过不受语法约束,您可以关注逻辑而不是代码。在支持和调试方面,LabVIEW本身可能还处于初级阶段,但我相信从概念上讲,它胜过竞争对手。这是一种更直观的编程方法。

        8
  •  2
  •   Kibbee    15 年前

    我们使用LabVIEW运行我们的在线测试设备,它是数据采集和控制的理想选择。通常测量15到80个压差,并控制环境室、质量流量控制器和各种串行设备LabVIEW的能力更强。

    通过使用NI仪器驱动程序向导创建可重用的vi,可以大大简化与自定义设备的接口,如果需要,还可以与自定义dll接口。在许多项目中,我们已经为定制硬件创建了这样的驱动程序,一旦创建了这些驱动程序,以后的项目中就可以重用,而不需要修改。

    使用事件驱动的结构,用户界面是响应的,我们经常使用labview应用程序与数据库进行交互。

    无论您选择什么编程环境,最重要的是设计应用程序的过程。我同意您可以在LabVIEW中创建一些非常可怕且不可读的框图,但也可以在Visual Studio中创建不可读的代码。只需稍加考虑和规划,就可以制作一个LabVIEW方框图,使其适合一个24英寸的显示器,并且有足够的空间添加评论。

    对于大多数项目,我将使用LabVIEW而不是Visual Studio。

        9
  •  2
  •   Jakub Czaplicki    15 年前

    但是人们使用LabVIEW并不是为了数据采集和虚拟化。当然,LabVIEW主要用于实验室和生产环境,因为它是(或曾经)NI的主要客户目标之一。

    然而,你可以用LabVIEW做很多不同的事情,比如为一个机器人编程,它可以执行大量的图像分析,然后推送结果。看一看2009年NI周关于YouTube的视频,你会发现这个工具有多强大。例如,有可能编写代码并将其部署到ARM MCU(请参见 Dev Monkey article 从2009年8月10日起)。

    最后检查一下这个 LabVIEW DIY group

        10
  •  1
  •   user173849    15 年前

    几十年来我一直在思考这个问题(是的,从1989年开始…)

    与所有编程语言一样,LabVIEW是一种高级工具,用于控制电子流。除非你是一个纯粹主义者,并且拒绝使用除电路板和电线以外的任何东西;如果你想建立任何后果的东西,晶体管、集成电路和编程语言可能是一件好事。

    但是像所有高级工具一样,仅仅使用一个工具并不能使你成为一个专业的工匠。早在烙铁、运算放大器和通用异步收发器的时代,在创建一个真正起作用的系统之前,它需要大量的仔细研究。现代的基于文本的语言领域被语法所过度控制,以至于程序员必须在编译和运行之前得到它。为了编写有效的代码,程序员必须提高他们的技能水平来创建比“hello world”大得多的系统。

    LabVIEW不是由语法控制的,而是由数据流控制的。回到今天,找到你的流程图模板,开发一个平衡良好的信息系统的图表,是工作的艺术和美丽的一部分。只有在你掌握了回顾过的流程图之后,你才会考虑费力地完成代码的穿孔工作。(是…打孔卡)

    LabVIEW是一个开发系统,它允许程序员使用流程图工具绘制完整的信息系统,然后按“运行”……LabVIEW“将代码打出来”并为您编译它。不需要通过文本语言A或语言B的语法进行斗争。

    有了这样一个强大的工具,新手可以快速地构建大型的、可工作的程序——这意味着它可以运行,因而具有一定程度的专业技能。但是,如果系统不能很好地执行,或者源代码图是一个烂摊子,那么这不是LabVIEW的错误。

    人们经常提到“LabVIEW只适合开发大型数据采集系统”,也许这些人应该考虑从事数据采集工作的科学家和工程师的专业性。如果他们足够了解传感器和传感器的实际布线,那么他们也可能是开发LabVIEW布线图的专家。

        11
  •  0
  •   Adriaan    15 年前

    使用LabVIEW 在家 因为它是乐高精神风暴的一部分,我儿子喜欢。我真的很喜欢这样组成系统的方法。

    然而,在我的工作(嵌入式系统)中,它通常是限制性的。但在这里,我也在尝试在抽象中向上移动: -控制和状态行为:基于模型的设计(即狂想曲) -数据算法等。

    有时图形模型需要的点击次数可能比一段代码要多。但这也包括一个优秀的程序员在设计和文档编制中需要做的工作,而不仅仅是代码类型。图形化的符号消除了许多麻烦,如果工具足够强大,可以满足手头的复杂性,那么通常会更快。因此,我预计随着这些工具的成熟和人们对它们的熟悉,它们将在未来几年获得更多的流行。

        12
  •  0
  •   Manoj    15 年前

    我用LabVIEW开发自动化已经两年了。如果给予适当的关注和适当的设计,我们肯定可以在LabVIEW中开发可维护的、外观非常好的应用程序。我认为对于所有其他语言来说,这是相同的。在LabVIEW中,我也看到过同样糟糕的代码,主要来自那些只使用它来开发快速而肮脏的工作自动化的人。如果正确的话,imho图形编程更容易编码和理解。但也就是说,我觉得基于文本的编程“感觉”更强大! LabVIEW主要面向工业自动化市场,对许多NI硬件具有固有支持,您可以很快获得第三方硬件。我认为这就是为什么你只在自动化领域看到它的原因。此外,这是相当昂贵的和你被锁定与NI,因为你甚至不能打开你的代码,如果你不购买他们的软件!

        13
  •  0
  •   Tom    15 年前

    我用LabVIEW已经10年了。它对于像Matlab或Simulink这样的科学项目非常出色,但是比它好10倍。如果你有问题,那就是你做错了什么。学习任何语言都需要时间。至于使用.NET,这些人是否在同一个星球上?当你能说拉一个fft等等,使用alread写的代码的时候,为什么你会从零开始写任何东西呢?.NET适用于简单的程序,但不适合科学处理。是的,你可以这样做,但不能没有大量的图形插件等。在G中进行排序要比基于文本的科学问题容易得多。当然,如果您正在接口和使用DLL,您可以用C语言编程。现在有一些事情我不会使用LabVIEW进行语音识别,例如,目前可能有点混乱。更重要的是,当有一个简单的替代方案时,为什么人们喜欢用过时的文本形式编程?这就好像人们想让事情变得复杂,以某种方式证明他们的工作是正当的。简化简化!

        14
  •  0
  •   Tom    15 年前

    有人说LabVIEW只在自动化领域被起诉。根本不写。它在数字信号处理、控制系统、通信、网络化、数学、图像处理等领域有着广泛的应用。它最初是一种数据获取方法,他们发明了虚拟仪器这个名称,但现在已经远远超出了这个范围。它是一种科学的编程语言,有一个第二到第二的图形界面。它远远超出了Simulink,如果你喜欢Matlab,那么它有一种内置的Matlab脚本,用于那些喜欢这种编程方式的人。它一直在进化。我发现有一件事很难为紧凑型rio编写代码——虽然很棘手,但比其他方案容易得多。它很贵,但你得到的是优质的产品。我个人在普通编程中没有发现任何错误。它是一种工程师语言,但任何人都可以用它来编程。