por leoabubauru » 01 Fev 2008 11:39
Amigos ( em especial o __JEREK__ ):
Estou implementando o protocolo ModBus num PIC16F628A e uma interface no C++Builder 6 usando o TComPort. Mas acontece que, algumas vezes, a comunicação trava, seja por um reset do PIC ou outra coisa, e não volta mais. Reseto novamente o PIC e nada. Fecho e abro o software e nada. Mas se coloco um programa de teste de ModBus que baixei da net, assim que reseto o PIC ele volta a comunicar. Algumas providencias já tomei, como sempre ler o registro da USART do PIC para que ela não trave. Mesmo assim, trava.
Posso fazer algumas considerações:
1 - o aplicativo provoca o travamento da USART do PIC;
2 - Fechando o meu aplicativo e colocando o soft de teste de ModBus, ele também indica falha de comunicação (pois a USART deve estar travada), mas tão logo eu reseto o PIC a comunicação volta ao normal. O mesmo não acontece com o meu aplicativo em C++ Builder que fica travado mesmo após eu fechá-lo e abrí-lo novamente.
3 - Consigo usar Open e Close normalmente no TComPort após fechar e abrir o aplicativo. Mas há vezes em que aparece uma mensagem de erro assim que uso Close. O erro (win error code 6) diz que a porta está em uso, entretanto, é o mesmo aplicativo que está fazendo a solicitação. Dá a impressão que a porta fica presa em algum processo.
4 - Depois do que narrei acima, coloquei a instrução para limpar o Buffer após um TimeOut e antes de iniciar uma operação de escrita na COM1. Ainda assim o travamento acontece.
Alguém já passou por isso?
Qualquer dica é bem vinda!!! Se precisarem ver o código é só dizer que posso enviar...
Laercio
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!