FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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:
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:
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! |
#2
|
||||
|
||||
En estos casos siempre recomiendo realizar la lectura primero con el HyperTerminal de windows.
De esta manera descartas problemas con librerías y te permite realizar diferentes configuraciones del puerto (velocidad,...). Una vez que con el HyperTerminal leas los valores de forma correcta, puedes pasar a Delphi. Si buscas en los foros encontrarás hilos que hablan de cómo trabajar con HT y cómo configurarlo, si no lo has hecho nunca.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 06-08-2021 a las 10:00:36. |
#3
|
|||
|
|||
Cita:
Muchas Gracias por tu respuesta Neftali, he probado la lectura desde la HyperTerminal y lee y imprime correctamente los datos, igual que desde el terminal de arduino. Definitivamente y por la forma de imprimir en el Memo de Delphi, deduzco que la lectura de delphi corre más rápida que el envío desde el comport, por eso imprime las string a trozos. sinceramente me encuentro algo bloqueado, alguna sugerencia? |
#4
|
||||
|
||||
Una vez que sabes que desde HyperTerminal la lectura es correcta y por lo tanto tienes los parámetros de confiiguración, ahora puedes probar con la misma configuración dede Delphi, e incluso hacer la prueba con varios componentes, no sea que el que estás probando tenga algun bug.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
|||
|
|||
Buenas, como me dijiste probé con la HyperTerminal y configure las mismas propiedades en delphi.
para comprobar que no fuera un defecto del componente he realizado una prueba simplemente haciendo un ping en bucle cada 1 seg a la arduino uno y a su vez escribiendo un texto en la terminal, en la hyperterminal funciona también correctamente, pero Delphi sigue comiéndose caracteres. los parámetros que utilizo son: *COM3 *9600 Bits x segundo *8 bits de datos *ninguna paridad *1 bits de parada *ningún control de flujo crees que hay algún otro parámetro que no este teniendo en cuenta? como explique en el primer post cuando aumento los bits x segundo (BaudRates), poniéndolos al valor máximo, parece que mejora, pero sigue sin leer del todo correctamente. según parece, con la configuración que te he detallado, cuando el componente envía una string "hello world", Delphi imprime sin acabar de recibir la cadena completa y a su vez acumula el resto de caracteres en la memoria para la siguiente impresión, de esta forma imprime el texto así: "hell o wor ld" es decir, la función ComPort1RxChar se ejecuta nuevamente sin finalizar la lectura, alguna idea de como poder corregir este procedimiento? también podría estar relacionado con el buffer, actualmente tengo 1024 inputsize y 1024 outputsize.. |
#6
|
|||
|
|||
Cita:
Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
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 |
|