por RobL » 08 Jun 2008 10:16
Rodou perfeito, tanto no WinXp quanto no Linux.
Como estou com um micro transmitindo bytes e não ASCII, tenho que entender melhor as funções e seus tipos, pois a mesma função que rodou no WinXP não fez o trabalho no Linux, apesar de não dar erro. O problema está somente na conversão de tipo.
O Synaser é fera.
No Linux fiz uma experiência em 9600 bps que mostra bem o que é o synaser, sem eventos, no meu programa.
Fiz ele coletar byte a byte de um pacote com 11 bytes e não houve nenhum erro em dezenas de tentativas. Em outras palavras, para ficar bem claro, o pacote foi enviado pelo micro e o synaser coletou, através de repetidas chamadas à mesma função, cada byte sem perder um na sequência.
Usei a função RecvByte(1000) várias vezes para ver o comportamento do programa.
Essa função ficará tentando receber até 1 segundo quando gera timeout.
Assim que recebe 1 byte termina e então chamei outra vez associado a outro byte.
Incrível que todos foram coletados na ordem que foram enviados.
C, D, E : Byte ;
C:= ser.RecvByte(1000);
D:= ser.RecvByte(1000);
E:= ser.RecvByte(1000);
Isto mostra a que veio o synaser e é o bicho para comunicação pela antiga serial.
Cabe lembrar que apesar da baixa velocidade de transmissão usada acima, outros códigos baseados em componentes, etc, levam bom tempo para abrir, fechar porta, respnder a eventos e dificilmente conseguiriam ler byte a byte de um pacote sem perder
vários bytes.
Nota: O microcontrolador que estou testanto está com baude fixo em 9600bps daí o uso em 9600 neste teste.
Agora sim, cheguei tarde no synaser, pelo menos 2 anos de atrazo, mas Linux e serial em modo gráfico com essa eficiência e simplicidade é show!!!! O mundo vai acabar!!!