Labview_Note_4

1.字符串显示控件设置自动在最下边位置

字符串属性节点中→文本→滚动条位置
滚动框在滚动条中的位置。

如需设置该位置,可连线用于表示滚动行数的数值至该属性。LabVIEW在滚动条的最后一行显示连线至该属性的数值。如需滚动至文本的最后一行,可连线行数的最大值至该属性。

如连线负数值或大于滚动条最大值的数值至该属性,滚动条将移至文本的最后一行。
图中数字类型为U32,0-1为U32最大值。

在这里插入图片描述

2.LabVIEW类成员的访问范围的设置

类内函数的访问范围设定:
如X.vi不是当前项目中任何一个类的成员,与其他的类也不存在友元关系
公共:X.vi可以调用该访问范围的类成员。
库内:库内,仅当前类的其他成员或该类的友元可以调用,故X.vi不可以调用该访问范围的类成员。
受保护:受保护的,仅当前类及其当前类的子孙类可以访问,故X.vi不可以调用该访问范围的类成员。
私有:私有,仅当前类的成员可以调用,故X.vi不能调用该访问范围的类成员。
其中友元的设定为在当前类右键→属性→友元
在这里插入图片描述

3.循环耗时

由于Labview是自动并行运行,故在循环内放置延时时,如该循环内代码的运行时间小于延时时间,则该循环运行一次的时间为延时时间。如该循环内的代码时间大于延时时间,则该循环运行一次的时间为代码执行时间。
在这里插入图片描述
在这里插入图片描述

4.副本调用问题

当主程序调用某个副本vi时,需要保证该副本vi内的所有子vi都为副本,否则该副本vi并没有起到副本vi的作用。

5.Labview调用GPIB仪器

当NI-Max无法读取到GPIB接口时需要进行如下设置,根本原因为未使用NI的GPIB卡。

在这里插入图片描述
在这里插入图片描述
勾选NiVisaTulip.dll后再次刷新NImax。

6.集合点

集合点的底层还是使用队列的形式,以通过不超时的方式来等待多个信号的到来,达到同步执行“等待集合点”后续代码的目的。
在这里插入图片描述
创建集合点
大小为需要等待信号的个数。

在这里插入图片描述

“等待集合点”只有在不超时的情况下,异步执行了多个该函数。才可以计数成功。
在这里插入图片描述
“销毁集合点” 使用完成后,销毁集合点。
7.Labview获取本地IP或者用户名
使用TCP选板中的“字符串至IP地址转换”后再使用“IP地址到字符串转换”,当后者的“句点符号”为真时,获取到的为IP地址,当当前句柄为假时获取到的为当前设备的计算机名。
在这里插入图片描述

### LabVIEW与电子琴交互开发 #### 使用LabVIEW进行电子琴开发的关键要素 在使用LabVIEW进行电子琴开发时,主要涉及硬件接口设计、信号处理以及用户界面创建等方面的工作。对于硬件接口部分,通常会涉及到MIDI协议的应用,因为大多数现代电子键盘设备都支持此标准[^1]。 #### MIDI协议简介 MIDI(Musical Instrument Digital Interface)是一种用于连接音乐合成器和其他音频设备的标准通信协议。它允许不同品牌和类型的乐器之间交换音符信息、控制指令以及其他数据。当利用LabVIEW来构建基于计算机的控制系统并与实际物理按键互动时,理解并正确实现该协议至关重要。 #### 创建简单的LabVIEW VI以读取来自电子琴的数据 下面是一个基本的例子,展示了怎样编写一个VI程序去接收由外部连接到PC上的USB-MIDI适配器发送过来的信息: ```labview // 初始化MIDI输入端口 Init_Midi_Input(); while (true){ // 获取下一个可用的消息事件 Midi_Message msg = Get_Next_Event(); if(msg.type == NOTE_ON || msg.type == NOTE_OFF){ // 处理音符开闭消息... // 更新前面板显示当前演奏状态 Update_Display(msg.note, msg.velocity); } } ``` 这段伪代码片段仅作为概念证明;具体细节取决于所使用的特定版本LabVIEW及其附加库函数的支持情况。此外,在真实项目里还需要考虑错误检测机制等问题。 #### 实现更复杂的功能——录制回放功能 为了增加更多实用性,可以尝试加入录音特性,即捕获一段时间内的所有键位活动并将它们保存下来供以后重播之用。这可以通过记录每条接收到的消息的时间戳,并按照时间顺序重新发出这些命令来完成。 ```labview // 录制模式下收集所有的MIDI事件 Recorded_Events record[]; void Start_Record(){ Clear(record); // 清空之前的录影资料 while(recording_flag){ Midi_Message msg = Wait_For_New_Event(); Append_To_Record(&record,msg,System_Timer()); } } void Play_Back(){ foreach(event in record){ Send_Midi_Msg(event.message); Sleep_Until_Time_Passes(event.timestamp); } } ``` 以上两段代码提供了关于如何扩展基础应用程序的一些思路。当然,完整的解决方案可能还会牵涉到更多的组件和服务,比如图形化编辑工具或是与其他多媒体资源集成的能力等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值