Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Abrir una Cerradura Electrica DelphiXE TComPort (https://www.clubdelphi.com/foros/showthread.php?t=91113)

pnsd_89 14-11-2016 13:48:56

Abrir una Cerradura Electrica DelphiXE TComPort
 
Buenos Días, tardes o noches según en que parte del mundo se encuentren.
Estoy desarrollando un programa "Experimento" donde trato de abrir una cerradura eléctrica.
Estoy utilizando Delphi XE y el componente TCOMPORT para poder enviar una señal a un hardware (el cual tiene un rele) el cual uso como un "interruptor" para la cerradura eléctrica.
El caso es que con el siguiente código

Código Delphi [-]
  ComPort1.Open;
  ComPort1.WriteStr('A');
  ComPort1.Open;

donde ComPort1 es un componente TComPort, el sistema envía una señal pero no la mantiene y la tranca hace un ruido pero no llega a abrir.
Hay alguna manera de mantener constante esa señal, puesto que si hago...

Código Delphi [-]
  ComPort1.Open;
   for i := 1 to  100 do
  ComPort1.WriteStr('A');
  ComPort1.Open;
la cerradura hacen como 4 "patadas" o ruidos rapidos pero no la abre...
Creo que mi problema esta en que la señal positiva no se mantiene en el puerto serial... hay forma de hacerlo?

Desde ya muchas gracias.:eek:

ahh me olvidaba la cerradura es una genérica(china de 12 volt) no se que mas decir sobre la cerradura jaja..

Neftali [Germán.Estévez] 14-11-2016 15:45:03

¿Y no será el hardware el que tiene que mantener la señal?
Deberías revisar las especificaciones del dispositivo, para ver exactamente qué debes enviar.

pnsd_89 14-11-2016 20:56:13

Cita:

Empezado por Neftali (Mensaje 510726)
¿Y no será el hardware el que tiene que mantener la señal?
Deberías revisar las especificaciones del dispositivo, para ver exactamente qué debes enviar.

Hola Neftali, tanto tiempo!
La verdad que el dispositivo lo fabrico un amigo Ing. Electronico, es una placa super sencilla que tiene un rele que va conectada a la tranca electrica, hoy estuve investigando mas y pude ver que el Comport.WriteStr('A'); envia la señal de esos bits y muere, voy a cambiarlo dentro de unas horas por:
Código Delphi [-]
Comport1.open;
Comport1.SetRTS(true); //Segun la documentacion de TComport activa y envia una señal continua +15v al RTS( el pin 7 en un RS232) 
sleep(5000);
Comport1.SetRTS(true); // señal -15v

Lo acabo de probar con un tester(multimetro) y al parecer funcionara...
Ampliaremos luego de la prueba con la tranca ^\||/

pnsd_89 15-11-2016 12:41:56

en el codigo me olvide de cambiar a false deberia ser asi
Código Delphi [-]
Comport1.open;
Comport1.SetRTS(true); //Segun la documentacion de TComport activa y envia una señal continua +15v al RTS( el pin 7 en un RS232) 
sleep(5000);
Comport1.SetRTS(false); // señal -15v

Casimiro Notevi 15-11-2016 12:56:05

¿Necesita 5 segundos?

pnsd_89 15-11-2016 14:40:54

Cita:

Empezado por Casimiro Notevi (Mensaje 510781)
¿Necesita 5 segundos?

Don Casimiro! pensé que seria un comentario con el link de las normas de uso del foro jaja ;)
Ayer no pude ir a modificar la placa, hoy tengo pensado hacerlo.
Los 5 segundos fue para poder probar si el voltaje se mantenia arriba en True, con un multimetro y fue asi, el colocar la agujas del multimetro y colocarlos sobre los pines del serial me llevaba 5 seg. jaja. pero hoy de noche podre ver si son necesarios realmente esos 5 seg.
Lo que hace el programa es que en una pc el usuario coloca su codigo, y si es correcto habilita la cerradura que esta a unos cuantos pasos de donde el usuario ingresa su codigo. :)

pnsd_89 16-11-2016 03:08:59

bingooooooooooo!!!!
 
fumciono!!!!!!!!:-|!!!:-|!!!:-|!!!:-|
el codigo final es este
Código Delphi [-]
            if activarTranca then
           begin
           // Para activar tranca
                ComPort.Port := sTrancaPort;//variable que lee de un .ini contiene COM1 o el puerto que fuere
                ComPort.Open;
                ComPort.SetRTS(True);
                Sleep(3000);// Casimiro este quedo en 3 segundos nada mas jeje
                ComPort.SetRTS(false);
                ComPort.Close;
                activarTranca := false;
           end;

Casimiro Notevi 16-11-2016 10:44:49

Estupendo.
¿Has probado con menos tiempo?

Neftali [Germán.Estévez] 16-11-2016 11:27:50

Cita:

Empezado por Casimiro Notevi (Mensaje 510813)
¿Has probado con menos tiempo?

Yo he pensado lo mismo.
3 sg. me parece demasiado tiempo. Tal vez algo entre 200 ms. y 500 ms. parecería algo más lógico (de todas formas eso debería estar en las especificaciones).

Casimiro Notevi 16-11-2016 11:32:33

Cita:

Empezado por Neftali (Mensaje 510816)
Yo he pensado lo mismo.
3 sg. me parece demasiado tiempo. Tal vez algo entre 200 ms. y 500 ms. parecería algo más lógico (de todas formas eso debería estar en las especificaciones).

Hace tiempo programé una de esas y necesitaba entre 100 y 200 ms. Con 100, a veces no le daba tiempo, así que la dejé en 200 y siempre se abría.
Lo mismo la de este caso necesita más tiempo.

pnsd_89 16-11-2016 12:11:49

Cita:

Empezado por Casimiro Notevi (Mensaje 510813)
Estupendo.
¿Has probado con menos tiempo?

Si.. y la cerradura china que uso (creo que es por el mecanismo que usa) no mantiene abierta el tiempo suficiente

pnsd_89 16-11-2016 12:14:29

Cita:

Empezado por Casimiro Notevi (Mensaje 510817)
Hace tiempo programé una de esas y necesitaba entre 100 y 200 ms. Con 100, a veces no le daba tiempo, así que la dejé en 200 y siempre se abría.
Lo mismo la de este caso necesita más tiempo.

Lo que pasa es que la cerradura que tengo es una generica, y de origen chino... por ende sus especificaciones estan en chino... por fortuna pude encontrar entre sus tantas letras chinas un 12v.
Ahora la placa que uso lo fabrico un amigo Ing. en electronica y fue algo tipo experimental, osea ahora debemos hacer las especificaciones de ese circuito.

Neftali [Germán.Estévez] 16-11-2016 12:26:03

Cita:

Empezado por pnsd_89 (Mensaje 510819)
Lo que pasa es que la cerradura que tengo es una generica, y de origen chino... por ende sus especificaciones estan en chino...

Aun has sacado algo en claro...
:D:D:D


La franja horaria es GMT +2. Ahora son las 09:29:58.

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