Ver Mensaje Individual
  #9  
Antiguo 11-08-2021
Franciscogc1988 Franciscogc1988 is offline
Registrado
 
Registrado: ago 2021
Posts: 6
Reputación: 0
Franciscogc1988 Va por buen camino
La solución temporal que realizado ha sido agregar un condicional de escritura y gestionar la petición de los datos desde un timer en delphi,

de esta forma cuando delphi envia un "ok" al puerto COM arduino envia los angulos del giroscopio:

codigo arduino
Cita:
void loop(){

while (Serial.available() > 0){
caracter = Serial.read();
comando.concat(caracter);
delay(10);
}

// Si los carácteres es recibido y verdadero.
if (comando.equals("ok") == true) {
Serial.print (accel_ang_x);
Serial.print("/");
Serial.print(accel_ang_y);
}

// Limpiamos la cadena para volver a recibir el siguiente comando.
comando = "";
}
desde delphi, el timer envia un "ok" al puerto COM, y lee los datos con el RXChar para guardarlos en un Label, con Label1:=Label1+srt,

Codigo Delphi:
Cita:
procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.Open;
if timer1.Enabled=false then
begin
timer1.Enabled:=true;
end
else
begin
timer1.Enabled:=false;
end;
end;

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
// Recibe mensajes desde Arduino.
ComPort1.ReadStr(Str, Count);
// Muestra los mensajes en pantalla.
label1.Text:=label1.Text+str;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
comport1.Port:='COM3';
comport1.BaudRate:=br115200;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comport1.Close;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

label1.text:='';
ComPort1.WriteStr('ok'); // Envía el comando "ok" al puerto.

end;

Gracias a todos x los consejos
Responder Con Cita