Although Digi-Bee+ comes with it's own
software (Logic-Lab Plus) 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
InitDgb( ) SetOutputs (outputs) and
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
To read the current state of the digital 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…
will result in the integer “inputval” containing the value 10. This
is 0000000000001010 in binary.
To read the current values of the 4 analogue inputs pass 4
variables by reference to the ReadAnalogueInputs function….
ReadAnalogueInputs(aip1, aip2, aip3, aip4)
… which will result in the digitised amplitude of the 4 voltage levels on
the 4 analogue inputs being returned in the supplied variables aip1 – 4.
If , for example, the voltages on the 4 analogue inputs happen to be 1.0v,
2.0v, 2.5v and 3.75v respectively, then the above function call will
result in the following values in the 4 variables…..
aip1 aip2 aip3 aip4
51, 102, 128, 196
This assumes a “normal” sensitivity setting
To set the sensitivity to other than 0-5v use the SetSensitivity function…
SetSensitivity(1) sets high sensitivity based
on current voltage reference
SetSensitivity(0) sets normal sensitivity
based on 0-5v
In the above example if the following function call had been made prior to
the ReadAnalogueInputs() function….
Then the resulting values returned in a1 – a4 would be approximately
double (subject to the maximum of 255). This assumes that the on-board
voltage reference of 2.4v was used.
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
Declare Function ReadInputs Lib "dgb.dll" (ByRef inputs As Integer) As
Declare Function ReadAnalogueInputs Lib "dgb.dll" (ByRef aip1 As Integer,
ByRef aip2 As Integer, ByRef aip3 As Integer, ByRef aip4 As Integer, ) As
Declare Function SetSensitivity Lib "dgb.dll" (ByVal HighNorm As Integer)
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 that ReadInputs has one integer parameter passed by reference,
is found in dgb.dll and, again, returns a boolean value. The fourth
passes 4 values by reference and the fifth by value etc....
It should be noted that the
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