| |
Although Digi-Bee comes with it's own
software (Logic-Lab) to allow the beginner to start using it in home
automation projects very quickly, it also comes with a DLL interface to
allow the intermediate and advanced user to write their own programs for
it. The DLL provides a general purpose interface that greatly simplifies
the task of writing programs for a USB device. It can be tricky
manipulating the USB comms into sending and receiving messages to and from
a device which can easily be plugged and unplugged at any time. The DLL
eliminates all of these headaches by simplifying the task into three
library functions.
InitDgb( ) SetOutputs (outputs) and
ReadInputs(inputs)
InitDgb() is called somewhere near the start of your program and takes
care of all of the USB comms initialisation and prepares the Digi-Bee for
receiving messages.
SetOutputs(outputs) can then be called at any time during your program to
set the output pattern of on's and off's. The parameter outputs is simply
a 16 bit integer values. In outputs bit0 corresponds to output 1, bit 1 to
output2, etc.... In each case a logic value of 1 turns the output on and a
value of 0 turns it off. For example the statement below would turn on the
first three outputs...
SetOutputs (7) since 7 in binary is 00000111
and the following would turn on outputs 1, 2, and 4
SetOutputs (11) since 11 in binary is
00001011
To read the current state of the inputs simply
pass an integer variable to the ReadInputs()
function and use it’s value after the call. For example if inputs 2 and 4
are on, then the call…
ReadInputs(inputval)
will result in the integer “inputval” containing the value 10. This
is 0000000000001010 in binary.
What could be simpler……………..
The only other thing that a VB program must do is to declare the functions
that it is going to use within the DLL and the name of the DLL itself.
This must be done at the start of your program or at least before any
references to the three functions are made. The following is a program
excerpt showing how this is done...
Declare Function InitDgb Lib "dgb.dll" () As Boolean
Declare Function SetOutputs Lib "dgb.dll" (ByVal outputs As Integer) As
Boolean
Declare Function ReadInputs Lib "dgb.dll" (ByRef inputs As Integer) As
Boolean
The first declaration states that the function InitDgb has no parameters,
is found in dgb.dll and returns a boolean value. The second states that
SetOutputs has one integer parameter passed by value rather than
reference, is found in dgb.dll and also returns a boolean value. The third
state sthat ReadInputs has one integer parameter passed by reference, is
found in dgb.dll and, againa, returns a boolean value. It should be noted
that the
Lib "dgb.dll"
lets the program know where to find the dgb.dll file. When written like
this it assumes, since there is no path information, that the dgb.dll file
can be found in the windows system directory ( c:\windows\system32 ) If
you like you can copy the file dgb.dll on the installation disk to the
system32 directory and the above statement will work perfectly.
Alternatively you can copy the file to some other location and give that
location in the declaration as in the example below...
Declare Function InitDgb Lib "c:\mylibrary\dgb.dll"
() As Boolean
|
|