================================ 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.