Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Leer el puerto serial de un conmutador KX-TA308 con tpapro (https://www.clubdelphi.com/foros/showthread.php?t=58338)

richy08 16-07-2008 23:23:18

Leer el puerto serial de un conmutador KX-TA308 con tpapro
 
:oBuenas tardes compañeros despues de leer los manuales y algunos post del foro sigo sin poder leer el puerto serial del conmutador estoy utilizando el ApdDataPacket por que segun es el que en otros post es el mas recomendable ya revise la info del conmutador y a l oque parece solo tiene cadena de inicio que es CR+LF Pero no entiendo como pasarle ese parametro al componente y los mas complicado com estar capturando los paquetes queme manda el conmutador y dividirlos en campos legibles cualquiera que tenga una idea muchas gracias de antemano.

donald shimoda 16-07-2008 23:31:09

Cita:

Empezado por richy08 (Mensaje 300911)
:oBuenas tardes compañeros despues de leer los manuales y algunos post del foro sigo sin poder leer el puerto serial del conmutador estoy utilizando el ApdDataPacket por que segun es el que en otros post es el mas recomendable ya revise la info del conmutador y a l oque parece solo tiene cadena de inicio que es CR+LF Pero no entiendo como pasarle ese parametro al componente y los mas complicado com estar capturando los paquetes queme manda el conmutador y dividirlos en campos legibles cualquiera que tenga una idea muchas gracias de antemano.

Si la memoria no me falla los puertos DB25 de las centrales panasonics tienen dos modos de operación uno "legible" para salida por impresora directo y otro de comandos, donde pueden interactuar a través del puerto serie. Como no tengo el manual a mano (lo deje en Buenos Aires :cool:) Consulta el manual para cambiarle el modo a la central telefónica.

Saludos

egostar 16-07-2008 23:34:42

Cita:

Empezado por richy08 (Mensaje 300911)
:oBuenas tardes compañeros despues de leer los manuales y algunos post del foro sigo sin poder leer el puerto serial del conmutador estoy utilizando el ApdDataPacket por que segun es el que en otros post es el mas recomendable ya revise la info del conmutador y a l oque parece solo tiene cadena de inicio que es CR+LF Pero no entiendo como pasarle ese parametro al componente y los mas complicado com estar capturando los paquetes queme manda el conmutador y dividirlos en campos legibles cualquiera que tenga una idea muchas gracias de antemano.

Hola

Hay varias formas

1. Usar un ApdDataPacket configurando
  • la propiedad EndString con los caracteres CR y LF
  • la propiedad StartCond con el valor scAnyData
  • la propiedad endCond ecString = True
Usas el evento OnStringPacket para recibir la cadena desde la variable Data del mismo evento.

2. Usar los eventos OnTriggerAvail y OnTriggerData del componente ApdComPort.

Busca en el manual del componente el uso de estos eventos, en realidad es muy fácil.

Salud OS

PD, Cuando hagas referencia a un hilo anterior y la pregunta sea sobre la misma situación, lo adecuado es continuar con el hilo en lugar de crear uno nuevo.

richy08 16-07-2008 23:37:09

ok gracias por responder le echare otra machetiada al manual haber si ya se me ilumina la cabeza :p:p, otra duda como escribiria CR y LF asi tal cual ??

donald shimoda 16-07-2008 23:41:03

Cita:

Empezado por richy08 (Mensaje 300921)
ok gracias por responder le echare otra machetiada al manual haber si ya se me ilumina la cabeza :p:p, otra duda como escribiria CR y LF asi tal cual ??

loquesea+#13+#10 (de memoria, prueba a la inversa si eso no camina).

Ah, y prueba synaserial, me parece que de las librerias seriales es la mas estable aunque tengas que hacerla multitarea a mano.

Saludos

richy08 16-07-2008 23:43:14

:Dmuchas gracias donald lo probare a ver que tal

egostar 16-07-2008 23:59:01

Cita:

Empezado por donald shimoda (Mensaje 300923)
loquesea+#13+#10 (de memoria, prueba a la inversa si eso no camina).

Ah, y prueba synaserial, me parece que de las librerias seriales es la mas estable aunque tengas que hacerla multitarea a mano.

Saludos

Seria bueno que colocaras el enlace a ese componente que mencionas, siempre es bueno conocer cosas mas estables aunque se tengan que hacer cosas a mano :).

Salud OS

FGarcia 17-07-2008 00:23:02

¿cosas a mano? ¿ese no seria un hilo pa'la taberna?:D:D:D:D

egostar 17-07-2008 00:25:51

Cita:

Empezado por FGarcia (Mensaje 300929)
¿cosas a mano? ¿ese no seria un hilo pa'la taberna?:D:D:D:D

jejeje, pues en que estas pensando amigo [FGarcia]

Salud OS

donald shimoda 17-07-2008 00:34:21

Cita:

Empezado por egostar (Mensaje 300926)
Seria bueno que colocaras el enlace a ese componente que mencionas, siempre es bueno conocer cosas mas estables aunque se tengan que hacer cosas a mano :).
Salud OS

Por supuesto amigo, es la web de synapse , la librería se llama synaser y se puede descargar aqui .

Digo librería porque no es un componente, es decir que no podemos pegarlo en un formulario. Hay que utilizarlo a la Turbo pascal, para que se entienda. ;)

Aunque eso puede que asuste les garantizo que es un placer utilizarlo.

Saludo.

egostar 17-07-2008 00:50:36

Cita:

Empezado por donald shimoda (Mensaje 300933)
Por supuesto amigo, es la web de synapse , la librería se llama synaser y se puede descargar aqui .

Digo librería porque no es un componente, es decir que no podemos pegarlo en un formulario. Hay que utilizarlo a la Turbo pascal, para que se entienda. ;)

Aunque eso puede que asuste les garantizo que es un placer utilizarlo.

Saludo.

Ah muy bien, alguna vez use una biblioteca llamada WSC que compre ya hace muchos años, me imagino que es algo similar, ya le daré una vista a ver que tal.

Salud OS

richy08 17-07-2008 18:18:08

buenos dias sigo intentando leer las cadenas del puerto serial :confused: pero no lo logro hacer se que ahi conexion por que con un ejemplo que trae si lee lo que el conmutador manda, estoy utilizando un ApdComPort1 que lo configure de igual forma que el ejemplo, y un ApdComPort1 que le puse los parametros que me indicaron pero nada intento imprimir los datos recuperandolos de la variable DATA alguna sugerencia gracias.:(
Código Delphi [-]
procedure TForm1.ApdDataPacket1StringPacket(Sender: TObject; Data: String);
begin
showmessage(data);
end;

egostar 17-07-2008 18:49:53

me pregunto si ya lo has abierto?

Yo hago esto

Código Delphi [-]
begin
  ApdComPort1.ComNumber := 1; //Es el número de puerto serial que estas usando para recibir datos.
  ApdComPort1.Baud      := 1200;
  ApdComPort1.DataBits  := 8;
  ApdComPort1.Parity    := pNone;
  ApdComPort1.StopBits  := 1;
  ApdComPort1.Open      := True; //Tal vez esto no lo estas haciendo
end;
Como recomendación, cuando trabajas con puertos seriales yo siempre recomiendo que se use hiperterminal para estar seguros que los parámetros de comunicación y el número de puerto son los correctos, si recibes datos correctamente deberias de recibirlos en el programa.

Otra cosa que debes de verificar es la cadena de fin que estas configurando

CR+LF = #13#10 = ^M^J (Así lo vas a ver en el componente)
LF+CR = #10#13 = ^J^M

Salud OS

donald shimoda 17-07-2008 20:40:05

Cita:

Empezado por richy08 (Mensaje 301107)
buenos dias sigo intentando leer las cadenas del puerto serial :confused: pero no lo logro hacer se que ahi conexion por que con un ejemplo que trae si lee lo que el conmutador manda, estoy utilizando un ApdComPort1 que lo configure de igual forma que el ejemplo, y un ApdComPort1 que le puse los parametros que me indicaron pero nada intento imprimir los datos recuperandolos de la variable DATA alguna sugerencia gracias.:(
Código Delphi [-]procedure TForm1.ApdDataPacket1StringPacket(Sender: TObject; Data: String); begin showmessage(data); end;

Te paso un dato porque veo que no estas seguro de estar enviando y recibiendo.

Toma un conector db9 HEMBRA (el conector del puerto serie, lo consigues en cualquier casa de electrónica).

Le sueldas o puenteas o conectas los pines 2 y 3
Lo conectas al computador

Corres tu programa y envias algo. Si REALMENTE esta enviando vas a recibir LO MISMO que enviaste. Sino, a revisar programa, puerto serie, etc.

Saludos.

richy08 17-07-2008 21:46:20

Gracias donald y egostar por contestarme y perdon por la tardanza peor tuve unos problemillas con unas conecciones y hasta ahorita lo resolvi, de lo que me comentas donald si estoy seguro de recibir lo que memanda el conmutador lo que no logro hacer es capturarlos y separarlos por campos ahorita mismo voy a probar lo que me dice egostar haber que tal mil gracias por su tiempo.

richy08 17-07-2008 22:00:51

Cita:

Empezado por egostar (Mensaje 301113)
me pregunto si ya lo has abierto?

Yo hago esto


Código Delphi [-]begin
ApdComPort1.ComNumber := 1; //Es el número de puerto serial que estas usando para recibir datos.
ApdComPort1.Baud := 1200;
ApdComPort1.DataBits := 8;
ApdComPort1.Parity := pNone;
ApdComPort1.StopBits := 1;
ApdComPort1.Open := True; //Tal vez esto no lo estas haciendo
end;




Como recomendación, cuando trabajas con puertos seriales yo siempre recomiendo que se use hiperterminal para estar seguros que los parámetros de comunicación y el número de puerto son los correctos, si recibes datos correctamente deberias de recibirlos en el programa.

Otra cosa que debes de verificar es la cadena de fin que estas configurando

CR+LF = #13#10 = ^M^J (Así lo vas a ver en el componente)
LF+CR = #10#13 = ^J^M

Salud OS

:D por fin empiezo a recibir algo el error que tenia es que no entendia lo que era esto.
CR+LF = #13#10 = ^M^J (Así lo vas a ver en el componente)
LF+CR = #10#13 = ^J^M

seguire probando mil gracias

richy08 17-07-2008 22:25:34

ok ya recibo lo que me manda en el conmutador como un paquete
---------------------------
prueba
---------------------------
1/ 6/98 5:04AM 105 01 0453227797474 00:00'07" ....
---------------------------
OK
---------------------------

ahora la pregunta es me hacen falta datos sera configuracion dle conmutador o del componente:confused: y ahi alguna forma de dividirlos en campos o lo tengo que hacer analizando la cadena y separandolos manualmente:p

egostar 17-07-2008 23:22:57

Cita:

Empezado por richy08 (Mensaje 301177)
Código:

---------------------------
prueba
---------------------------
 1/ 6/98  5:04AM 105  01 0453227797474                        00:00'07" .... 
---------------------------
OK 
---------------------------

ahora la pregunta es me hacen falta datos sera configuracion dle conmutador o del componente:confused: y ahi alguna forma de dividirlos en campos o lo tengo que hacer analizando la cadena y separandolos manualmente:p

Que datos te faltan, por lo que veo estan los que normalmente envie el panasonic, fecha (le hacen falta los ceros y deben de configurar bien el conmutador para que tenga la fecha/hora actual :D), hora (formato AM/PM), Extensión, Troncal, Número marcado, Duración.

Esa cadena tendrás que segmentarla y actuar en consecuencia, necesitarás las tarifas telefonicas del Carrier que les de servicio de larga distancia, costos de celular local y nacional, servicio medido, Claves lada de todo el mundo :D etc, etc, no es poca cosa la que te hace falta :)

Salud OS

richy08 17-07-2008 23:31:25

Si tiens razon los datos estan completos :p hasta ahora echandole de nuevo un vistazo al manual me doy cuenta que asi es los datos estan completos y pues si me hace falta mucho por inplementar:D ahora la pregunta es lo tengo que segmentar manualmente o el componente ya me provee algo que pueda usar para separarlo gracias de antemano.

donald shimoda 17-07-2008 23:35:29

Cita:

Empezado por richy08 (Mensaje 301200)
Si tiens razon los datos estan completos :p hasta ahora echandole de nuevo un vistazo al manual me doy cuenta que asi es los datos estan completos y pues si me hace falta mucho por inplementar:D ahora la pregunta es lo tengo que segmentar manualmente o el componente ya me provee algo que pueda usar para separarlo gracias de antemano.

Aún sin conocer el componente, tomando como referencia el string que envías no veo como definir una regla que aplique correctamente.

Dado que la información tiene ancho fijo hazlo simple, un simple copy(str,inicio,fin) y a convertir al dato indicado.

Lo que no recuerdo es si manda cabeceras o algún dato en el medio.

Me acuerdo que yo hice hace muchoooooo tiempo un capturador de esta info, pero esos fuentes volaron, porque fue en la prehistoria. :p

Saludos.


La franja horaria es GMT +2. Ahora son las 23:13: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