IO Device:852DioNTDriver version

From LEXWiKi

(Difference between revisions)
Jump to: navigation, search
Line 6: Line 6:
All of the user can read/write port when using the NT driver version.
All of the user can read/write port when using the NT driver version.
-
== Introduction ==
+
Before using AP , please install the driver first.
-
=== Define Port Address ===
+
-
#define WDT_ENABLE 0x600
+
-
#define WDT_DISABLE 0x604
+
-
#define DO 0x60C
+
-
#define DI 0x608
+
-
 
+
-
=== Set DO ===
+
-
DWORD dwOutput;
+
-
DWORD DoCheckLowBuffer[2] = { DO , 1 };
+
-
DeviceIoControl( hDevice , WRITE_PORT , DoCheckLowBuffer ,
+
-
sizeof(DoCheckLowBuffer) , NULL , 0 , &dwOutput , NULL); //write data 1 to DO port
+
-
 
+
-
=== Read DI/DO ===
+
-
DWORD DiCheckLowOutBuffer;
+
-
DWORD DiCheckLowInBuffer[1] = { DI };
+
-
DeviceIoControl( hDevice , READ_PORT , DiCheckLowInBuffer , sizeof(DiCheckLowInBuffer) , &DiCheckLowOutBuffer ,
+
-
sizeof(DiCheckLowOutBuffer) , &dwOutput , NULL); //read DI data
+
-
printf("%X\n" , DiCheckLowOutBuffer);
+
-
 
+
-
=== Enable WDT ===
+
-
DWORD WdtEnableBuffer[2] = { WDT_ENABLE , 5 };
+
-
DeviceIoControl(hDevice, WRITE_PORT, WdtEnableBuffer ,
+
-
sizeof(WdtEnableBuffer), NULL, 0, &dwOutput, NULL); //set 5 seconds to WDT enable port, system will reboot after 5 seconds
+
-
 
+
-
=== Disable WDT ===
+
-
//set 1 sec to WDT disable port , the disable signal will break off WDT enable signle
+
-
DWORD WdtDisableBuffer[2] = { WDT_DISABLE , 1 };
+
-
DeviceIoControl(hDevice, WRITE_PORT, WdtDisableBuffer, sizeof(WdtDisableBuffer), NULL, 0, &dwOutput, NULL);
+
== The Sample code source you can download from ==
== The Sample code source you can download from ==
Line 67: Line 39:
[[Image:852_dio_ap.jpg]]
[[Image:852_dio_ap.jpg]]
 +
 +
== Code Introduction ==
 +
=== Define Port Address ===
 +
#define WDT_ENABLE 0x600
 +
#define WDT_DISABLE 0x604
 +
#define DO 0x60C
 +
#define DI 0x608
 +
 +
=== Set DO ===
 +
DWORD dwOutput;
 +
DWORD DoCheckLowBuffer[2] = { DO , 1 };
 +
DeviceIoControl( hDevice , WRITE_PORT , DoCheckLowBuffer ,
 +
sizeof(DoCheckLowBuffer) , NULL , 0 , &dwOutput , NULL); //write data 1 to DO port
 +
 +
=== Read DI/DO ===
 +
DWORD DiCheckLowOutBuffer;
 +
DWORD DiCheckLowInBuffer[1] = { DI };
 +
DeviceIoControl( hDevice , READ_PORT , DiCheckLowInBuffer , sizeof(DiCheckLowInBuffer) , &DiCheckLowOutBuffer ,
 +
sizeof(DiCheckLowOutBuffer) , &dwOutput , NULL); //read DI data
 +
printf("%X\n" , DiCheckLowOutBuffer);
 +
 +
=== Enable WDT ===
 +
DWORD WdtEnableBuffer[2] = { WDT_ENABLE , 5 };
 +
DeviceIoControl(hDevice, WRITE_PORT, WdtEnableBuffer ,
 +
sizeof(WdtEnableBuffer), NULL, 0, &dwOutput, NULL); //set 5 seconds to WDT enable port, system will reboot after 5 seconds
 +
 +
=== Disable WDT ===
 +
//set 1 sec to WDT disable port , the disable signal will break off WDT enable signle
 +
DWORD WdtDisableBuffer[2] = { WDT_DISABLE , 1 };
 +
DeviceIoControl(hDevice, WRITE_PORT, WdtDisableBuffer, sizeof(WdtDisableBuffer), NULL, 0, &dwOutput, NULL);

Revision as of 16:54, 3 August 2009


Contents

Why to use NT driver version , not WinIO version

When using WinIO , only Administrator can read/write port.

All of the user can read/write port when using the NT driver version.

Before using AP , please install the driver first.

The Sample code source you can download from

852Dio_v1.0w_NTdriver_src.rar

852Dio_v1.0w_NTdriver_Bin.rar

How to install the NT driver

1. Double click the DriverInstaller.exe file in 852Dio_v1.0w_NTdriver_Bin folder.

2. After install the driver , OS will reboot automatically.

3. After reboot , you can check if the driver install success or not by following steps.

Image:dev1.jpg

Open Device Manager,choose "show hidden devices"

Image:dev2.jpg

If there are 852Dio in Non-Plug and Play Drivers , the driver is installed success.

How to use this Demo Application

1. Press the "Start" button to test DIO function

2. Press the "Enable" button to test WDT function

3. Press the "Disable" button when WDT enable to disable WDT

Image:852_dio_ap.jpg

Code Introduction

Define Port Address

   #define WDT_ENABLE 0x600
   #define WDT_DISABLE 0x604
   #define DO 0x60C
   #define DI 0x608

Set DO

   DWORD dwOutput;  
   DWORD DoCheckLowBuffer[2] = { DO , 1 };
   DeviceIoControl( hDevice , WRITE_PORT , DoCheckLowBuffer , 
                    sizeof(DoCheckLowBuffer) , NULL , 0 , &dwOutput , NULL);  //write data 1 to DO port

Read DI/DO

   DWORD DiCheckLowOutBuffer; 
   DWORD DiCheckLowInBuffer[1] = { DI };
   DeviceIoControl( hDevice , READ_PORT , DiCheckLowInBuffer , sizeof(DiCheckLowInBuffer) , &DiCheckLowOutBuffer , 
                           sizeof(DiCheckLowOutBuffer) , &dwOutput , NULL);  //read DI data
   printf("%X\n" , DiCheckLowOutBuffer);

Enable WDT

   DWORD WdtEnableBuffer[2] = { WDT_ENABLE , 5 };   
   DeviceIoControl(hDevice, WRITE_PORT, WdtEnableBuffer , 
             sizeof(WdtEnableBuffer), NULL, 0, &dwOutput, NULL); //set 5 seconds to WDT enable port, system will reboot after 5 seconds

Disable WDT

   //set 1 sec to WDT disable port , the disable signal will break off WDT enable signle
   DWORD WdtDisableBuffer[2] = { WDT_DISABLE , 1 }; 
   DeviceIoControl(hDevice, WRITE_PORT, WdtDisableBuffer, sizeof(WdtDisableBuffer), NULL, 0, &dwOutput, NULL);
Personal tools