ttyACM ou ttyUSB

0

Eu desenvolvo um aplicativo linux, que funciona com dispositivos ttyUSB* / ttyACM* . Agora eu tenho uma tarefa:
Eu tenho que encontrar uma maneira, como restaurar a comunicação com o dispositivo, quando a conexão é perdida temporariamente. Agora vejo esse comportamento: se a porta for aberta no aplicativo e o dispositivo for reconectado neste momento, o nome do dispositivo será alterado e o aplicativo não poderá concluir a operação atual. Então, eu escrevi udev rule para adicionar o symlink ao dispositivo, e a regra funciona. Mas o aplicativo falha do mesmo jeito. O motivo é que o dispositivo muda é tty ( ttyACM0->tyyACM1 ) depois de ser reconectado, e o symlink não ajuda, porque o descritor de arquivo fica incorreto.

Alguém sabe de alguma forma, como posso fazer a replicação do dispositivo sem precisar reiniciar o aplicativo? Há alguma configuração no Linux para permitir que o dispositivo seja conectado novamente ao mesmo tty , mesmo que tenha sido aberto no aplicativo no momento da desconexão?

    
por Олег Сидоров 13.03.2018 / 15:44

1 resposta

0

Por fim, cheguei a uma conclusão de que um gerenciamento manual do descritor de porta de abertura / fechamento é a única solução para o problema. Além disso, alguns momentos podem afetar o comportamento do dispositivo:

  • configurações de tempo limite de USB
  • presença do modemmanager
  • intervalo entre o plugue e o dispositivo
por 12.04.2018 / 15:59

Tags