(Note: The easiest way to interface to the device in Windows is through the USBm DLL Programming method.)
You can directly communicate with the Windows API using the device raw commands to program the USB interface boards. The raw commands are described here. Use this method of interfacing to the USB device only if your programming language has no support for using the DLL.
For VB the support files (those with a .bas extension) separate the bulk of the interface details from the main VB application.
The operations that control the USB device are commands that write data to the device and read data from the device. These two function calls provide a way for commands to be sent to the device, and replies read. The “payload” of the functions is the “raw” device command.
To write E7h to port A use the command 01-E7-00-00-00-00-00-00
Visual Basic Programming
The sample programs that are a part of the ODN have been written in Visual Basic version 6.0. A group of files, the “VBLIB” are used to hide the complexity of interfacing to the U4xx. These files are adapted from the files created by John Hyde, author of “USB Design by Example” and a DLL from Dan Appleman, author of “Visual Basic Programmer’s guide to the Win32 API”. The files of the VB library and the DLL can be downloaded (all application files) from this site.
By using these visual basic files developed by John, anyone exploring how the USB HID interface is programmed can use John’s excellent book as a guide. The book explains in detail about USB devices and the HID interface to the PC. The U4x1 examples use the methods developed by John, but do not go into any detail.
The basic files are:
osinterface.bas
hidinterface.bas
miscfunc.bas
The osinterface.bas file defines all of the API routines and data structures necessary to communicate with the USB subsystem. The hidinterface.bas file contains the helper functions for opening, closing, writing to, and reading from the U4x1. Miscfunc.bas has some generic hex, string, and ASCII helper functions.
The function “OpenUSBdevice” opens the first device that matches the data in the function’s parameters. The parameters are:
NameOfDevice$ – The device product name “U401”.
ManufactOfDevice$ – The device manufacturer name “USBmicro”.
VIDOfDevice – The Vendor Identification – 0DE7
PIDOfDevice – The Product Identification – 0191
DIDOfDevice – The Device ID (or device version) – 0100
SerNumOfDevice$ – The serial number of the device (specific to the purchased U401)
Unused parameters should be 0 or the null string, as appropriate.
The “ReadUSBdevice” function and the ‘WriteUSBdevice” function transfer data to and from the open USB device.
The “CloseUSBdevice” function closes the connection to the U4xx.
DLL Support for Examples
To operate the samples, a library file is necessary.
The DLL file is:
apigid32.dll
The DLL should be copied to the Windows system directory. (Obtained as part of the VBLIB download, above.)
The support files are included with the application samples.
Raw Command Summary
The Command Table below summarizes all of the allowed U4xx commands. The Command Name is for easy reference to the command, it is the command number given below in the hexadecimal format that is used in the first byte of the command string for the command. The individual command pages that follow this summary give detailed information on the format and use of these commands.
Empty entries in the table indicate unused command values. These values are reserved.
The support files are included with the application samples.
Command Name | # | Description |
InitPorts | 00 | Initialize both 8-bit ports as passive inputs |
WriteA | 01 | Write to port A |
WriteB | 02 | Write to port B |
WriteABit | 03 | Write masked values to port A |
WriteBBit | 04 | Write masked values to port B |
ReadA | 05 | Read port A |
ReadB | 06 | Read port B |
SetBit | 07 | Set a single line⁄bit high |
ResetBit | 08 | Reset a single line⁄bit low |
DirectionA | 09 | Port A direction |
DirectionB | 0A | Port B direction |
StrobeWrite2 | 0B | Strobe Write |
StrobeRead2 | 0C | Strobe Read |
StrobeWrites | 0D | Multi-byte Strobe Write |
StrobeReads | 0E | Multi-byte Strobe Read |
ReadLatchesCmd | 0F | |
InitLCD | 10 | Init LCD |
LCDCmd | 11 | Write LCD command |
LCDData | 12 | Write LCD data |
13 | ||
InitSPI | 14 | Init SPI pins and SPI control attributes |
SPIMaster | 15 | Send⁄Receive SPI data as a master |
SPISlaveWrite | 16 | Write SPI slave message |
SPISlaveRead | 17 | Read SPI slave message |
Wire2ControlCmd | 18 | |
Wire2Data | 19 | |
1A | ||
1B | ||
Stepper | 1C | Control two stepper motor digital channels |
Reset1Wire | 1D | Select pin for 1-wire bus and send reset command to the bus. |
Write1WireBit | 1E | Write to 1-wire bus |
Read1WireBit | 1F | Read from 1-wire bus |