Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Delphi y ComPort (https://www.clubdelphi.com/foros/showthread.php?t=94807)

juggern 28-07-2020 09:05:56

Delphi y ComPort
 
Buenos días,

Tengo que conectar una báscula a mi programa delphi para recibir el peso cada vez que pesen.
He estado buscando y he visto bastante información pero no me aclaro mucho ni con los COM ni con lo que tengo que hacer, es la primera vez que tengo que hacer esto.

Verán, he conseguido simular 2 puertos COM con el programa Virtual Serial Port Kit, que en teoría conecta un COM con otro.
Por otro lado, estoy usando el programa Hercules para probar a mandar datos. Conecta bien con uno de esos puertos.
Bien, me he creado un programita en delphi para probar. Uso los componentes TComPort. Con el componente parece que conecta bien con el puerto que elijo. Hasta aquí he llegado.

No me queda claro lo siguiente. Si yo conecto por ejemplo al COM3 con mi programa, no puedo conectar con Hercules a ese puerto para mandarle datos. ¿Como funciona exactamente?
Yo lo que quiero es conectar en mi programa y desde el Hercules mandarle datos para verificar que los recibo.

También he probado con una báscula que programó en Delphi el compañero Seoane pero creo que tengo el mismo problema.

No me aclaro mucho.

Gracias

Un saludo

Casimiro Notevi 28-07-2020 09:26:17

Echa un vistazo a los enlaces del final de página, abajo del todo.

juggern 28-07-2020 09:34:32

Hola Casimiro,

He estado buscando por aquí y por varios sitios y vi bastantes ejemplos, pero en mi caso yo creo que mas bien es de comprensión, es decir, como probar.
Por ejemplo, yo en mi programa conecto al COM1 y quiero mandarle datos con el programa Hercules, para digamos simular la balanza, es decir, mandar datos desde ahí y ver que en el programa los recibo, pero claro, si conecto desde el programa al COM1, cuando conecto a ese COM desde el Hercules para mandar datos, me dice que el puerto está en uso, cosa lógica por cierto.

También tengo la báscula que creó Seoane, que iba a usarla para probar, abrirla y pesar y ver si lo recibo en mi programa pero el problema es el mismo.

Entonces, no se bien como hacer las pruebas, creo que algo no estoy entendiendo bien.

Seguiré buscando a ver.

Un saludo

Casimiro Notevi 28-07-2020 11:23:14

Pues usa uno u otro, pero no lo dos a la vez.

juggern 28-07-2020 11:41:52

1 Archivos Adjunto(s)
He hecho algún avance.

Con el Virtual Serial Port Kit, he emulado 2 puertos, el 3 y el 4.
He creado un programa usando el ComPort en el que me conecto al puerto 3 o al 4 según elija y con un botón mando 'hola'.

Con el Hercules me conecto al com restante. Es decir, con el programa me conecto al 3 y con el hercules al 4 por ejemplo.
Mando la cadena y el Hercules la recibe, pero si envío cadena desde el Hercules, el programa no hace nada. Estoy intentando capturarlo en el evento RxChar

Un saludo

juggern 28-07-2020 11:43:12

Cita:

Empezado por Casimiro Notevi (Mensaje 538112)
Pues usa uno u otro, pero no lo dos a la vez.

Eso es lo que creo que no estoy entendiendo bien el concepto. Si la báscula se conecta al com1, en el programa debería de conectarme al com1 para recibir y mandar los datos a la báscula no?

Gracias

Un saludo

Casimiro Notevi 28-07-2020 11:52:23

Primero de todo debes conocer el protocolo que está usando la balanza.
Después sigue los pasos de, por ejemplo, aquí.

juggern 28-07-2020 12:17:43

Hola de nuevo,

Esa página de Seoane es la que he estado revisando y es el simulador que me he bajado. Estoy intentando recibir directamente usando esa porque el protocolo que me han dicho es el mismo, el básico.

He probado a mandarle el $ pero no consigo recibir nada de la báscula. El $ entiendo que se manda bien, porque si activo el Hercules poniendo el puerto que le asigno luego a la balanza, ahí si que veo que recibe el $ con lo que lo que yo creo que estoy haciendo mal es la recepción del dato, no el envío.

Muchas Gracias

Un saludo

Casimiro Notevi 28-07-2020 12:21:20

¿Has probado su programa de ejemplo?
https://delphi.jmrds.com/sites/delph...sim_delphi.zip

juggern 28-07-2020 12:24:15

Si, lo tengo bajado y ejecutado, de ahí es de donde estoy intentando recuperar el peso, pero no lo consigo.

Casimiro Notevi 28-07-2020 12:55:39

Pues no sé, yo lo he probado con una balanza que tengo aquí y funciona perfectamente.

juggern 28-07-2020 13:27:55

Para el envío y recepción tengo esto

Código Delphi [-]
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
  str: string;
begin
  ComPort1.ReadStr(Str, Count);
  ShowMessage(str);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ComPort1.WriteStr('$');
end;

El botón escribe bien en el hércules con lo que entiendo que en la báscula también debería, pero no recibo nada. Al mandar el $ la báscula me debe de estar devolviendo el peso pero no lo recibo bien, algo estoy haciendo mal.

Lo tengo hecho con un botón para probar pero cuando lo consiga, lo que haré es un timer que esté enviando $ cada X tiempo.

juggern 28-07-2020 16:09:21

Hola,

Sigo con mis pruebas y definitivamente es algo que no estoy programando bien en la recepción.

Como recibes tu el dato de la báscula de Seoane?

Gracias

Un saludo

Casimiro Notevi 28-07-2020 16:36:00

Pero descarga el ejemplo de seoane, ábrelo y lo verás :)

ElKurgan 29-07-2020 16:37:15

Pero amigo Juggern, ¿has leído los comentarios además del artículo?

Me parece ver bien claro que no puedes usar el mismo puerto en los dos dispositivos. Si tu programa se conecta al COM1 para recibir los datos, entonces los deberás enviar desde otro sitio, puerto virtual o lo que sea. En los comentarios habla de crear puertos virtuales COM4 o COM5 para simular el otro extremo de la conexión del puerto serie y a probar

Hace tiempo que hice pruebas con ese programa y funcionaba muy bien. Lamentablemente ahora no tengo Delphi a mano y no te puedo indicar más.

Saludos

juggern 29-07-2020 19:54:11

Gracias a todos por los comentarios.
Ya encontré el problema, el componente, en su día debió de quedar mal instalado por algún motivo. Lo he quitado y vuelto a instalar y ahora funciona perfecto.

Muchas gracias

ElKurgan 30-07-2020 10:52:50

Gracias por compartir la solución

Saludos


La franja horaria es GMT +2. Ahora son las 23:52:16.

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