Acho que descobri acidentalmente uma necessidade em minha vida por sistemas embarcados. O que é ótimo! E meio assustador. E eu preciso de ajuda.
Antecedentes : Fui contratado para criar um aplicativo GUI que realiza varreduras de dois SICK LMS-291s e as integra com um GPS de precisão de menos de uma polegada, para que você saiba onde cada varredura ocorreu. Como programador da web ingênuo, soube que o tempo seria importante, mas não percebi que também seria difícil! Se você não souber quando cada ponto de GPS e cada verificação ocorreram, não poderá descobrir onde as verificações ocorrem. Opa
Eles haviam especificado o Windows 7 como plataforma e compraram uma caixa SeaLevel RS422 para USB para conectar os sensores e o GPS e, em pouco tempo, descobri minha loucura. Em algum lugar entre os sensores e meu programa de computador, algo estava impedindo que as digitalizações chegassem em tempo hábil. O LMS distribui 75 varreduras por segundo ou a 13,32 ms / varredura. Meu programa não os obtém em tempo hábil. Ele os obtém a cada 100 milissegundos, em grupos de 7 ou 8 ou 10 ou algo assim. Às vezes, também não são exibidas varreduras suficientes ou são mutiladas. Esse adaptador SeaPort está enviando apenas dez vezes por segundo (isso é possível? Não sei como o USB funciona) ou o Windows não está verificando o buffer (deve haver um buffer em algum lugar, certo?) Quase com bastante frequência.
Dia atual : isso leva a algumas imprecisões com as quais o cliente está basicamente bem. Eu não sou, porém, e como tenho a chance de fazer um trabalho semelhante para o cliente (integrando mais entradas de sensores!), Gostaria de descobrir como fazê-lo corretamente, por exemplo, dada a precisão do GPS , seja capaz de dar garantias sobre a precisão e exatidão dos locais de digitalização.
Como é isso? Eu preciso de uma interface do usuário e poder verificar a entrada desses três dispositivos a cada 13,32 milissegundos. Se eu usasse o FreeRTOS com, digamos, Nano-X para a GUI, executada em um laptop que eles fornecem, isso soaria como uma solução sã? É possível que o adaptador RS-422 para USB esteja causando esses atrasos e o uso do Windows seja adequado para esse fim?