Difference between revisions of "Fitlet GPIO SDK for Windows"

From fit-PC wiki
Jump to: navigation, search
Line 3: Line 3:
  
 
== Installation ==
 
== 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;
 +
}
 +
 +
 +
  
  

Revision as of 14:54, 2 November 2015

fitlet GPIO SDK for Windows

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.

  1. include "stdafx.h"
  2. include "windows.h"
  3. 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; }