Arquivos do dispositivo Linux

1
��L��       óôLª         ôôL│Â
      ôôL≥Â
         ôôL:
                      ôôL<
                                       õôL┬      õôL
┬         õôL,               õôL,          öôL÷      öôLü         öôLä       öôLç         öôLÎá
      öôLÓá
         ÷ôLâ³      ÷ôLç³         ÷ôL]æ       ÷ôL◆æ         ÷ôL≥á
      ÷ôL£á
         øôL D      øôL"D         øôLW       øôLW         øôLª  !   øôª         ùôLê÷  !    ùôLí÷         ùôL  !   ùôL          ùôL&ç         !    ùôL(ç          úôLÞ÷  !   úôLà÷         úôL<  !    úôL>         úôL»+    !   úôL¼+          úôL¢
  !    úôL¢
         ûôL  !   ûôL         ûôLJ*  !    ûôLM*         ûôL  !   ûôL         ûôLB
  !    ûôLD
         ýôLÞ   !    ýôLà          ýôL  !   ýôL         ýôLôLàÎ
         ÿôL¨   !    ÿôLª          ÿôL]␉  !   ÿôL◆␉         ÿôLø  !    ÿôLø         ÿôLÏ≠
      !   ÿôLÒ≠
          ôL¾#  !    ôLÁ#          ôL=Ù  !     ôL@Ù          ôL»
  !    ôL½
          ôL7»
                 !     ôL:»
                                        ôLð  !    ôLó         ôL└   !    ôL⎺          ôL'ñ  !   ôL*ñ         ôL¨¬  !    ôLª¬         ôL!Ù  !   ôL#Ù         ôL␍ò  !  

Esta é uma saída usando cat / my / device / file para um joystick. Como faço para ler exatamente um arquivo de dispositivo? São os bytes binários acima? Eu só preciso ser capaz de detectar quais são esses caracteres.

Tutoriais / sugestões seriam ótimos!

    
por Carlo del Mundo 29.11.2010 / 22:06

4 respostas

3

Um arquivo de dispositivo é apenas um link para o espaço do kernel. A saída e como "ler" um arquivo de dispositivo depende do próprio dispositivo. Você terá que consultar os documentos para o seu driver (se houver algum) ou ler a fonte para descobrir o que está escrito lá.

Meu melhor palpite é o seu binário descrito por uma estrutura C na fonte do driver.

    
por 29.11.2010 / 22:17
1

Arquivos de dispositivos são arquivos especiais, não arquivos de texto, como muitos arquivos em /proc .

Se você quiser apenas configurar seu joystick, use um programa de espaço do usuário, veja por exemplo a instrução aqui . Seu ambiente de desktop também pode vir com software dedicado para configurá-lo. Para acessá-los diretamente, você precisará acessá-los via sua API C .

    
por 29.11.2010 / 22:16
1

Um 'arquivo de dispositivo' é um nó especial no disco que se vincula ao código dentro do kernel. Este código é o driver do dispositivo. Quando o driver do dispositivo é carregado, você configura funções específicas a serem chamadas quando certas chamadas do sistema (abrir / ler / escrever / fechar / etc ...) são chamadas no 'arquivo'.

Assim, quando você chama 'ler', ele chama uma função específica no código do driver de dispositivo. Este código pode fazer praticamente qualquer coisa no modo kernel; nesse caso, faz sentido fazer uma leitura de hardware do joystick, converter os valores de tensão em números e deixá-lo ler () no arquivo do dispositivo.

Apenas adivinhando aleatoriamente, tenho certeza que os valores enviados são apenas leituras de posição do joystick X e Y (e Z?) e algumas configurações de botões. Ler como texto não funciona, você precisa de algo que faça spams hexadecimais e / ou numéricos. Conecte o joystick, leia os valores e mova o joystick ao redor dos botões e veja como os valores mudam.

O código-fonte pode ter comentários indicando o que os valores significam, embora o código real seja provavelmente ilegível para você (a menos que você saiba o que o hardware registra e o material do protocolo USB significa).

    
por 30.11.2010 / 16:48
0

Você deve se certificar de que a taxa de transmissão do seu dispositivo é equivalente à taxa de transmissão da sua porta serial.

Verifique a velocidade de transmissão:
$ stty < / my / device / file

e igual a velocidades de dispositivo e porta serial:
$ stty -F / meu / device / file XXspeedXX

    
por 13.04.2013 / 02:03

Tags