Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Using External Code in LabVIEW.pdf
Скачиваний:
48
Добавлен:
29.05.2015
Размер:
1.85 Mб
Скачать

Chapter 4 Programming Issues for CINs

Examples with Scalars

The following examples describe how to create CINs that work with scalar data types. Refer to Chapter 3, CINs, for more information about creating CINs.

Creating a CIN That Multiplies Two Numbers

To create a CIN that takes two single-precision floating-point numbers and returns their product, complete the following steps.

1.Place the CIN on the block diagram.

2.Add two input and output terminals to the CIN.

3.Place two single-precision numeric controls and one single-precision numeric indicator on a front panel. Wire the node as shown in the following illustration. A*B is wired to an output-only terminal pair.

4.Save the VI as mult.vi.

5.Right-click the node and select Create .c File. LabVIEW prompts you to select a name and a storage location for a .c file.

6.Name the file mult.c. LabVIEW creates the following.c file:

/*

* CIN source file */

#include "extcode.h"

CIN MgErr CINRun (float32 *A, float32 *B, float32 *A_B);

CIN MgErr CINRun (float32 *A, float32 *B, float32 *A_B) {

/* ENTER YOUR CODE HERE */

return noErr;

}

Using External Code in LabVIEW

4-4

www.ni.com

Chapter 4 Programming Issues for CINs

This .c file contains a prototype and a template for the CINRun routine of the CIN. LabVIEW calls the CINRun routine when the CIN executes. In this example, LabVIEW passes CINRun the addresses of the three 32-bit floating-point numbers. The parameters are listed left to right in the same order as you wired them (top to bottom) to the CIN. Thus, A, B, and A_B are pointers to A, B, and A*B, respectively.

As described in the Parameters in the CIN .c File section earlier in this chapter, the float32 data type is not a standard C data type. For most C compilers, the float32 data type corresponds to the float data type. However, this may not be true in all cases, because the C standard does not define the sizes for the various data types. You can use these LabVIEW data types in your code because extcode.h associates these data types with the corresponding C data type for the compiler you are using. In addition to defining LabVIEW data types, extcode.h also prototypes LabVIEW routines you can access. Refer to the Manager Overview section for descriptions of these data types and routines.

7.For this multiplication example, fill in the code for the CINRun routine. You do not have to use the variable names LabVIEW gives you in CINRun; you can change them to increase the readability of the code.

CIN MgErr CINRun (float32 *A, float32 *B, float32 *A_B);

{

*A_B = *A * *B; return noErr;

}

CINRun multiplies the values to which A and B refer and stores the results in the location to which A_B refers. It is important CIN routines return an error code, so LabVIEW knows whether the CIN encountered any fatal problems and handles the error correctly.

If you return a value other than noErr, LabVIEW stops running the VI.

8.Compile the source code and convert it into a form LabVIEW can use. The following sections summarize the steps for each of the supported compilers. Refer to the Compile on Macintosh section in Chapter 3, CINs, for more information about completing this step on your platform.

(Macintosh Programmer’s Workshop) Create a file named mult.lvm. Make sure the name variable is set to mult. Build mult.lvm.

(Metrowerks CodeWarrior) Create a new project and place mult.c in it. Build mult.lsb.

© National Instruments Corporation

4-5

Using External Code in LabVIEW

Chapter 4 Programming Issues for CINs

(Microsoft Visual C++ Compiler Command Line and Symantec C for Windows)

Create a file named mult.lvm. Make sure the name variable is set to mult. Build mult.lvm.

(Microsoft Visual C++ Compiler IDE for Windows) Create a project.

(UNIX Compilers) Create a makefile using the shell script lvmkmf in the cintools directory. For this example, enter the following command:

lvmkmf mult

This creates a file called Makefile. After running lvmkmf, enter the standard make command, which uses Makefile to create a file called mult.lsb, which you can load into the CIN in LabVIEW.

9.Right-click the node and select Load Code Resource. Select mult.lsb, the object code file you created.

You should be able to run the VI. If you save the VI, LabVIEW saves the

CIN object code along with the VI.

Comparing Two Numbers, Producing a Boolean

Scalar

To create a CIN that compares two single-precision numbers, complete the following steps. If the first number is greater than the second one, the return value is TRUE; otherwise, the return value is FALSE. This example shows only the block diagram and the code.

1.To create the CIN, follow the instructions in the Creating a CIN section in Chapter 3, CINs.

The diagram for this CIN is shown in the following illustration.

2.Save the VI as aequalb.vi.

3.Create a .c file for the CIN and name it aequalb.c. LabVIEW creates the following.c file:

/*

* CIN source file */

#include "extcode.h"

Using External Code in LabVIEW

4-6

www.ni.com

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]