GPIO Develop Utility under Windows

From LEXWiKi

(Difference between revisions)
Jump to: navigation, search
Current revision (15:26, 15 November 2024) (edit) (undo)
(How to use DLL)
 
(5 intermediate revisions not shown.)
Line 11: Line 11:
<Google Drive>
<Google Drive>
-
DLL file(64 bit): [https://drive.google.com/file/d/1ZHorh_TwoZJUBRw-MnMvRDHO5M8dRb3D/view?usp=sharing PW601Dll_v1.0.10.7_x64]
+
DLL file(64 bit): [https://drive.google.com/file/d/1_4gumHIt2wbTG65l79O03aUnl48RjFz3/view?usp=sharing GPIOUtilityDll_v1.7.18.25_x64]
-
Sample file(64 bit): [https://drive.google.com/file/d/1ZHorh_TwoZJUBRw-MnMvRDHO5M8dRb3D/view?usp=sharing PW601Dll_v1.0.10.7_x64]
+
Sample binary file(64 bit): [https://drive.google.com/file/d/1C8pfA5wB1D_T-v6lb7jLrxfPCvxVc4fn/view?usp=sharing GPIO_DLL_SAMPLE_Bin_v1.0.3.5_x64]
-
Sample code: [https://drive.google.com/drive/folders/1W8EZeAXx9KaBIJb92zUhJUAHIVIU3nx0?usp=sharing UsePW601Dll(v1.0.10.7)_SampleCode]
+
Sample source code: [https://drive.google.com/file/d/1nsCzM8L1nCRP6WzidRQU9Z0OcFt28S4k/view?usp=sharing GPIO_DLL_SAMPLE_Src_v1.0.3.5]
<!--
<!--
Line 26: Line 26:
Sample code: [ftp://ftp.lex.com.tw/Engineer/SoftSupport/AP_Module/PW601_DLL/Windows/Ver1.0.2.5/PW601Dll_SampleCode.zip PW601Dll_SampleCode]
Sample code: [ftp://ftp.lex.com.tw/Engineer/SoftSupport/AP_Module/PW601_DLL/Windows/Ver1.0.2.5/PW601Dll_SampleCode.zip PW601Dll_SampleCode]
-->
-->
- 
== DLL files descreption ==
== DLL files descreption ==
Line 68: Line 67:
// Arguments :
// Arguments :
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
-
// Return :
+
// Return : Enum of GPIO_ERR_CODE_E. Defined in "ModuleBase.h".
-
// TRUE : Success
+
// GPIO_ERR_OK = 1,
-
// FALSE : Failed
+
// GPIO_ERR_UNKNOW_FAILED = 0,
 +
// GPIO_ERR_SMBUS_FAILED = -1,
 +
// GPIO_ERR_DEVICE_NOT_EXIST = -2,
 +
// GPIO_ERR_WRITE_DATA_FAILED = -3,
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
GPIOUTILITYDLL_API int GPIODLL_InstallControlModule(int nModule);
GPIOUTILITYDLL_API int GPIODLL_InstallControlModule(int nModule);
Line 99: Line 101:
// Arguments :
// Arguments :
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
-
// nSwPort [in] : SW Port
+
// nSwPort [in] : Enum of GPIO_CIO_PORT_E
// bDIOBits [in] : DI/DO bits. (Output bit is 1; Input bit is 0)
// bDIOBits [in] : DI/DO bits. (Output bit is 1; Input bit is 0)
// nFilterDO [in] : Filter DO signal from GPIO module (default: TRUE)
// nFilterDO [in] : Filter DO signal from GPIO module (default: TRUE)
Line 122: Line 124:
// Arguments :
// Arguments :
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
-
// nSwPort [in] : SW Port
+
// nSwPort [in] : Enum of GPIO_CIO_PORT_E
// bDOVal [in] : Digital out value
// bDOVal [in] : Digital out value
// Return :
// Return :
Line 144: Line 146:
// Arguments :
// Arguments :
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
-
// nSwPort [in] : SW Port
+
// nSwPort [in] : Enum of GPIO_CIO_PORT_E
// bDIVal [out] : Digital in value
// bDIVal [out] : Digital in value
// Return :
// Return :
Line 153: Line 155:
 +
'''*Step6.''' If you want enable WDT coutdown function and trigger shutdone after few seconds later.<br />
-
'''*Final Step.''' Release PW601 resource before leaving application.
+
You could update the trigger time by calling GPIODLL_StartWatchDogTimer() repeatedly.\n");
-
[[Image:Release_DLL.png]] <br/>
+
//--------------------------------------------------------------------------
 +
// Name : GPIODLL_StartWatchDogTimer
 +
// Description : Start running watch dog timer in device module.
 +
// Arguments :
 +
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 +
// nUnit [in] : Time unit (0: 1sec, 1: 60 sec)
 +
// nCount [in] : Watch dog timer range.(0~255)
 +
// Return :
 +
// TRUE : Success
 +
// FALSE : Failed
 +
//--------------------------------------------------------------------------
 +
GPIOUTILITYDLL_API int GPIODLL_StartWatchDogTimer(int nModule, int nUnit, int nCount);
 +
 
 +
 
 +
'''*Step7.''' If you want to know WDT countdown remaining seconds.<br />
 +
 
 +
//--------------------------------------------------------------------------
 +
// Name : GPIODLL_GetWatchDogCountdownSeconds
 +
// Description : Get watch dog timer countdown time in device module.
 +
// Arguments :
 +
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 +
// nTimerSec [out] : Countdown time seconds.(0~255)
 +
// Return :
 +
// TRUE : Success
 +
// FALSE : Failed
 +
//--------------------------------------------------------------------------
 +
GPIOUTILITYDLL_API int GPIODLL_GetWatchDogCountdownSeconds(int nModule, int& nTimerSec);
 +
 
 +
 
 +
'''*Step8.''' If you want disable WDT coutdown function.<br />
 +
 
 +
//--------------------------------------------------------------------------
 +
// Name : GPIODLL_StopWatchDogTimer
 +
// Description : Stop watch dog timer in device module.
 +
// Arguments :
 +
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 +
// Return :
 +
// TRUE : Success
 +
// FALSE : Failed
 +
//--------------------------------------------------------------------------
 +
GPIOUTILITYDLL_API int GPIODLL_StopWatchDogTimer(int nModule);
 +
 
 +
 
 +
'''*Final Step.''' Release GPIO resource before leaving your program.
 +
 
 +
//------------------------------------------------------------------------------
 +
// Name : GPIODLL_FreeControlModule
 +
// Description : Free DLL supported GPIO device module.
 +
// Arguments :
 +
// nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 +
// Return :
 +
// TRUE : Success
 +
// FALSE : Failed
 +
//------------------------------------------------------------------------------
 +
GPIOUTILITYDLL_API int GPIODLL_FreeControlModule(int nModule);

Current revision


Contents

Introduction

GPIO Develop Utility can help you to develop tool to control GPIO device.


The binary file you can download from

<Google Drive>

DLL file(64 bit): GPIOUtilityDll_v1.7.18.25_x64

Sample binary file(64 bit): GPIO_DLL_SAMPLE_Bin_v1.0.3.5_x64

Sample source code: GPIO_DLL_SAMPLE_Src_v1.0.3.5


DLL files descreption

GPIOUtilityDll.dll: Contains code and data about GPIODLL function.

GPIOUtilityDll.h: Header about GPIODLL function.

GPIOUtilityDll.lib: Import library that link to GPIOUtilityDll.dll.

LexIo64.dll、LexIo64.sys: Based on WinIO that provids DLL to read hardware data. For x64.


Support GPIO module

F75111(Onboard)、F75111 EXT(CIO series)、F75113 SMBUS、F75113 LPC、F81966 LPC.


How to use DLL

*Step1. Unzip DLL zip file and put files to your programe.


*Step2. Initialize GPIO module resource.

MODULE_GPIO_LIST_E defined in GPIOUtilityDll.h

 enum MODULE_GPIO_LIST_E
 {
     /* GPIO */
     MODULE_GPIO_F75111 = 0,
     MODULE_GPIO_F75111_EXT,
     MODULE_GPIO_F75113,
     MODULE_GPIO_F75113_LPC,
     MODULE_GPIO_F81966_LPC,
 };
 //------------------------------------------------------------------------------
 // Name        : GPIODLL_InstallControlModule
 // Description : Initial DLL supported GPIO device module.
 // Arguments   : 
 //   nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 // Return      : Enum of GPIO_ERR_CODE_E. Defined in "ModuleBase.h".
 //      GPIO_ERR_OK                = 1,
 //      GPIO_ERR_UNKNOW_FAILED     = 0,
 //      GPIO_ERR_SMBUS_FAILED      = -1,
 //      GPIO_ERR_DEVICE_NOT_EXIST  = -2,
 //      GPIO_ERR_WRITE_DATA_FAILED = -3,
 //------------------------------------------------------------------------------ 
 GPIOUTILITYDLL_API int GPIODLL_InstallControlModule(int nModule);


*Step3. If you want control GPIO pin, setup DI pin and DO pin in CIO port.

GPIO_CIO_PORT_E defined in GPIOUtilityDll.h
Setup DI pin and DO pin. Use 1 byte to indicate the status of the Pins.
Digital output pin bit is 1; Digital input pin bit is 0.
(DI-0 is bit0, DI-1 is bit1, DI-2 is bit2 and DI-3 is bit3).
(DO-0 is bit4, DO-1 is bit5, DO-3 is bit6 and DO-3 is bit7).

Ex: Setup CIO is 4I/4O. bDIOBits = 0xF0 (1111 0000) => (OOOO IIII).
Ex: Setup CIO is 2I/2O. bDIOBits = 0x30 (0011 0000) => (OOII IIII).

 enum GPIO_CIO_PORT_E
 {
     GPIO_CIO_1 = 1,
     GPIO_CIO_2,
     GPIO_CIO_3,
     GPIO_CIO_4,
 };
 //--------------------------------------------------------------------------
 // Name        : GPIODLL_AddControlModuleToWatchList
 // Description : Add GPIO device module to watch dog list.
 // Arguments   : 
 //   nModule   [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 //   nSwPort   [in] : Enum of GPIO_CIO_PORT_E
 //   bDIOBits  [in] : DI/DO bits. (Output bit is 1; Input bit is 0)
 //   nFilterDO [in] : Filter DO signal from GPIO module (default: TRUE)
 // Return      : 
 //   TRUE  : Success
 //   FALSE : Failed
 //--------------------------------------------------------------------------
 GPIOUTILITYDLL_API int GPIODLL_AddControlModuleToWatchList(int nModule, int nSwPort, BYTE bDIOBits, int nFilterDO = TRUE);


*Step4. If you want Send DO signal once. Use 1 byte to indicate the digital output pins to be triggered.

Digital output pin bit is 1; Digital input pin bit is 0.
(DO-0 is bit4, DO-1 is bit5, DO-3 is bit6 and DO-3 is bit7).

Ex: Send CIO DO-0、DO-1、DO-2、DO-3 DO signal. bDOVal = 0xF0 (1111 0000) => (OOOO xxxx).
Ex: Send CIO DO-0、DO-3 DO signal. bDOVal = 0x90 (1001 0000) => (OxxO xxxx).

 //--------------------------------------------------------------------------
 // Name        : GPIODLL_SendDOValueToControlModule
 // Description : Send digital out value to GPIO device module
 // Arguments   : 
 //   nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 //   nSwPort [in] : Enum of GPIO_CIO_PORT_E
 //   bDOVal  [in] : Digital out value
 // Return      : 
 //   TRUE  : Success
 //   FALSE : Failed
 //--------------------------------------------------------------------------
 GPIOUTILITYDLL_API int GPIODLL_SendDOValueToControlModule(int nModule, int nSwPort, BYTE bDOVal);


*Step5. If you want receive DI signal once. Use 1 byte to indicate the digital input pins status.

If digital input pin trigger, bit is 1; Else bit is 0. Digital output pin bit is always 1.
(DI-0 is bit0, DI-1 is bit1, DI-2 is bit2 and DI-3 is bit3).

Ex: Receive bDIVal = 0xFF. If DI/DO is 0xF0 (OOOO IIII), then DI-0、DI-1、DI-2、DI-3 are triggered.
Ex: Receive bDIVal = 0xF9. If DI/DO is 0xF0 (OOOO IIII), then DI-0、DI-3 are triggered.

 //--------------------------------------------------------------------------
 // Name        : GPIODLL_GetDIValueFromControlModule
 // Description : Get digital in value from GPIO device module
 // Arguments   : 
 //   nModule  [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 //   nSwPort  [in] : Enum of GPIO_CIO_PORT_E
 //   bDIVal  [out] : Digital in value
 // Return      : 
 //   TRUE  : Success
 //   FALSE : Failed
 //--------------------------------------------------------------------------
 GPIOUTILITYDLL_API int GPIODLL_GetDIValueFromControlModule(int nModule, int nSwPort, BYTE &bDIVal);


*Step6. If you want enable WDT coutdown function and trigger shutdone after few seconds later.

You could update the trigger time by calling GPIODLL_StartWatchDogTimer() repeatedly.\n");

 //--------------------------------------------------------------------------
 // Name        : GPIODLL_StartWatchDogTimer
 // Description : Start running watch dog timer in device module.
 // Arguments   : 
 //   nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 //   nUnit   [in] : Time unit (0: 1sec, 1: 60 sec)
 //   nCount  [in] : Watch dog timer range.(0~255)
 // Return      : 
 //   TRUE  : Success
 //   FALSE : Failed
 //--------------------------------------------------------------------------
 GPIOUTILITYDLL_API int GPIODLL_StartWatchDogTimer(int nModule, int nUnit, int nCount);


*Step7. If you want to know WDT countdown remaining seconds.

 //--------------------------------------------------------------------------
 // Name        : GPIODLL_GetWatchDogCountdownSeconds
 // Description : Get watch dog timer countdown time in device module.
 // Arguments   : 
 //   nModule    [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 //   nTimerSec [out] : Countdown time seconds.(0~255)
 // Return      : 
 //   TRUE  : Success
 //   FALSE : Failed
 //--------------------------------------------------------------------------
 GPIOUTILITYDLL_API int GPIODLL_GetWatchDogCountdownSeconds(int nModule, int& nTimerSec);


*Step8. If you want disable WDT coutdown function.

 //--------------------------------------------------------------------------
 // Name        : GPIODLL_StopWatchDogTimer
 // Description : Stop watch dog timer in device module.
 // Arguments   : 
 //   nModule  [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 // Return      : 
 //   TRUE  : Success
 //   FALSE : Failed
 //--------------------------------------------------------------------------
 GPIOUTILITYDLL_API int GPIODLL_StopWatchDogTimer(int nModule);


*Final Step. Release GPIO resource before leaving your program.

 //------------------------------------------------------------------------------
 // Name        : GPIODLL_FreeControlModule
 // Description : Free DLL supported GPIO device module.
 // Arguments   : 
 //   nModule [in] : GPIO device module. Enum of MODULE_GPIO_LIST_E.
 // Return      : 
 //   TRUE  : Success
 //   FALSE : Failed
 //------------------------------------------------------------------------------ 
 GPIOUTILITYDLL_API int GPIODLL_FreeControlModule(int nModule);
Personal tools