Windows não flush buffer
-
13-11-2019 - |
Pergunta
Estou vendo algum comportamento estranho do Windows em relação aos meus buffers.
Eu uso 3 conversor USB-serial com fichas FTDI.Eu abro as portas COM com a CreateFile
e tudo funciona bem.Todas as 3 portas têm a mesma configuração, exceto as taxas de transmissão.2 Trabalhe em 38400 e um a 9600.
Aqui está a parte ímpar:
Eu sou capaz de escrever com sucesso a porta 9600 e uma das 38400 portas.As segundas 38400 portas parecem estar tamponando os dados.Eu conectei a esta porta com hiperterminal e vejo que nas portas de trabalho eu imediatamente recebo uma resposta e na porta "estranha" eu só recebo os dados quando feche minha inscrição ...
Alguém mais experimentou isso?Como você resolveu isso?
Solução
Isso é uma espécie de tiro no escuro ... mas.
Verifique as configurações de controle de fluxo para ambas as extremidades da conexão "estranha".Eu vi coisas estranhas assim quando o controle de fluxo é incompatível.O ato de fechar a porta limpa os bits e permite que os dados tamponados fluam.
Outras dicas
Tendo trabalhado um pouco com chips ftdi, eu sugiro que você confira as configurações avançadas do driver para cada porta.O driver suporta o controle de buffer e latência, a fim de permitir que você comprometa entre alta taxa de transferência e baixa latência.Então verifique as configurações que funcionam e use o mesmo para aquela que não (se elas não forem as mesmas).
Em uma nota lateral, usando FTDI: S possui API Você não precisa acompanhar a reatribuição do porto e semelhantes.A API é bastante semelhante ao Win32 normal, mas expõe mais opções de configuração.