Como faço para ler dados USB de um dispositivo de caractere

1

Eu preciso escrever um "dispositivo de caractere" que leia dados de um arduino e grave esses dados em um arquivo de log. Eu tenho pesquisado este assunto por horas e tenho visto algumas maneiras de fazer isso funcionar, mas eles não usam um dispositivo de caracteres.

Eu sei que isso pode ser feito simplesmente usando cat from usb device, mas estou fazendo isso para a classe System Programming e preciso usar um dispositivo de caractere. A coisa mais próxima que encontrei foi uma tarefa semelhante feita pelos alunos do ano passado, mas eles abriram e fecharam o arquivo /dev/ttyACM0 como mostrado em responder.

Existe uma maneira correta diferente de fazer isso de um arquivo de dispositivo chacacter ou é a maneira correta?

    
por acon__ 25.12.2017 / 16:02

1 resposta

3

Se a sua tarefa é "escrever um dispositivo de caractere", isso provavelmente significa que você deve escrever um driver de dispositivo que se comunica com o dispositivo (da maneira que achar melhor) e se apresenta como algo semelhante ao /dev/ttyACM0 device.

Acredito que seu professor possa ter pensado na solução dos alunos do ano passado de usar /dev/ttyACM0 como um truque.

Em um curso de programação de sistema, a solução pretendida provavelmente seria algo como escrever um driver de dispositivo que localiza o Arduino no barramento USB e cria um dispositivo de caractere. Quando o dispositivo é aberto no espaço do usuário, o driver deve enviar URBs USB do tipo apropriado (leia a documentação do Arduino!) Para o Arduino e coletar as respostas e apresentar os dados das respostas de uma forma útil (ou seja, com o protocolo USB enquadramento despojado) para o espaço do usuário ler o dispositivo de caractere.

Em seguida, será necessário um pequeno componente de espaço do usuário para abrir o dispositivo e gravar a saída em um arquivo (talvez apenas uma regra udev que execute algo como cat /dev/YOURDEVICE > /var/log/YOURLOGFILE quando o dispositivo for exibido).

Mas isso é algo que você deve perguntar ao seu professor.

    
por 25.12.2017 / 17:15