Changes

Jump to: navigation, search

Fitlet GPIO SDK for Windows

3,839 bytes added, 14:54, 2 November 2015
== Installation ==
Installation
 
Download the GPIO driver to the fitlet. Run the fitlet_GPIO_Driver_1.0.exe in Administrator mode and follow the on-screen instructions.
The driver will install the GPIO.dll file to the C:\Windows\System\ folder. The GPIO.dll exposes the following functions:
 
===============================================
Name: GPIO_Config
 
Definition: BOOL GPIO_Config(UINT8 gpioNum,
UINT8 gpioDir,
UINT8 gpioPullUp,
UINT8 gpioPullDown)
 
Description: Confgure the GPIO pin
 
Arguments:
gpioNum - GPIO number (1-9)
gpioDir - GPIO direction (0 – input, 1 – output)
gpioPullUp - GPIO pull-up (0 – disabled, 1 – enabled)
gpioPullDown - GPIO pull-down (0 – disabled, 1 – enabled)
 
Return: GPIO pin configuration status
FALSE - configuraqtion failed
TRUE - configuration succeeded
===============================================
Name: GPIO_Set
 
Definition: BOOL GPIO_Set(UINT8 gpioNum,
UINT8 gpioValue)
 
Description: Set the value of GPIO output pin
 
Arguments:
gpioNum - GPIO number (1-9)
gpioValue - GPIO output pin value (0 – low, 1 – high)
 
Return: GPIO output pin configuration status
FALSE - configuration failed
TRUE - configuration succeeded
===============================================
Name: GPIO_Get
 
Definition: UINT8 GPIO_Get(UINT8 gpioNum)
 
Description: Get the value of the GPIO input pin
 
Arguments:
gpioNum - GPIO number (1-9)
 
Return: GPIO input pin value (0 – low, 1 - high)
===============================================
 
 
The following example demonstrates the simple control of a GPIO pins.
 
#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
typedef BOOL (WINAPI* LPGPIO_CONFIG)(UINT8, UINT8, UINT8, UINT8);
typedef BOOL (WINAPI* LPGPIO_SET)(UINT8, UINT8);
typedef UINT8 (WINAPI* LPGPIO_GET)(UINT8);
HINSTANCE hDLL;
LPGPIO_CONFIG GPIO_Config;
LPGPIO_SET GPIO_Set;
LPGPIO_GET GPIO_Get;
 
// Load the GPIO DLL
hDLL = LoadLibrary(TEXT("C:\\Windows\\System\\GPIO"));
// Obtain the exported functions of the GPIO DLL
if (hDLL != NULL)
{
GPIO_Config = (LPGPIO_CONFIG)GetProcAddress(hDLL, "GPIO_Config");
if (!GPIO_Config)
{
printf("GetProcAddress GPIO_Config error: %d\n", GetLastError());
FreeLibrary(hDLL);
return -1;
}
 
GPIO_Set = (LPGPIO_SET)GetProcAddress(hDLL, "GPIO_Set");
if (!GPIO_Set)
{
printf("GetProcAddress GPIO_Set error: %d\n", GetLastError());
FreeLibrary(hDLL);
return -1;
}
 
GPIO_Get = (LPGPIO_GET)GetProcAddress(hDLL, "GPIO_Get");
if (!GPIO_Get)
{
printf("GetProcAddress GPIO_Get error: %d\n", GetLastError());
FreeLibrary(hDLL);
return -1;
}
 
}
else
printf("LoadLibrary error: %d\n", GetLastError());
 
// Configure GPIO1 as output with pull-up enabled and pull-down disabled
if (!(GPIO_Config(1, 1, 1, 0))) {
FreeLibrary(hDLL);
printf("GPIO_Config Error\n");
return 0;
}
 
// Configure GPIO2 as input with pull-up enabled and pull-down disabled
if (!(GPIO_Config(2, 0, 1, 0))) {
FreeLibrary(hDLL);
printf("GPIO_Config Error\n");
return 0;
}
 
// Set GPIO1 output pin to HIGH
printf("Set GPIO1 - 1\n");
if (!(GPIO_Set(1, 1))) {
FreeLibrary(hDLL);
printf("GPIO_Set Error\n");
return 0;
}
Sleep(100);
// read the GPIO2
printf("Get GPIO2 - %d\n\n", GPIO_Get(2));
 
// Set GPIO1 output pin to LOW
printf("Set GPIO1 - 0\n");
if (!(GPIO_Set(1, 0))) {
FreeLibrary(hDLL);
printf("GPIO_Set Error\n");
return 0;
}
Sleep(100);
// Read the GPIO2
printf("Get GPIO2 - %d\n\n", GPIO_Get(2));
 
FreeLibrary(hDLL);
 
return 0;
}
 
 
 
1,291
edits