================================
AXIOM DAS Device Utility for DOS
===========================1.1==
I.INTRODUCTION
II.USER'S GUIDE - HOW TO USE DevUtil
III.PROGRAM DEVELOPMENT HINT
IV.FUNCTION REFERENCE
I.INTRODUCTION
--------------
AXIOM DAS Device Utility(DevUtil) works as a diagnostic program for all AXIOM
data acquisition devices as well as an illustration program for users who
want to make some coding with these devices.
The main purpose of this document is to describe how AXDDU, source code of
DevUtil, calls the driver function properly inside the AXIOM Device Driver
(AXDDR). With the general description on section III 'PROGRAM DEVELOPMENT
HINT', you'll find out exactly how AXDDU works with AXDDR. For more details
on each function call, please refer to section III 'DRIVER FUNCTION
REFERENCE' contained in the AXDDR documents,'AXDDR.TXT'.
II.HOW TO USE DevUtil
-------------------
1. Introduction of DevUtil
DevUtil diagnose one device during one process time. A process time is the
time period from the START of the executed function, such as Analog Input,
when the user press "Alt+R", to the STOP when the user press any key.
The supported devices will be shown at the "Device/Install" sub-menu. Be
sure to setup the installed device's configurations in the setup dialog
box, according to it's hardware setting, such as jumper setting or switch
setting. Follow the step-by-step tutorial to learn how to working with
DevUtil.
2.Step-by-Step tutorial
a. Execute the DevUtil:
Under the DOS command prompt, within the same working directory of
'DEVUTIL.EXE', type "devutil" and press [ENTER].
Note that the sub-directories '\PIN', '\BRD', and '\HELP' should also
be found in the same working directory.
b. Install a device:
When the DevUtil executed, an "About..." dialog box will appear. Simply
press any key to close the dialog box, and choose a device that you
wish to diagnose from the "Device/Install" sub-menu.
To select a menu item on the main-menu, press [F10] and the program
will highlights the menu item on it. Use the [LEFT], [RIGHT], [UP], and
[DOWN] arrow keys to select the menu item you want to invoke and then
press [ENTER].
c. Setup the device:
After choosing and installing a device, the device's board figure will
be shown on the client window with some information shown above it. The
pin assignment will also appear on the left corner of the screen.
To setup or change the state of the device, press "Alt+S" and a
'blue-background-colored' setup screen pops up. Use the [TAB], [PageUp]
and [PageDown] on the keyboard to change and set the device's
configurations. Press [ESC] if setup is completed.
d. Diagnose the device:
Press "Alt+E" and select a function from the "Experiment" menu.
To start/run the diagnostic function, press "Alt+R".
To stop the function, press any key. In some cases, you will need to
press [SPACE] bar to test the next channel.
e. Re-setting the device:
If you want to change the device's setting without having to re-install
it again. Choose the "Device/Setting" menu item. The device's board
figure will shown with previous setting you made on it.
f. Stop and exit the utility:
To terminate the utility, choose "eXit" menu item or simply press
"Alt+X".
III.PROGRAM DEVELOPMENT HINT
----------------------------
1. General Description of AXDDU
The main purpose of AXDDU is to illustrate the calling conventions of the
device driver, AXDDR, as well as a demo program about how to call the
driver in user's application under DOS.
The source code written in C language will be found under the directory
'\AXDDU' with three necessary sub-directories, '\BRD', '\PIN', and 'HELP',
in it. The kernel about the driver function calls, i.e. how AXDDU calls
functions of AXDDR, presented in the file - 'DRV.C', while the other
miscellaneous parts of AXDDU provided as a library file - 'AXDDU_L.LIB'.
The include file, 'AXDDU.H', also provided here for use with the project.
Please make sure that all the sub-directories, '\BRD', '\PIN', and '\HELP'
, with binary files located in it, will also be available in the same
working directory of AXDDU.
For Turbo C users, please make sure your Turbo C compiler will be found at
directory '\TC' under the same root directory of AXDDU. For example,
IF your project location - 'C:\DEVUTIL\ISABUS\AXDDU' THEN
the compiler will be at - 'C:\TC', 'C:\TC\LIB', 'C:\TC\INCLUDE'
otherwise you'll have to change the Torbo C options/directories setting.
For Microsoft C users, please refer to '..\TCTOMSC.TXT' documents.
2. Program Structure of AXDDU - 'DRV.C'
There are several routines in AXDDU. Each routines has function name
begins with "DRV_...". All these routines will be called by the kernel of
AXDDU during the process time, when user START and STOP the experiments of
DevUtil. The calling procedure will be:
START of the Experiment (when user press 'Alt+R')
|
DRV_Initialize
|
DRV_AnalogInput, DRV_AnalogOutput,... DRV_Temperature. (experiment...)
|
STOP of the Experiment (when user press any key to stop)
|
DRV_Terminate
Each routines receives the parameters from kernel of AXDDU and then pass
it to the driver functions of AXDDR. No matter which experiment is going
to be diagnosed, DRV_Initialize() will be called by the kernel at the
beggin of the process time, while DRV_Terminate() will be called by the
kernel at the end of the process time.
Different devices will have their own function calls. And these function
calls all begin with the name look like 'ax...', such as axOOOOInit(), for
information about the function calls to AXDDR, refer to 'AXDDR.TXT'.
The utility separates the diagnostic functions into following sections:
DRV_AnalogInput, DRV_AnalogInput_IRQ - Analog Input
DRV_AnalogOutput - Analog Output
DRV_DigitalInput, DRV_DigitalInput_IRQ - Digital Input
DRV_DigitalOutput - Digital Output
DRV_EventCount - Event Counting
DRV_FrequencyIO - Frequency Measurement and Wave Form Generating
DRV_Temperature - Temperature Measurement.
The programming sequence of each function is described in the following
section.
3. Analog Input
There are three kinds of analog input methods:
a. Analog Input - software triggered, software polling
b. Analog Input - hardware triggered, interrupt retrieve method.
c. Analog Input - hardware triggered, DMA retrieve method.
No matter which of the above methods was invoked, we should call the
device's axOOOOInit() driver function at DRV_Initialize() to initialize
both the device and driver, and call the device's axOOOOTerm() driver
function at DRV_Terminate() to terminate the device driver.
The difference is that when performing interrupt(or DMA) function, we
should call, for example, axOOOOIRQStart() at DRV_Initialize() right after
a call to axOOOOInit(). And call axOOOOIRQStop() at DRV_Terminate() right
before a call to axOOOOTerm().
As for DRV_AnalogInput, DRV_AnalogInput_IRQ, and DRV_AnalogInput_DMA, what
we have to do is to retrieve the data and display it on the screen.
4. Analog Output
When performing AO function, call axOOOOInit() at DRV_Initialize(), and
call axOOOOTerm() at DRV_Terminate() as described above.
Within DRV_AnalogOutput() routine, call driver's analog output function to
output an analog signal to a specified channel. The kernel of AXDDU will
then waitting for the user to measure the status of that specified channel
, or choose to stop the experiment as well as scan to the next channel.
5. Digital Input
When performing DI function, call axOOOOInit() at DRV_Initialize(), and
call axOOOOTerm() at DRV_Terminate() as described above.
Within the DRV_DigitalInput() routin, call the driver's digital input
function, either axOOOODI() or axOOOODI_P(), to retrieve the channel
status and display it on the screen until the user chooses to stop it.
Some devices generate an interrupt while changing the state of the
specified channel. In this case, we can specify the interrupt service
routine and call axOOOOIRQSetting() at DRV_Initialize() to set the ISR
vector. Remember to restore the old ISR vector before calling axOOOOTerm()
at DRV_Terminate().
In DRV_DigitalInput_IRQ(), we simulate an external signal to change the
state of the specified channel that will cause a generating of interrupt.
Every time when the interrupt is generated, our ISR will increase a
notifying flag that willl then shown on the screen. For some PCI or
CompactPCI devices, the simulated signal should also be set in ISR, or the
service routine will not return.
6. Digital Output
When performing DO function, call axOOOOInit() at DRV_Initialize(), and
call axOOOOTerm() at DRV_Terminate() as described above.
Within the DRV_DigitalOutput() routine, call the driver's digital output
function (either axOOOODO or axOOOODO_P) to output a signal to a specified
channel. The kernel will then waitting for the user to measure the status
of that specified channel, or choose to stop the experiment.
7. Event Count
When performing the function, call axOOOOInit() at DRV_Initialize(), and
call axOOOOTerm() at DRV_Terminate() as described above.
Call axOOOOEventCount() at DRV_Initialize(), to setup a channel for event
counting. If the device also has the ability of generating interrupts,
call axOOOOIRQSetting() here to setup the ISR vector, and, of course, call
axOOOOIRQRestore() at DRV_Terminate() to restore the old ISR.
Within DRV_EventCount() routine, call axOOOOReadCnt() to read back the
content of the counter and display the result onto the screen.
8. Frequency Measurement
When performing the function, call axOOOOInit() at DRV_Initialize(), and
call axOOOOTerm() at DRV_Terminate() as described above.
Call axOOOOWaveGen() at DRV_Initialize() to generate a wave form for
measurement, or maybe you don't want.
Within DRV_FrequencyIO() routine, call axOOOOFrequency() to measure the
frequency.
9. Temperature Measurement
When performing the function, call axOOOOInit() at DRV_Initialize(), and
call axOOOOTerm() at DRV_Terminate() as described above.
Within DRV_Temperature() routine, simply call axOOOOTemp() to measure the
temperature and shows the data onto the screen.
IV.FUNCTION REFERENCE
---------------------
This section will describes all the main routines of AXDDU, which might also
be thought of as user's application program. The detailed information of each
routines will be discussed here:
Function:
DRV_Initialize
Description:
Initializes the device.
int DRV_Initialize(WORD DevNo,
LPDEVCFG lpDevCfg,
LPDEVATBU lpDevAtbu,
int Func);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration
lpDevAtbu: Pointer to structure of device attribute
Func: Function ID
Remarks:
This function is invoked each time the user starts the diagnostic experiment.
lpDevCfg and lpDevAtbu point to the device's configuration and attribute
structure, which will be used as the parameter to call the driver(AXDDR).
Func specifies which diagnostic function is selected by user. The value of
Func will be any of the following:
IDC_ANALOGINPUT
IDC_ANALOGINPUT_IRQ
IDC_ANALOGINPUT_DMA
IDC_ANALOGOUTPUT
IDC_DIGITALINPUT
IDC_DIGITALINPUT_IRQ
IDC_DIGITALOUTPUT
IDC_EVENTCOUNT
IDC_FREQUENCY
IDC_TEMPERATURE
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Function:
DRV_Terminate
Description:
Terminates the device.
int DRV_Terminate(WORD DevNo,
LPDEVCFG lpDevCfg,
LPDEVATBU lpDevAtbu,
int Func);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration
lpDevAtbu: Pointer to structure of device attribute
Func: Function ID
Remarks:
This function will be called when the user stops the diagnostic experiment.
lpDevCfg and lpDevAtbu point to the device's configuration and attribute
structure, which will be used as the parameter to call the driver(AXDDR).
Func specifies which diagnostic function is selected by user. The value of
Func will be any of the following:
IDC_ANALOGINPUT
IDC_ANALOGINPUT_IRQ
IDC_ANALOGINPUT_DMA
IDC_ANALOGOUTPUT
IDC_DIGITALINPUT
IDC_DIGITALINPUT_IRQ
IDC_DIGITALOUTPUT
IDC_EVENTCOUNT
IDC_FREQUENCY
IDC_TEMPERATURE
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Function:
DRV_AnalogInput
Description:
Analog Input function.
int DRV_AnalogInput(WORD DevNo,
LPDEVCFG lpDevCfg
LPDEVATBU lpDevAtbu);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration
lpDevAtbu: Pointer to structure of device's attribute
Remarks:
This function calls the device driver's analog input function, and shows the
data read until the user chooses to stop the experiment.
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Function:
DRV_AnalogInput_IRQ
Description:
Analog Input function via interrupt.
int DRV_AnalogInput_IRQ(WORD DevNo,
LPDEVCFG lpDevCfg,
LPDEVATBU lpDevAtbu);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration.
lpDevAtbu: Pointer to structure of device's attribute.
Remarks:
This function invokes the driver's analog input via interrupt function, and
shows the data read until the user chooses to stop the experiment.
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Function:
DRV_AnalogInput_DMA
Description:
Analog Input function via DMA.
int DRV_AnalogInput_DMA(WORD DevNo,
LPDEVCFG lpDevCfg,
LPDEVATBU lpDevAtbu);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration
lpDevAtbu: Pointer to structure of device's attribute
Remarks:
This function invokes the driver's analog input via DMA function, and
shows the data read until the user chooses to stop the experiment.
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Function:
DRV_AnalogOutput
Description:
Analog Output function.
int DRV_AnalogOutput(WORD DevNo,
LPDEVCFG lpDevCfg,
LPDEVATBU lpDevAtbu);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration
lpDevAtbuL: Pointer to structure of device's attribute
Remarks:
This function invokes the driver's analog output function, and shows the data
output until the user chooses to stop the experiment.
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Function:
DRV_DigitalInput
description:
Digital Input function.
int DRV_DigitalInput(WORD DevNo,
LPDEVCFG lpDevCfg,
LPDEVATBU lpDevAtbu);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration
lpDevAtbu: Pointer to structure of device's attribute
Remarks:
This function invokes the driver's digital input function, and shows the data
read until the user chooses to stop the experiment.
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Function:
DRV_DigitalInput_IRQ
Description:
Digital Input function with interrupt.
int DRV_DigitalInput_IRQ(WORD DevNo,
LPDEVCFG lpDevCfg,
LPDEVATBU lpDevAtbu);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration
lpDevAtbu: Pointer to structure of device's attribute
Remarks:
This function simulate an external signal to a specified channel that can
generate interrupts, and shows the notifying flag that the interrupt service
routine modified on the screen until the user chooses to stop the experiment.
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Function:
DRV_DigitalOutput
Description:
Digital Output function.
int DRV_DigitalOutput(WORD DevNo,
LPDEVCFG lpDevCfg,
LPDEVATBU lpDevAtbu);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration
lpDevAtbu: Pointer to structure of device's attribute
Remarks:
This function invokes the driver's digital output function, and shows the
data output until the user chooses to stop the experiment.
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Function:
DRV_EventCount
Description:
Event Countung function.
int DRV_EventCount(WORD DevNo,
LPDEVCFG lpDevCfg,
LPDEVATBU lpDevAtbu);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration
lpDevAtbu: Pointer to structure of device's attribute
Remarks:
This function invokes the driver's event counting function, and shows the
counter content until the user chooses to stop the experiment.
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Function:
DRV_FrequencyIO
Description:
Frequency measurement function.
int DRV_FrequencyIO(WORD DevNo,
LPDEVCFG lpDevCfg,
LPDEVATBU lpDevAtbu);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration
lpDevAtbu: Pointer to structure of device's attribute
Remarks:
This function invokes the driver's frequency measurement function, and shows
the data read until the user chooses to stop the experiment.
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Function:
DRV_Temperature
Description:
Frequency measurement function.
int DRV_Temperature(WORD DevNo,
LPDEVCFG lpDevCfg,
LPDEVATBU lpDevAtbu);
DevNo: Device ID specified for each AXIOM DAS device
lpDevCfg: Pointer to structure of device configuration
lpDevAtbu: Pointer to structure of device's attribute
Remarks:
This function invokes the driver's temperature measurement function, and
shows the data read until the user chooses to stop the experiment.
Return Values:
This function should returns an error code for kernel of AXDDU to determine
whether an error is occur or not. If no error occurred, the return value
will be 0. Otherwise, the return value is non-zero, and the program will be
terminated.
Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.