在LabVIEW下使用ZLGCAN接口函数库
定义了参数DevType。
图2.10调用库函数3
Type框中选Numeric,并在DataType框中选Unsigned32-bitInteger。表示将编程时指定的LabVIEW数据类型为32位无符号整型。Pass框中选择Value。
同样,按以上步骤添加DevIndex、Reserved参数。
单击OK按钮退出这个对话框。调用库函数节点变为图2.11所示中的情况。图中的参数端口由上到下分别为returntype、DevType、DevIndex和Reserved。每个端口均有一个输入端和一个输出端,左边的端口为输入端,右边的端口位输出端。因为第一个端口是函数的返回值,所以没有输入端,在图中可以看到其输入端为填充的蓝色。其他端口则是函数的参数,如果参数的类型是指针的话,可以通过参数的输出端输出数据。在其他情况下,不需要使用参数的输出端。
图2.11调用库函数程序框图
2.3应用示例
应用示例Demo演示了在LabVIEW7.0下如何使用VCI库函数。其界面如图2.12所示。
图2.12demo界面
在Demo中实现了数据的收发,并将在CAN总线上收发的数据在列表示图中显示。Demo程序当中有3个主要的While循环:主循环、发送数据循环和接收数据循环。这三个循环是并行运行的。其中,主循环处理与用户交互的界面,并通过用户事件TREvent与发送数据循环和接收数据循环通信。
在主循环中使用事件驱动机制处理用户在前面板的操作。打开设备的程序框图如图2.13所示。在图中调用VCI_OpenDevice函数打开设备,如果打开成功,则调用VCI_InitCAN函数初始化设备,成功的话就处理一下前面板控件的状态。
图2.13打开设备框图
图2.14所示是接收数据的程序框图。接收数据的过程是在一个while循环中,这个循环在程序已开始时就一直运行,直到前面板上的stop按钮被按下并在其ValueChange事件中使stop2的值变为False时才停止。在循环当中,只有设备已经启动时才会进行读操作。在Demo中VCI_Reveive函数一次只读取一帧,输出的数据保存到VCI_CAN_OBJ_R结构中,如果VCI_Reveive函数执行成功的话,就把接收到的数据通过事件传递给主循环处理。
图2.14接收数据
发送数据的过程与接收数据的过程相似。当前面板上的Transmit按钮被按下时,才会把VCI_CAN_OBJ_T结构中的数据通过VCI_Transmit函数发送到CAN总线上。发送成功后,生成一个TREvent事件,并通过这个事件把VCI_CAN_OBJ_T结构的内容传递给主循环显示。
图2.15发送数据
3、VCI函数调用参考
在LabVIEW中使用CallingLibraryFunctionNode调用VCI库函数的配置如下各表所示。
3.1VCI_OpenDevice
3.2VCI_CloseDevice
3.3VCI_InitCan
3.4VCI_ReadBoardInfo
3.5VCI_ReadErrInfo
3.6VCI_ReadCanStatus
3.7VCI_GetReference
3.8VCI_SetReference
3.9VCI_GetReceiveNum
3.10VCI_ClearBuffer
3.11VCI_StartCAN
3.12VCI_ResetCAN
3.13VCI_Transmit
3.14VCI_Receive
LabVIEW 相关文章:
- 基于LabVIEW RT的自定义流程测控系统(10-30)
- 基于LabVIEW的语音分析平台的实现(10-30)
- 基于示波器卡和LabVIEW的马达编码器测试系统(11-06)
- 基于虚拟仪器的网络虚拟实验室构建(11-06)
- 运用LabView控制DS3900串口通信模块(02-02)
- 采用模块化仪器,对新兴音频和视频应用进行测试(02-19)