.
.
.
Make your own software with
DASHARD.DLL / USBDMXVB.DLL
and our Intelligent USBDMX1 / USBDMX2 / USBDMX-IN Interfaces
The DASHARD.DLL is a 32 bit Windows DLL (Dynamic Link Library). The library
works with Windows 98, ME, 2000 and XP. It has been tested on Visual C++, C++
Builder, and Delphi.
For demo codes, please refer to our support website at https://www.soundlight.eu/pcdmx
For Visual Basic applications, use the USBDMXVB.DLL. This DLL features the same calls.
The DASHARD.DLL contains only one function :
int DasHardCommand( int command, int param, unsigned char *bloc );
The first parameter <command> defines
the thing to do :
DHE_DMXOUT_PACKREAD If the function fails.
int command
explanation
works with
int param
unsigned char *bloc
return value (int)
DHC_OPEN
allow to open the communication with the
interface
ALL INTERFACES
Enter 0 to open any interface.
Enter 3 to open USBDMX1
Enter 11 to open USBDMX2not used
Positive value if the function succeeds.
return 3 with USBDMX1
return 11 with USBDMX2
return a specific value with
Negative value if the function fails.
DHC_CLOSE
allow to close the communication with the
interface
ALL INTERFACES
not used
not used
DHE_OK If the function succeeds.
DHE_ERROR_NOTOPEN If the interface is not open.
DHE_ERROR_COMMAND If the function fails.
DHC_DMXOUTOFF
allow to clean the DMX ouput (force all levels
to 0)
USBDMX1
USBDMX2
not used
not used
DHE_OK If the function succeeds
DHE_ERROR_NOTOPEN If the interface is not open.
DHE_DMXOUT_PACKWRITE If the communication fails.
DHC_DMXOUT
allow to send a DMX block to the interface
USBDMX1
USBDMX2
Specifies the size, in bytes, of the DMX block
of memory to send
Pointer to the DMX block of memory to send
DHE_OK If the function succeeds
DHE_NOTHINGTODO If the DMX levels are the same as before.
DHE_ERROR_NOTOPEN If the interface is not open.
DHE_DMXOUT_PACKWRITE If the communication fails.
DHC_DMXIN
allow to read DMX input.
USBDMX-IN
Specifies the size, in bytes, of the DMX block
of memory to read. The normal value is 515 (length: 2bytes + start code: 1byte
+ 512 channels)
Pointer to the DMX block of memory to
read
Number of bytes transfered.
DHC_PORTCONFIG
allow to set the input/output mode and the
state of the 8 ports
USBDMX1
Set an integer from 0 to 65535 (16bits).
The low byte specifies the input/output mode of the 8 ports. (0=input, 1=output)
The high byte specifies the state of the 8 ports. (0=off, 1=on)not used
DHE_OK If the function succeeds.
DHE_ERROR_NOTOPEN If the interface is not open.
DHE_ERROR_COMMAND If the function fails.
DHC_PORTREAD
allow to read the state of the 8 ports and the
Next/Previous buttons
USBDMX1
not used
not used
DHE_ERROR_NOTOPEN If the interface is
not open.
If the function succeeds, the return value is from 0 to 1023 (10bits), Bit0=NEXT,
Bit1=PREVIOUS, Bit2-9=State of 8ports
DHC_VERSION
return the firmware version
USBDMX1
not used
not used
Return 10 with firmware dated
4-may 2000
Return 11 with firmware dated 31-jan 2001
With USBDMX2 and return DHE_NOTHINGTODO
DHC_DEBUG_OPEN
open the debug mode and create a file named
"debug.txt"
ALL INTERFACES
not used
not used
return DHE_OK always
DHC_DEBUG_CLOSE
close the debug mode
ALL INTERFACES
not used
not used
return DHE_OK always
DHC_WRITEMEMORY
allow to write the stand alone memory.
USBDMX1
Specifies the size, in bytes, of the block of
memory to write.
Pointer to the block of memory
DHE_OK If the function succeeds.
DHE_ERROR_NOTOPEN If the interface is not open.
DHE_ERROR_COMMAND If the function fails.
DHC_READMEMORY
allow to read the stand alone memory.
USBDMX1
Specifies the size, in bytes, of the block of
memory to read.
Pointer to the block of memory
DHE_OK If the function succeeds.
DHE_ERROR_NOTOPEN If the interface is not open.
DHE_ERROR_COMMAND If the function fails.
DHC_SIZEMEMORY
allow to know the size of the stand alone
memory.
USBDMX1
not used
not used
DHE_ERROR_NOTOPEN If the interface is
not open.
return the size, in bytes, of the stand alone memory.
DHC_SERIALNWRITE
allow to write a serial number.
USBDMX1
Specifies the size, in bytes, of the block of
memory to write. (16 bytes maximum)
Pointer to the block of memory
DHE_OK If the function succeeds.
DHE_ERROR_NOTOPEN If the interface is not open.
DHE_ERROR_COMMAND If the function fails.
DHC_SERIALNREAD
allow to read a serial number.
USBDMX1
Specifies the size, in bytes, of the block of
memory to read. (16 bytes maximum)
Pointer to the block of memory
DHE_OK If the function succeeds.
DHE_ERROR_NOTOPEN If the interface is not open.
DHE_ERROR_COMMAND If the function fails.
Remarks:
- All the constants DHC_OPEN,
DHC_CLOSE, DHE_OK .... are defined in the
"_DasHard.h" include file.
DHC_OPEN 1 // COMMAND DHC_CLOSE 2 // COMMAND DHC_DMXOUTOFF 3 // COMMAND DHC_DMXOUT 4 // COMMAND DHC_PORTREAD 5 // COMMAND DHC_PORTCONFIG 6 // COMMAND DHC_VERSION 7 // COMMAND DHC_DMXIN 8 // COMMAND DHC_RESET 11 // COMMAND DHC_DEBUG_OPEN 12 // COMMAND DHC_DEBUG_CLOSE 13 // COMMAND DHC_WRITEMEMORY 21 // COMMAND DHC_READMEMORY 22 // COMMAND DHC_SIZEMEMORY 23 // COMMAND DHC_TRANSPORT 30 // COMMAND DHP_TRANSPORT_MODEALW 1 // PARAM DHP_TRANSPORT_MODEALW32 2 // PARAM DHP_TRANSPORT_MODEOPT 3 // PARAM (DEFAULT) DHP_TRANSPORT_MODEOPT32 4 // PARAM DHC_SERIALNREAD 47 // COMMAND DHC_SERIALNWRITE 48 // COMMAND DHE_OK 1 // RETURN NO ERROR DHE_NOTHINGTODO 2 // RETURN NO ERROR DHE_ERROR_COMMAND -1 // RETURN ERROR DHE_ERROR_NOTOPEN -2 // RETURN ERROR DHE_DMXOUT_PACKWRITE -1000 // RETURN ERROR -1005 // ERROR_ACCESS_DENIED -1023 // ERROR_CRC DHE_DMXOUT_PACKREAD -1100 // RETURN ERROR
You can use up to 10 USB interfaces at the
same time.
To do this,
just add a value in the <command> parameter :
- add 100 (DHC_USBDMX11) if you want to use the interface #2
- add 200 (DHC_USBDMX12) if you want to use the interface #3 ...
Example: DasHardCommand( DHC_USBDMX11+DHC_OPEN
, 0 , 0 ) open the the interface #2
Example of code using our DLL - C++ style
Open the interface when your application start :
int interface_open;
Send the DMX and read the PORT everytime :
int v,ports;
if (interface_open>0) {
ports =
HardDllCommand(DHC_PORTREAD,0,0);
v = HardDllCommand(DHC_DMXOUT, 512,
dmxblock);
if (v<0) {
v =
HardDllCommand(DHC_CLOSE,0,0);
v =
HardDllCommand(DHC_OPEN,0,0);
}
}
Note :
-PORT READ/WRITE commands apply to USBDMX1 interface only. The USBDMX2 interface does not require PORT commands since there is no port available and the interface does not support stand alone mode.
- When you use the DHC_DMXOUT command, the DLL analyses your DMX block. If there is no
changes on the DMX levels, the function returns DHE_NOTHINGTODO and the DLL does not make a
USB communication to save the CPU time of your computer.
- After 6 seconds without USB communication, the USBDMX1 interface enters stand alone mode (it's
a nice feature, if the computer fails). That's why we propose to read the state of the port
everytime to force a USB communication. This will ensure that interface does not enter stand alone mode.
- If the DHC_DMXOUT command fails (for example, if the user unplugs the USB interface
!), you need to close and try to open the interface again.
Close the interface when your application finish :
int v;
if (interface_open>0)
v = HardDllCommand(DHC_CLOSE,0,0);
Copyright (c) Digital Art System, 1998-2002