-
Notifications
You must be signed in to change notification settings - Fork 5
/
LabVIEWInterface.h
205 lines (184 loc) · 7.44 KB
/
LabVIEWInterface.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
/*********************************************************************************
**
**
** LVFA_Firmware - Provides Functions For Interfacing With The Arduino Uno
**
** Written By: Sam Kristoff - National Instruments
** Written On: November 2010
** Last Updated: Dec 2011 - Kevin Fort - National Instruments
**
** This File May Be Modified And Re-Distributed Freely. Original File Content
** Written By Sam Kristoff And Available At www.ni.com/arduino.
**
*********************************************************************************/
/*********************************************************************************
** Define Constants
**
** Define directives providing meaningful names for constant values.
*********************************************************************************/
#define FIRMWARE_MAJOR 02
#define FIRMWARE_MINOR 00
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define DEFAULTBAUDRATE 9600 // Defines The Default Serial Baud Rate (This must match the baud rate specifid in LabVIEW)
#else
#define DEFAULTBAUDRATE 115200
#endif
#define MODE_DEFAULT 0 // Defines Arduino Modes (Currently Not Used)
#define COMMANDLENGTH 15 // Defines The Number Of Bytes In A Single LabVIEW Command (This must match the packet size specifid in LabVIEW)
#define STEPPER_SUPPORT 1 // Defines Whether The Stepper Library Is Included - Comment This Line To Exclude Stepper Support
// Declare Variables
unsigned char currentCommand[COMMANDLENGTH]; // The Current Command For The Arduino To Process
//Globals for continuous aquisition
unsigned char acqMode;
unsigned char contAcqPin;
float contAcqSpeed;
float acquisitionPeriod;
float iterationsFlt;
int iterations;
float delayTime;
/*********************************************************************************
** syncLV
**
** Synchronizes with LabVIEW and sends info about the board and firmware (Unimplemented)
**
** Input: None
** Output: None
*********************************************************************************/
void syncLV();
/*********************************************************************************
** setMode
**
** Sets the mode of the Arduino (Reserved For Future Use)
**
** Input: Int - Mode
** Output: None
*********************************************************************************/
void setMode(int mode);
/*********************************************************************************
** checkForCommand
**
** Checks for new commands from LabVIEW and processes them if any exists.
**
** Input: None
** Output: 1 - Command received and processed
** 0 - No new command
*********************************************************************************/
int checkForCommand(void);
/*********************************************************************************
** processCommand
**
** Processes a given command
**
** Input: command of COMMANDLENGTH bytes
** Output: 1 - Command received and processed
** 0 - No new command
*********************************************************************************/
void processCommand(unsigned char command[]);
/*********************************************************************************
** writeDigitalPort
**
** Write values to DIO pins 0 - 13. Pins must first be configured as outputs.
**
** Input: Command containing digital port data
** Output: None
*********************************************************************************/
void writeDigitalPort(unsigned char command[]);
/*********************************************************************************
** analogReadPort
**
** Reads all 6 analog input ports, builds 8 byte packet, send via RS232.
**
** Input: None
** Output: None
*********************************************************************************/
void analogReadPort();
/*********************************************************************************
** sevenSegment_Config
**
** Configure digital I/O pins to use for seven segment display. Pins are stored in sevenSegmentPins array.
**
** Input: Pins to use for seven segment LED [A, B, C, D, E, F, G, DP]
** Output: None
*********************************************************************************/
void sevenSegment_Config(unsigned char command[]);
/*********************************************************************************
** sevenSegment_Write
**
** Write values to sevenSegment display. Must first use sevenSegment_Configure
**
** Input: Eight values to write to seven segment display
** Output: None
*********************************************************************************/
void sevenSegment_Write(unsigned char command[]);
/*********************************************************************************
** spi_setClockDivider
**
** Set the SPI Clock Divisor
**
** Input: SPI Clock Divider 2, 4, 8, 16, 32, 64, 128
** Output: None
*********************************************************************************/
void spi_setClockDivider(unsigned char divider);
/*********************************************************************************
** spi_sendReceive
**
** Sens / Receive SPI Data
**
** Input: Command Packet
** Output: None (This command sends one serail byte back to LV for each data byte.
*********************************************************************************/
void spi_sendReceive(unsigned char command[]);
/*********************************************************************************
** checksum_Compute
**
** Compute Packet Checksum
**
** Input: Command Packet
** Output: Char Checksum Value
*********************************************************************************/
unsigned char checksum_Compute(unsigned char command[]);
/*********************************************************************************
** checksum_Test
**
** Compute Packet Checksum And Test Against Included Checksum
**
** Input: Command Packet
** Output: 0 If Checksums Are Equal, Else 1
*********************************************************************************/
int checksum_Test(unsigned char command[]);
/*********************************************************************************
** AccelStepper_Write
**
** Parse command packet and write speed, direction, and number of steps to travel
**
** Input: Command Packet
** Output: None
*********************************************************************************/
void AccelStepper_Write(unsigned char command[]);
/*********************************************************************************
** SampleContinuosly
**
** Returns several analog input points at once.
**
** Input: void
** Output: void
*********************************************************************************/
void sampleContinously(void);
/*********************************************************************************
** finiteAcquisition
**
** Returns the number of samples specified at the rate specified.
**
** Input: pin to sampe on, speed to sample at, number of samples
** Output: void
*********************************************************************************/
void finiteAcquisition(int analogPin, float acquisitionSpeed, int numberOfSamples );
/*********************************************************************************
** lcd_print
**
** Prints Data to the LCD With The Given Base
**
** Input: Command Packet
** Output: None
*********************************************************************************/
void lcd_print(unsigned char command[]);