Fitlet GPIO SDK for Windows

From fit-PC wiki
Revision as of 15:14, 2 November 2015 by Leonid (Talk | contribs) (API)

Jump to: navigation, search

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.

API

  • 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)

Sample Application

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; }