Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-08-2021
Franciscogc1988 Franciscogc1988 is offline
Registrado
 
Registrado: ago 2021
Posts: 6
Poder: 0
Franciscogc1988 Va por buen camino
Exclamation ComPort RxChar, Delphi vs Arduino (byte de lectura)

Buenas noches,
estoy programando un modulo MPU6050 para calcular los ángulos de giro en e pilotaje de una avión RC,

Ya tengo el código generado en Arduino y me devuelve correctamente en el monitor serie,
respecto a Delphi, estoy intentando leer los valores a través de las librerías comport y imprimir en un memo, el problema es que no recibo correctamente la cadena de texto, se come caracteres.

he estado indagando y debe tener alguna relacion con la velocidad de lectura de los bytes, al aumentar los BaudRate, parece que mejora, pero aun poniéndolos al máximo, sigue generando problemas.

he intentado también ponerle un sleep(70) después de la impresión en el memo, para darle tiempo a leer la cadena entera al buffer, pero sigue sin ser la solución definitiva., alguna sugerencia?

Codigo arduino:
Cita:
#include <I2Cdev.h>
#include <helper_3dmath.h>
#include <MPU6050.h>
#include <Wire.h>

const int mpuAddress = 0x68; // Puede ser 0x68 o 0x69
MPU6050 mpu(mpuAddress);
int ax, ay, az;
int gx, gy, gz;
void setup()
{
Serial.begin(9600);
Wire.begin();
mpu.initialize();
Serial.println(mpu.testConnection() ? F("IMU iniciado correctamente") : F("Error al iniciar IMU"));
}
void loop()
{
// Leer las aceleraciones
mpu.getAcceleration(&ax, &ay, &az);
//Calcular los angulos de inclinacion
float accel_ang_x = atan(ax / sqrt(pow(ay, 2) + pow(az, 2)))*(180.0 / 3.14);
float accel_ang_y = atan(ay / sqrt(pow(ax, 2) + pow(az, 2)))*(180.0 / 3.14);
//Mostrar resultados
Serial.print(("X:"));
Serial.print(accel_ang_x);
Serial.print(("/"));
Serial.print(("Y:"));
Serial.println(accel_ang_y);
delay(100);
}
ejemplo resultado monitor serie arduino:
X:32.60/Y:-6.03
X:32.75/Y:-6.18
X:32.63/Y:-6.15
X:32.81/Y:-5.93


Codigo Delphi:
Cita:
procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.Port:='COM3';
comport1.BaudRate:=br9600;
try
comport1.Open;
if comport1.Connected then
begin
memo1.Text:=memo1.Text+'conexion serial establecida con exito('+comport1.Port+')';
memo1.Lines.Add('');
end
else
begin
memo1.Text:=memo1.Text+'ERROR en conexion serial';
end;
finally
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
comport1.Close;
memo1.Text:=memo1.Text+'conexion cerrada';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
comport1.ShowSetupDialog;
end;

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
// Recibe mensajes desde Arduino.
ComPort1.ReadStr(Str, comport1.InputCount);
sleep(70);
// Muestra los mensaj,es en pantalla.
MEMO1.Lines.Add( Str );
end;
ejemplo resultado memo Delphi:

X:32
.88/Y:-6.01

X:3
2.76/Y:-5.85

X
:32.80/Y:-6.14

X:32
.69/Y:-6.28

X:
32.89/Y:-5.91




Agradecido x la ayuda!
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delphi y Arduino REHome OOP 3 14-07-2017 14:14:42
Kit Arduino para Delphi K-ba ASM y Microcontroladores 9 25-03-2017 16:58:01
Cual es el equivalente de C# byte[] buffer = new byte[256]; para delphi? yatzenco Varios 1 20-01-2016 17:56:34
Leer byte a byte un fichero binario NPIdea C++ Builder 2 22-03-2012 16:36:34
ADO: Byte nulo (byte #0) en un string Pandre Conexión con bases de datos 0 02-04-2004 20:18:37


La franja horaria es GMT +2. Ahora son las 16:49:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi