Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Manejo de Puerto Serie/Serial/COM/DB9 (https://www.clubdelphi.com/foros/showthread.php?t=54654)

pai_delpher 26-03-2008 16:31:17

Manejo de Puerto Serie/Serial/COM/DB9
 
Hola amigos, necesito sus conocimientos para poder realizar una aplicación que maneje puerto COM.

Ya leí varios post sobre este mismo tema, el problema es que no logro leer los datos que necesito del puerto (aclaro que quiero leer datos de un equipo autoanalizador de laboratorios - un equipo que toma muestras sanguíneas y realiza exámenes).
El problema es que creo que necesito activar el ACK/NACK del puerto COM1.


Ya probé con los componentes que recomiendan y con otros que encontre yo, si pudieran mandarme un ejemplo de como leer y escribir el puerto y como activar el ACK/NACK (Acknowledge), me sería de gran utilidad.

MUCHAS GRACIAS.

PD: Me conformo con algún tip para poder hacer la aplicación... ha... trabajo con Delphi 7 y tengo los componentes: APRO (adpcomport), CPortLib (ComPort) y el del Grupo Albor (PuertoSerie).

egostar 26-03-2008 16:43:36

Hola, bienvenido al club, te invito a leer nuestra guia de estilo.

Referente a tu problema tengo una pregunta, tu sistema es el que tiene que enviar los caracteres ACK y NAK?

Si es así, es porque el equipo te está solicitando confirmación de alguna cadena que te está enviando.
  1. Necesitas recibir la cadena completa que te envía el equipo de laboratorio.
  2. Verificar que la cadena fué recibida correctamente, tal vez te está mandando algún caracter de comprobación (Check Sum)
  3. Si el carater (Check Sum) es correcto debes enviar ACK (#6) en caso contrario debes enviar NAK (#21)

Salud OS

pai_delpher 26-03-2008 18:01:17

Gracias por responder egostar, ya leí la guía de estilo.

Con respecto al programa:

1. Si, lo que recibo del equipo es algo parecido a esto (formato ASTM):

1H|\^&|||NOVA^pHOx Plus^I00.05^12343210||||||||1|20000127112100F4
2P|1||123CD
3O|1|12|1008||||||||||||Arterial||||||||||F85
4C|1|I|35 SO2% Dependency|IFA
5C|2|I|45 Hb Dependency|IAE
6R|1|^^^pH^M|7.262|||||F||97|20000127111700||123432108D
7R|2|^^^PCO2^M|70.0|mmHg||||F||97|20000127111700||123432103A
0R|3|^^^PO2^M|64.5|mmHg||||F||97|20000127111700||12343210F9
1R|4|^^^Hb^M||mmol/L||||F||97|20000127111700||12343210AE

2. Quizás si, realmente no tengo la certeza. Mi basamento para creer que se necesita Acknowledge está en que probé la comunicación con una interfaz hecha por un tercero a la cual le envié datos, pero solo los recibió cuando la configuración del COM poseía Flow Control: Hardware y ACK/NACK activado.

3. Con respecto a este punto, mi idea era que pudieran aclararme como realizar esta técnica. También que me pudieran recomendar que componentes usar o alguna forma nativa y su modo de uso y configuración (sé que estoy pidiendo demasiado, pero es que estoy un poco atrasado).

Te agradezco tu rápida contestación. Espero puedas ayudarme.

Saludos!!!.

egostar 26-03-2008 18:32:02

Bueno, por lo que he leído, esto "puede" ser mas fácil de lo que pense.

El equipo te envia la primer linea que comienza con un encabezado 1H|

Cita:

1H|\^&|||NOVA^pHOx Plus^I00.05^12343210||||||||1|20000127112100F4
Cuando recibas esta linea debes de enviar al equipo la señal ACK y en ese momento el equipo te va a mandar toda la información sin esperar mas nada..

Para que pruebes esto sin meterte ahora con delphi (por el momento) te recomiendo que hagas una pequeña prueba.
  1. Abre hiperterminal y configura el puerto con la velocidad, paridad, bits de datos y bit de stop adecuados. Puedes asignar el control de flujo a hardware.
  2. En el momento que recibas la primer linea que te envia el equipo presiona la tecla Control y la tecla F (ACK) y deberás recibir toda la información adicional.

Dejanos saber que pasa....

Salud OS

pai_delpher 27-03-2008 17:43:47

Bueno egostar, hice lo que me dijiste pero no obtuve ningún resultado. De hecho, si mal no entiendo, el HyperTerminal no es para conexiones vía modem??...

Estuve haciendo algunas pruebas mas y lo único que recibo son caracteres "f" y "´", realmente no creo que sea tan difícil obtener datos de estos equipos.

Espero puedan ayudarme, seguiré intentando e investigando.

Saludos.

egostar 27-03-2008 17:47:26

Cita:

Empezado por pai_delpher (Mensaje 275661)
Bueno egostar, hice lo que me dijiste pero no obtuve ningún resultado. De hecho, si mal no entiendo, el HyperTerminal no es para conexiones vía modem??...

No, no solo para modems, tambien para puertos seriales, de hecho tu seleccionas el puerto al que quieres conectarte.

Cita:

Empezado por pai_delpher (Mensaje 275661)
Estuve haciendo algunas pruebas mas y lo único que recibo son caracteres "f" y "´", realmente no creo que sea tan difícil obtener datos de estos equipos.

Esto me suena a un problema con los parámetros de configuración, tales como Velocidad, Bits de Datos, Bit de Stop y Paridad, verifica que sean los correctos.

Salud OS


La franja horaria es GMT +2. Ahora son las 20:46:29.

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