Categories: Notícias

Saiba como construir um dispositivo USB

Nas últimas semanas, tenho construído um dispositivo USB usando um PIC18F2550. Desta vez, quis me envolver em uma discussão com o host de software. Afinal, se você construir um dispositivo USB, é lógico que irá querer usá-lo de algum software de computador, certo? Se você criou algo que se parece com um dispositivo padrão (por exemplo, um mouse), então isso é fácil. É só você tratá-lo como faria com qualquer outro mouse.

No entanto, é mais simples e mais flexível  construir uma HID (Human Interface Device, ou em tradução livre, dispositivo de interface humana). E foi isso que eu fiz. É verdade que um mouse (e teclado) é uma HID. Mas nem todos os HIDs agem como dispositivos de entrada padrão.

Você poderia escrever um driver USB completo, mas isso dá muito trabalho. Sem mencionar que seria necessário escrever um driver novo para cada sistema operacional. Isso é parte da beleza de usar o projeto HID: todos os principais sistemas operacionais já têm um driver para isso. Seu trabalho é interagir com eles a partir do software de usuário simples-para-escrever.

Existem algumas opções. A biblioteca libusb é muito flexível, mas também é um pouco complexa para trabalhar quando você não precisa de todas as suas capacidades. Além disso, o suporte do Windows foi limitado recentemente.

A outra opção usar a biblioteca HIDAPI. Isso fornece uma interface uniforme entre Linux, Mac e Windows por meio de back-ends diferentes. Primeiro, queria escrever uma interface de linha de comando simples para provar que eu poderia falar com o dispositivo.

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

#include  

#include “hidapi.h”

 

int main(int argc, char *argv[])

{

int state=0;

float v;

 

unsigned char buf[65];

hid_device *handle;

if (hid_init()) return;

printf(“Hid initn”);

handle=hid_open(0x4d8,0xf83f,NULL);   // our PID

if (!handle) return;

printf(“Hid openedn”);

buf[0]=0;   // send a command

buf[1]=1;

buf[2]=1;

int rv1=hid_write(handle,buf,3);

printf(“Write returned %xn”,rv1);

buf[0]=0;   // send a read command

buf[1]=2;

hid_write(handle,buf,2);

hid_read(handle,buf,sizeof(buf));  // read data back

v=(buf[3]

Não é muito excitante, mas fácil de seguir. A função hid_init configura a biblioteca enquanto a chamada thehid_open abre o meu dispositivo específico. O hid_read,hid_write e comandos hid_close fazem o que você acha que eles fazem. Finalmente, o hid_exit limpa e nada fica para trás.

Muito simples. Claro, você pode fazer muito mais, mas o código desta série irá permitir que você faça uma quantidade surpreendente de desenvolvimento USB com um mínimo de barulho.

 

Recent Posts

UE ordena que Meta reabra WhatsApp a chatbots rivais

A Comissão Europeia determinou que a Meta reestabeleça o acesso de assistentes de inteligência artificial…

11 horas ago

IPO da SpaceX chega ao mercado como aposta de US$ 1,75 trilhão em IA, não em foguetes

As negociações com as ações da SpaceX têm início nesta quinta-feira, 12, em uma oferta…

11 horas ago

IA muda jornada de compra e devolve relevância aos sites de avaliação B2B, diz Forrester

A ascensão dos agentes de inteligência artificial (IA) está criando uma oportunidade para plataformas de…

12 horas ago

Prêmio Executivo de TI do Ano 2026: conheça os critérios de avaliação

Continuam abertas as inscrições para o prêmio Executivo de TI do Ano 2026. A iniciativa,…

12 horas ago

Meta cria programa de formação para técnicos de data centers em meio à expansão da infraestrutura de IA

A Meta anunciou um investimento de US$ 115 milhões para criar um programa de capacitação…

12 horas ago

Apple apresenta nova geração do Siri AI e amplia aposta em inteligência artificial na WWDC 2026

A Apple utilizou a edição de 2026 da Worldwide Developers Conference (WWDC) para apresentar uma…

13 horas ago