L’interface USB-DMX512 version 3
→ Utilisation ←
Signification des leds :
L’interface est équipée de trois leds :
une verte,
une orange,
une rouge.
Ces trois leds indiquent différents modes de fonctionnement de l’interface et peuvent prendre les états suivants :
| Etat des leds | Descriptif |
| Mise sous tension de l’interface. La sortie DMX OUT est au repos (état 0). |
| Mise sous tension de l’interface. Un signal DMX valide est généré sur la sortie DMX OUT. |
| L’interface communique avec un logiciel PC. Un signal DMX valide est généré sur la sortie DMX OUT. L’entrée DMX IN est active. |
| Le programme ne fonctionne pas avec le bootlader utilisé. L’interface n’est pas opérationnelle. |
| L’interface est en mode "bootloader". Elle est en attente du chargement d’un nouveau programme. Merci de consulter l’article "Programmation" pour plus de renseignements. |
Utiliser l’interface et ses DLLs :
Introduction :
Afin de contrôler l’interface USB, une DLL écrite sous Visual C++ existe.
Celle-ci est disponible sur la page "Téléchargements"
Les points d’entrée de la DLL :
Les points d’entrée représentent l’ensemble des fonctions disponible dans la DLL.
Ceux-ci sont au nombre de sept :
la fonction d’ouverture de l’interface : int OpenUSB (void) ;
la fonction d’envoi de données : int SendUSB (unsigned char* Data) ;
la fonction de fermeture de l’interface : int CloseUSB (void) ;
la fonction d’ouverture de l’interface (DMX IN) : int OpenInUSB (void) ;
la fonction de réception de données de l’entrée DMX IN : int ReceiveUSB (unsigned char* Data) ;
la fonction de fermeture de l’interface (DMX IN) : int CloseInUSB (void) ;
la fonction permettant de redémarrer l’interface : int ResetUSB (void) ;
L’ensemble de ces fonctions retournent une valeur différente de zéro en cas d’erreur.
Le tableau "Data" doit être de taille au moins égale au nombre de canaux gérés.
Utilisation de la DLL sous Visual C++ :
Cet exemple décrit l’utilisation de la DLL dans un programme sous Visual C++.
Voici les détails relatifs a l’utilisation de la DLL :
LA DECLARATION DES FONCTIONS ET DES VARIABLES GLOBALES :
#define USB_DLL "USB_DLL.DLL"
#define USB_OPEN_ENTRY "OpenUSB"
#define USB_SEND_ENTRY "SendUSB"
#define USB_CLOSE_ENTRY "CloseUSB"
typedef int (*LPFN_OPEN_USB)(void);
typedef int (*LPFN_SEND_USB)(unsigned char *data);
typedef int (*LPFN_CLOSE_USB)(void);
LPFN_OPEN_USB OpenUSB;
LPFN_SEND_USB SendUSB;
LPFN_CLOSE_USB CloseUSB;
HINSTANCE hDLL ;
unsigned char DmxOut[256];
L’INITIALISATION DE LA DLL ET DES VARIABLES GLOBALES :
// Intilisation des données DMX.
memset (DmxOut, 0, sizeof (DmxOut));
// Chargement de la DLL.
hDLL = LoadLibrary( USB_DLL ) ;
if (hDLL != NULL)
{ OpenUSB = (LPFN_OPEN_USB)GetProcAddress(hDLL, USB_OPEN_ENTRY);
if (!OpenUSB)
{ FreeLibrary(hDLL);
hDLL = NULL;
return; }
SendUSB = (LPFN_SEND_USB)GetProcAddress(hDLL, USB_SEND_ENTRY);
if (!SendUSB)
{ FreeLibrary(hDLL);
hDLL = NULL;
return; }
CloseUSB = (LPFN_CLOSE_USB)GetProcAddress(hDLL, USB_CLOSE_ENTRY);
if (!CloseUSB)
{ FreeLibrary(hDLL);
hDLL = NULL;
return; }
// Ouverture de l'interface.
if (OpenUSB())
AfxMessageBox("Interface USB-DMX non trouvée !!!", MB_ICONSTOP);
else
{ CString Texte;
Texte.Format("La librairie '%s' n'a pas été trouvée.\nL'interface USB-DMX ne fonctionnera pas.", USB_DLL);
AfxMessageBox(Texte, MB_ICONSTOP); }
return;
L’ENVOI DE DONNEES A L’INTERFACE :
// Envoi de données.
if (SendUSB(DataOut))
AfxMessageBox("Erreur dans l'envoi des données");
return;
LA FERMETURE DE L’INTERFACE :
// Fermeture de l'interface.
CloseUSB();
// Libération de la DLL.
FreeLibrary(hDLL);
return;
Utilisation de la DLL sous Visual Basic :
Cet exemple décrit l’utilisation de la DLL dans un programme sous Visual Basic.
LA DECLARATION DES FONCTIONS :
Public Declare Function OpenUSB Lib "usb_dll.dll" () As Integer
Public Declare Function CloseUSB Lib "usb_dll.dll" () As Integer
Public Declare Function SendUSB Lib "usb_dll.dll" (ByVar data As String) As Integer
Il suffit ensuite d’appeler les fonctions OpenUSB, SendUSB et CloseUSB à l’endroit où l’on veut dans le code.
Chacune de ces fonctions retourne 0 dans le cas d’une réussite de son exécution ou -1 dans le cas contraire.
EXEMPLE D’ENVOI DE DONNEES A L’INTERFACE :
Dim DMXout(512) As Byte
Dim DMXoutStr As String
Private Sub Send_Data()
' Ouverture de l'interface.
OpenUSB
' Préparation des donnnes a transmettre.
Dim i As Integer
For i = 0 To 255
DMXout(i) = i
Next i
' Conversion des données avant l'envoi à la DLL.
DMXoutStr = StrConv(DMXout, vbUnicode)
' Envoi des données.
SendUSB (DMXoutStr)
End Sub
Pour toute question complémentaire, n’hésitez pas à me contacter par mail ...
Rédigé par :
(Dernière modification : 19 février 2011)
Article précédent : Installation
Article suivant : Paramétrage
|