Em alguns casos como projetos especiais ou aplicações dedicadas pode ser necessário fazer o acesso direto a interface sem utilizar o software megaDMX ou outro software de luz para fazer a comunicação com a interface.
Para utilizar as interface USB diretamente com uma linguagem de programação foi desenvolvido o software megaDMX SDK.
O megaDMX SDK é um arquivo DLL para Windows, que pode ser utilizado em qualquer linguagem de programação.
O arquivo dmxusblib.dll faz a comunicação com a interface, para funcionar corretamente esta DLL precisa do outro arquivo FTD2XX.dll, além disso os drivers para interface USB devem ser instalados.
Veja como instalar os drivers nesse link.
Os drivers também são fornecidos no SDK na pasta drivers_usb.
Se os drivers USB não forem instalados a DLL não irá funcionar.
A sequencia correta para conexão com a interface USB é:
A DLL funcionará apenas para 1 interface conectada, não sendo possível conectar mais interfaces USB simultâneamente.
Para verificar se a interface USB está conectada utilize a função:
int getDMXUSBInterfacesCount
este método retorna o número de interfaces conectadas no computador.
Exemplo:
int i; i = getDMXUSBInferfacesCount; // i = 2 – existem 2 interfaces conetadas no computador.
A função
int getDMXUSBInterfaceId( int index )
retorna o número ID da interface de acordo com o índice informado, se o valor informado para o índice for maior que o resultado de getDMXUSBInferfacesCount, o retorno da função será -1.
O índice começa em 0
Exemplo:
int i; i = getDMXUSBInferfacesCount; // i = 2 – existem 2 interfaces conectadas. int id; id = getDMXUSBInterfaceId( 0 ); // id=17 – busca o ID da primeira interface conectada. id = getDMXUSBInterfaceId( 1 ); // id=289 – busca o ID da segunda interface conectada. id = getDMXUSBInterfaceId( 3 ); // id=-1 – ERRO pois existem apenas 2 interface conectadas.
Para abrir a comunicação com a interface USB use a função
int openDMXUSBInterfaceById( int id )
para descobrir o ID da interface use a função getDMXUSBInterfaceId( int index ) mostrada anteriormente. Caso o ID seja inválido o resultado da função será -1.
Exemplo:
int i; i = getDMXUSBInferfacesCount; // i = 2 – existem 2 interfaces conectadas. int id; id = getDMXUSBInterfaceId( 0 ); // id=17 – busca o ID da primeira interface conectada. int r; r = openDMXUSBInferfaceById( id ); // r = 0 – comunicação iniciada r = openDMXUSBInferfaceById( 20 ); // r = -1 – ID Não encontrado
int closeDMXUSBInterface
Termina a comunicação com a interface USB. Se a comunicação já estiver terminada retorna -1.
int setDMXChannel( int channel )
Define o valor interno para um ponteiro informando o número do canal DMX desejado, esse número deve ser entre 1 e 512. Esse comando é utilizado em conjunto com a função setDMXValue.
int setDMXValue( int value )
Atribui um valor a um canal DMX entre 0 e 255.
int getDMXUSBInterfaceStatus
Retorna a quantidade de frames por segundo envidos pela interface para linha DMX. Se a comunicação estiver terminada retorna -1.
int getInterfaceStatus
Retorna o status da interface:
int getInterfaceType
Retorna o tipo da interface conectada:
Exemplo:
int i; i = getDMXUSBInferfacesCount; // i = 2 – existem 2 interfaces conectadas. int id; id = getDMXUSBInterfaceId( 0 ); // id=17 – busca o ID da primeira interface conectada. int r; r = openDMXUSBInferfaceById( id ); // r = 0 – comunicação iniciada int status; status = getDMXUSBInterfaceStatus; // status = 25 – 25 fps. setDMXChannel ( 10 ); setDMXValue( 144 ); // canal DMX 10 com valor 144 setDMXChannel ( 1 ); setDMXValue( 255 ); // canal DMX 1 com valor 255 r = closeDMXUSBInterface; // r = 0 – encerra comunicação status = getDMXUSBInterfaceStatus; // status = -1 – Erro sem comunicação com a interface.
Na pasta de instalação do SDK são fornecidos vários exemplos em diferentes linguagens de programação.
Para distribuir o SDK com a sua solução de iluminação envie apenas os drivers USB e o arquivo dmxusblib.dll.