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