I have the following code in Arduino, to read de data from labview (string with "LG:") and this program not read the values in Serial.print.
My objective is when i put the button ("LG:") in labview the code enters in (if string=="LG") the serial monitor prints de value.
Can help me?
Quando envio a string "DG" do labview, significa desliga ele não pára a execução do programa pois eu coloquei no programa do arduino, um fflush.
Como poderei fazer isso?
Abraço
Você quer que quando digite DG o programa pare, é isso? Quer desligar o Arduino?
A título de informação, Serial.flush() só serve para que o código fique parado naquela linha enquanto todos os dados não foram enviados pelo microcontrolador. Ou seja, em seu código ele não está servindo de nada.
É isso que eu pretendo. Quando digito "DG" no labview o programa do arduino volta para o início e fica à espera de que eu ligue no "LG" através do labview, isto é, percorre todos os if's.
A primeira coisa que você tem que definir é o comportamento desejado do seu programa. A parte de enviar "LG" e ele fazer uma ação está entendida, mas e se digitar "LG" de novo antes de digitar "DG", o que você quer que aconteça, nada? Ou para mostrar o resultado novamente precisa digitar antes o "DG"?
O objectivo é que quando faço "LG" ele coloque através do Serial.print o valor no ecrã. Quando carrego em "DG" não faz a leitura do sensor na placa arduino, isto é, interrompe a leitura de valores.
A parte de enviar "LG" e ele fazer uma ação está entendida, mas e se digitar "LG" de novo antes de digitar "DG", o que você quer que aconteça, nada?
R: Ele continua a ler o valor do sensor.
Ou para mostrar o resultado novamente precisa digitar antes o "DG"?
R: Não, com isto ele pára a leitura do sensor.
unsigned char display_data = 0;
void setup() {
Serial.begin(9600);
}
unsigned long tempo = 0;
void loop(){
if (tempo - millis() > 1000) {
if (display_data == 1) {
Serial.println("Dados");
//adiciona mais prints aqui...
}
tempo = millis();//renova o millis
}
while (Serial.available () >=2) { //existem dados...
char dados[2];
//isto não é ideal... mas experimenta.
dados[0] = Serial.read();
dados[1] = Serial.read();
if (dados[1] == 'G') { //estamos bem lancados...
if (dados[0] == 'L') display_data = 1;
if (dados[0] == 'D') display_data = 0;
}
}
Basicamente, se enviares LG o arduino comeca a enviar os dados que meteres ali de segundo a segundo pela porta série e se enviares DG o Arduino para de o fazer.