我有一个由其他人编写的Labview程序。 LabVIEW的片段:
有应变计,连接到CompactDAQ模块,然后通过以太网连接到笔记本电脑。 我认为我有这个权利,因为这是一个简单的程序,它通过记录器每秒对传感器进行采样,并将其写入CSV。
(但是,为了提取数据,必须停止程序,写入CSV文件,然后再次设置运行。除此之外,还需要专用的笔记本电脑才能运行,因为我实际上需要数据直播一分钟,不是最好的解决方案。)
我想用Raspberry Pi替换笔记本电脑,并将数据直播到服务器,将应用程序移植到Python或任何最好的编码语言(我只建议python因为我至少知道一点点关于它)。
我的问题:
1)根据您的经验,哪种编码语言更适合使用?
2)我是否理解正确的事情?
3)我认为我需要做的“全部”是让Raspberry与记录器对话,然后将它从它们收到的任何内容以字符串的形式指向API,正确的检索方法数据?
(我希望这是一种更好的询问方式?)
*编辑
好的,似乎我想要实现的目标是不可能的。使NI套件工作所需的驱动程序和库是巨大的,并且驻留在主机上,我错误地认为我可以简单地读取以太网上的内容并转发它,但似乎情况并非如此。
如果有人知道不同,请说出来!
答案 0 :(得分:0)
要么自己学习LabVIEW,要么付别人来转换代码。
如果要自学,选择一本优秀的书:Travis and Kring并了解数据流是一个良好的开端。
如果你安装了LabVIEW C generator module,你可能会得到一些帮助,它可以将LabVIEW翻译成C.然而,要获得合格的翻译并理解它的含义,你必须让LabVIEW有资格设置C语言。生成器,使用它并解释结果限制。
答案 1 :(得分:0)
这当然是可能的。我使用过LabView,在我看来这很好,有三个原因。首先,它与设备通信很有用,尤其是NI自己的数据采集硬件,还有其他仪器。有许多预先编写的子VI(LabView for functions)使这更容易。你必须在Python中为自己找出这种语法。其次,LabView使用户界面非常简单。这对你来说似乎没什么大不了的。最后,LabView很有意思,并行执行的并行处理。这可能非常方便,并且可能更难以在没有线程的情况下在Python中进行模拟。这对你来说似乎并不重要。 Python,我认为处理文本要好得多。 LabView中有一个调试模式,它可以通过程序直观地查看程序,这可以帮助您了解正在发生的事情。寻找一个小灯泡图标。
查看最近添加的问题,您似乎正在尝试使用NI CompactDAQ设备。 NI为其设备提供了多种软件接口以及API(主要是以PC为中心)。由于LabView会向您隐瞒大量此类内容,因此您可能需要查看National Instruments支持页面以获取支持信息。特别是我要看看page,我认为你会找到一个专门用于Raspberry Pi的驱动程序。此外,这个page表明很快会有一个用于Raspberry Pi的LabView。
答案 2 :(得分:0)
原始问题没有提到LabVIEW代码使用NI-DAQmx函数。事实证明它确实如此,我相信初学者程序员在Windows平台上移植到Python并不是一项微不足道的任务,据我所知,在Raspberry Pi上不可能这样做。
如果没有对DAQmx或类似库的依赖,那么Raspberry Pi上的Python应该没问题 - 或者你可能想看看MicroPython,也许是在WiPy这样的板上运行。您可能需要或不必使用多线程,这取决于您的记录器传输的数据量和速度 - 可以使用循环检查每个端口的输入数据,将其添加到队列并在完成时处理它如果串口缓冲区足以容纳同时进入的任何新数据,则已收到读取。如果您的记录器仅响应来自主机的命令进行传输,则不需要多线程,只需依次查询它们。
在任何一种情况下,LabVIEW或Python,如果您需要进一步的帮助,您应该尝试开始并提出更具体的问题。
如果您熟悉LabVIEW,或者想要开发LabVIEW技能的项目,可以使用third-party add-on将LabVIEW代码部署到Pi,但这需要额外的费用,并且不支持所有LabVIEW函数 - 特别是如果重要的话,你需要检查它支持并行执行的程度。 (作为参考,LabVIEW的家庭版可以将非GUI运行时代码部署到Raspberry Pi 2/3,但这仅供个人使用许可,不适用于商业或学术应用。)
答案 3 :(得分:0)
您的更新问题表明,通过以太网连接到主机PC的NI CompactDAQ模块正在收集数据。
在这种情况下,更新现有LabVIEW软件比用其他语言重写更容易。可以用LabVIEW以外的语言调用NI-DAQmx函数(NI的数据采集库),但我不认为这对初学程序员来说是一项微不足道的任务。无论如何,我几乎可以肯定目前无法在Raspberry Pi或其他类似的低成本电路板上使用CompactDAQ。
然而,好消息是,假设实际的数据采集方面目前工作正常,那么更新LabVIEW程序以执行您想要的操作并不会太难。目前,您将数字读数数组(橙色线)传递到包含 subVI 的案例结构,我假设将数据保存到磁盘:
我将使用队列将此数据发送出采集循环,而不是此子VI。然后,我将向图中添加第二个循环,其作用是等待队列中的数据并执行您想要执行的操作 - 这可以将其写入文件,将其发送到服务器或您喜欢的任何内容。队列缓冲数据,这样如果您的“消费者”循环必须等待网络或文件访问,它就不会干扰“生产者”循环的运行。
当你想要退出程序时,你需要添加一个停止两个循环的机制,因为一个单独的“停止”按钮本身不会干净地运行多个循环。此外,您的代码目前没有进行任何错误处理 - 我肯定希望在图表上看到一些错误连线,其中包含一些代码来捕获和处理错误情况,例如通信故障或磁盘错误。
这并不困难,但是如果你是初学者,那么任何事情都会有学习曲线。 LabVIEW中包含的教程,示例和模板应涵盖您需要的所有内容,但如果您遇到问题,NI会提供面对面或在线的LabVIEW培训,或者您可以与NI联盟合作伙伴联系(通过NI网站查找一个) )安排一些咨询。
最后,如果您真的想要将笔记本电脑从系统中删除并使其成为一个更强大的独立设置,那么您可以将此代码移动到类似compactRIO系统(可以使用与cDAQ相同的模块)之类的东西上LabVIEW实时。我不建议你现在尝试自己实现这一目标,因为你从一开始就使用LabVIEW,但它将是未来的选择,并会重复使用你现有的大部分代码。