Diria que este post é uma continuação deste aqui. Nesse tutorial dei a conhecer uma aplicação feita em C# que permitia enviar informação pela porta serie. Mas muitas das vezes é util não só enviar como também receber. E por esse motivo aqui segue mais uma "achega". Todo o código fonte é disponibilizado ali mais abaixo.
O objectivo desta vez é fazer uma coisa com este aspecto:
Para usar o programa basta definir a porta COM e a baud rate. A janela do programa pode ser redimensionada ao gosto do utilizador para melhor visualização das mensagens a enviar/receber.
O caracter de terminação da comunicação série pode ser definido no código que disponibilizo através da seguinte linha:
const string TERM_CHAR = "\n";
Bastando substituir o \n por outro caracter à escolha.
Tendo em conta o código utilizado no Talk to Arduino, a única novidade é a existência de uma thread dedicada à recepção de mensagens.
Mensagens seguidas de "S:" correspondem a mensagens enviadas e, analogamente, mensagens seguidas de "R:" correspondem a mensagens recebidas.
O código enviado para o Arduino é apenas um exemplo. Neste caso o objectivo foi receber strings e dar-lhe o devido tratamento para que a informação transferida tivesse um aspceto mais human-friendly (e menos machine-friendly). O protocolo usado poderá ser completamente diferente e mais optimizado.
#define BAUD_RATE 9600
#define BUF_LEN 128
#define TERM_CHAR '\n'
void setup(){
Serial.begin(BAUD_RATE);
}
int i;
char incomingChar, buf[BUF_LEN];
void loop(){
//clean buffer
memset(buf,'\0',BUF_LEN); i = 0;
// read incoming message
while(Serial.available()){
incomingChar = (char) Serial.read();
if(incomingChar != TERM_CHAR && i != BUF_LEN)
buf[i++] = incomingChar;
else
break;
delay(1); // wait for another byte
}
// your protocol goes here
if(strcmp(buf,"Hello Arduino!") == 0)
Send("Hello PC!");
else
if(strcmp(buf,"How are you?") == 0)
Send("I'm reeeally fine.");
}
void Send(char *msg){
Serial.print(msg);
Serial.print(TERM_CHAR);
}
Posto isto... Enjoy!
Qualquer dúvida ou sugestão fica à vontade.
SerialTalk C# source code
SerialTalk.pde
1 comentários:
Hi,
I am using Visual Studio 2010 and it is showing this error please help me...
Error 1 Unable to find manifest signing certificate in the certificate store. Serial Talk
Please help.
My email address is nikunj2512@gmail.com
Enviar um comentário