LabWindows/CVI - מחברת קורס - גרסה 1 - קובץ PDF

New project
File-->New-->Workspace
(Ctrl+Shift+N)
File-->New-->User Interface
Callback function
PanelFunc
Code-->Generate-->All Code (Alt,d,g,a)
Yes
Ok
Program Termination
V
PanelFunc
Ok
Ok
PanelTitle
C
projectname.c
projectname.cws
projectname.h
projectname.prj
projectname.uir
CVI Page 1
C
Headers
h
#include
<>
#include <cvirte.h>
ansi_c.h
cvirte.h
<windows.h>
utility.h
rs232.h
CVI Page 2
C
CVI
Variable type
bytes
127
-128
1
char
255
0
1
unsigned char
4
int
4
unsigned int
8
double
2147483647 -2147483648
4294967295
0
1.7*10^308 1.7*10^-308
static char a;
static int b;
CVI Page 3
Operators
sum = a+b;
total = a-b;
mult = a*b;
average = sum/total;
module = num % 10;
counter++;
counter--;
>=
<=
!=
||
&&
CVI Page 4
define
#define
Compiler
copy-paste
#include
#define
#define MAX_SIZE 100
MAX_SIZE
CVI Page 5
Condition
if
if(state)
{
}
if-else
if(state)
{
else
}
else
{
if
else
}
if - else if
if(state1)
{
}
else if(state2)
{
else
}
else if(state3)
{
{
else
{
}
switch(charcter)
{
case ('a'):
{
switch
char
break;
break;
}
case ('b'):
{
break;
}
default:
{
}
}
switch(number)
{
switch
int
CVI Page 6
{
int
case (x):
{
break;
break;
}
double
case (y):
{
break;
}
default:
{
}
}
CVI Page 7
switch
Loops
while(counter < n)
{
while()
counter++;
}
do{
do-while
{
while(state);
for(i=0 ; i<n ; i++)
{
for()
}
CVI Page 8
Panel input/Output
SetCtrlVal(panelHandle, PANEL_NUMERIC,
x);
x
x
int
SetCtrlVal(panelHandle, PANEL_TEXTBOX,
text);
char
text
text[100]
String
GetCtrlVal(panelHandle, PANEL_NUMERIC,
&x);
x
NUMERIC
int
&
GetCtrlVal
x
&
x
x
x
x
DeleteListItem (panelHandle,
PANEL_RING_LEDCOLOR, 3, 1);
&
Ring
CVI Page 9
Attribute
SetCtrlAttribute(panelHandle, PANEL_NUMERIC, ATTR_TEXT_POINT_SIZE,
size);
SetCtrlAttribute
Ctrl+P
Ctrl+RMB
Enter
Control ID
Control Attribute
Insert function call
Replace
insert
Insert
Replace
SetCtrlAttribute(panelHandle, PANEL_LED, ATTR_FRAME_COLOR,
MakeColor(red,green,blue));
MakeColor()
MakeColor(255,255,255 )
MakeColor(255,0,0)
MakeColor(0,255,0)
SetCtrlAttribute(panelHandle, PANEL_NUMERIC_FREQ, ATTR_DIMMED,1);
SetCtrlAttribute(panelHandle, PANEL_NUMERIC_FREQ, ATTR_VISIBLE,0);
DisplayImageFile();
image
icon
DisplayImageFile (panelHandle, PANEL_LED, "images\\LED\\48\\LEDRED
48.png");
CVI Page 10
String
char
\n
char string[100];
sprintf(string, "Type text here");
EOF
\n
sprintf(text, "Hello %s your name is %d letters
long",name ,nameLength);
sprintf()
int
nameLength
sprintf(tx,"7");
sprintf(tx,"%d,%d,%d,%d,%d,",
mode,numOfSteps,spinDirection,typeOfSteps,stepperMot
orRpm );
strlen(string);
int
strcmp("Guy",myName)
CVI Page 11
text
%d
Event
CVI
EVENT_COMMIT
EVENT_MOUSE_POINTER_MOVE
EVENT_LEFT_CLICK
EVENT_LEFT_DOUBLE_CLICK
EVENT_TIMER_TICK
EVENt_KEYPRESS
EVENT_GOT_FOCUS
EVENT_LOST_FOCUS
CVI Page 12
Timer
Callback function
Interval
Enabled
ON/OFF toggle
int CVICALLBACK timerBoss (int panel, int control, int
event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal(panelHandle, PANEL_TOGGLEBUTTON,
&state);
SetCtrlAttribute(panelHandle, PANEL_TIMER,
CVI Page 13
SetCtrlAttribute(panelHandle, PANEL_TIMER,
ATTR_ENABLED, state);
break;
}
return 0;
}
SetCtrlAttribute(panelHandle, PANEL_TIMER, ATTR_INTERVAL,
dt);
CVI Page 14
dt
Time&Date
SetCtrlVal(panelHandle, PANEL_TIME, TimeStr());
TIME
SetCtrlVal(panelHandle, PANEL_DATE, DateStr());
DATE
CVI Page 15
Multi Panels
Panel
Contant name
PANEL2
Callback function
PanelFunc2
static int panelHandle2;
panelHandle
main
if ((panelHandle = LoadPanel (0,
"Test2.uir", PANEL)) < 0)
return -1;
if ((panelHandle2 = LoadPanel (0,
"Test2.uir", PANEL2)) < 0)
return -1;
DiscardPanel (panelHandle);
DiscardPanel (panelHandle2);
Panel Callback
CVI Page 16
Generate
Code
CVICALLBACK
int CVICALLBACK PanelFunc2 (int panel, int event, void
*callbackData,
int eventData1, int eventData2)
{
switch (event)
{
case EVENT_GOT_FOCUS:
break;
case EVENT_LOST_FOCUS:
break;
case EVENT_CLOSE:
break;
}
return 0;
}
int CVICALLBACK PanelFunc2 (int panel, int event, void
*callbackData,
int eventData1, int eventData2)
{
switch (event)
{
case EVENT_GOT_FOCUS:
EVENT_CLOSE
break;
case EVENT_LOST_FOCUS:
break;
case EVENT_CLOSE:
HidePanel(panelHandle2);
break;
}
return 0;
}
int CVICALLBACK showPanel2 (int panel, int control, int
event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
DisplayPanel(panelHandle2);
break;
}
return 0;
}
CVI Page 17
uir
LoadPanel();
uir
panelHandle2 = LoadPanel (0, "Demo9.uir", PANEL_2);
RunUserInterface();
CVI
DiscardPanel();
HidePanel(panelHandle2);
CVI Page 18
CVI
Graph
PlotXY (panelHandle2, PANEL_GRAPH, time_arr, temp1_arr, counter, VAL_DOUBLE,
VAL_DOUBLE, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);
PlotPoint (panelHandle, PANEL_GRAPH, x, y, VAL_SOLID_CIRCLE, VAL_YELLOW);
PlotLine (panelHandle, PANEL_GRAPH, j, 0, j, studentGrade, VAL_RED);
SetPlotAttribute (panelHandle, PANEL_GRAPH, plothandle, ATTR_PLOT_THICKNESS, 5);
DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW);
InsertAxisItem (panelHandle, PANEL_GRAPH, VAL_BOTTOM_XAXIS, -1, axisMarkString, j);
Bottom X-axis
Axis label Strings
Enable Label Strings
Edit label strings
SetCtrlAttribute (panelHandle2, PANEL2_GRAPH2, ATTR_YNAME, "Wheel Speed");
CVI Page 19
Files
FILE *fp;
#include <ansi_c.h>
SavePanelState (panelHandle, "data.txt", 0);
RecallPanelState();
FileSelectPopup();
Argument
Type
1
char
Defualt director
Description
2
char
Default file spec
3
char
4
char
Title
5
int
Button label
6
int
Restrict
directory
7
int
Restrict extansion
8
int
Allow cancel
9
int
Allow make directory
10
char
11
int
int
Path name
Selction status
FILE *fp;
case EVENT_COMMIT:
fp=fopen("myData.txt","w");
fprintf(fp,"Hello Test 1");
fclose(fp);
write
w
a
OpenDocumentInDefaultViewer ("myData.txt", VAL_NO_ZOOM);
break;
fp=fopen("myData.csv","w");
fprintf(fp,"Input,Output\n");
CSV
\n
fclose(fp);
OpenDocumentInDefaultViewer ("myData.csv", VAL_NO_ZOOM);
fgets (line, 99, fp);
char
remove("filename");
remove("folder\\filename");
CopyFile ("Data.csv", "UserSavedData\\SavedData.csv");
CVI Page 20
Line
99
Fp
Functions
Prototype
#include
void guyFunc(int a);
void autoSave(void);
int doCableTensionVerfication(void);
CVI
Callback
int CVICALLBACK onLedToggle (int panel, int control, int event, void
*callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
doLedToggle();
break;
}
return 0;
}
doLedToggle();
CALLBACK
CVICALLBACK
CVICALLBACK
doLedToggle()
CVI Page 21
CVI
Pop up
MessagePopup(title,message);
title
message
MessagePopup("Eror","File not selected");
CVI Page 22
Menu bar
Menu-Bar
Menu-Bar
UIR
Edit--> Menu bar--> Create
Code--->Generate-->Menu Callback
MENUBAR
CVI Page 23
Menu Bar
Tables
List&Table
Table
Control Apperance
Scroll bars
None
Auto Edit table
Edit Column
Use label text
Label
Type
Cell
Numberic, String, Picture,Ring
Edit Cell
Center Center
Text style
Copy row
Copy column
Callback function
Auto Edit table
CVI Page 24
Random
seed
srand(time(0))
srand
1/1/1900
x=rand()%2;
int
x=rand()%6;
int
x=1+rand()%6;
int
-1,0,1
x=-1+rand()%3;
y=( (double)rand()/RAND_MAX );
double
y=( (double)rand()/RAND_MAX )*2;
double
CVI Page 25
Canvas
(0,0)
CanvasDrawPoint (panelHandle, PANEL_CANVAS, MakePoint(10,7));
(10,7)
CanvasStartBatchDraw (panelHandle, PANEL_CANVAS);
CanvasEndBatchDraw(panelHandle, PANEL_CANVAS);
SetCtrlAttribute (panelHandle, PANEL_CANVAS, ATTR_PEN_WIDTH, 5);
CanvasClear(panelHandle, PANEL_CANVAS, VAL_ENTIRE_OBJECT);
GetCtrlAttribute(panelHandle, PANEL_CANVAS, ATTR_HEIGHT, &h);
h
GetCtrlAttribute(panelHandle, PANEL_CANVAS, ATTR_WIDTH, &w);
w
GetBitmapFromFile ("images\\GuyarosLogoGold100x65.png",
&bitmapID1);
CanvasDrawBitmap (panelHandle, PANEL_CANVAS, bitmapID1,
VAL_ENTIRE_OBJECT, MakeRect(top,left,height,width));
MakeRect();
int
GetRelativeMouseState (panelHandle, PANEL_CANVAS, &mx, &my, 0, 0,
0);
CVI Page 26
Distribution Installer
Debug
CVI
Build--> Configoration--> Release
Build--> Target settings-->Embed project .UIRs
Build-->Distributions--> Menage Distributions
New
Ok
Type
32 bit
64bit
64bit
ok
files
Program.exe
Drive&Components
CVI Page 27
Serial communication
OpenComConfig(COM_PORT,"COM7", 9600, 0, 8, 1, 0, 0);
Port number
int
Device name
char
Baud rate
int
COM6
COM7
9600
Arduino
Pairty
int
Data bits
int
Stop bits
int
Input queue size
int
Output queue size
int
portNum=7;
sprintf(portString, "COM%d", portNum);
baudRate=115200;
OpenComConfig (portNum, portString, baudRate, 0, 8, 1, 512, -1);
ComWrt(ArduinoPortNumber, string, stringLength);
COM7
Arduino
portNum=7;
sprintf(tx,"7");
ComWrt(portNum,tx,strlen(tx));
strlen()
FlushOutQ(portNum);
buffer
CloseCom(portNum);
CVI Page 28
Icon
Build-->Target settings
Application Icon file
Tools-->Icon Editor
CVI
CVI Page 29
Help
Ctrl+Space
Ctrl+P
036393737
National Instruments
CVI Page 30
Misc
GetCtrlDisplayBitmap (panelHandle, PANEL_TITLE, 0, &image_id);
InetLaunchDefaultWebBrowser("www.guyaros.com");
SetMouseCursor (VAL_CROSS_HAIR_CURSOR);
PlotStripChartPoint (panelHandle, PANEL_STRIPCHART, value);
ReFFT (array, EmptyArryOutput, 5000);
CVI Page 31