Fecha actual Sab Jun 29, 2024 7:17 am

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 10 mensajes ] 
Autor Mensaje
NotaPublicado: Jue Jul 20, 2006 9:33 pm 

Registrado: Jue Ene 26, 2006 9:28 pm
Mensajes: 74
Hola a todos, agradeceria me pudieseis orientar sobre como puedo hacer o si hay algun control para controlar el puerto serie con el fin de capturar un dato que ha entrado a traves de eventos y sin tener que estar continuamente "mirando" por dicho puerto. Algo asi como cuando en el antiguo MS-DOS se interceptaba la interrupcion que se generaba en un puerto al entrar un dato ejecutando mi propia rutina de lectura solo cuando era necesario.

Gracias de antemano
Un Saludo
Javier


Arriba
 Perfil  
Responder citando  
NotaPublicado: Jue Jul 20, 2006 11:11 pm 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
JMorales escribió:
Hola a todos, agradeceria me pudieseis orientar sobre como puedo hacer o si hay algun control para controlar el puerto serie con el fin de capturar un dato que ha entrado a traves de eventos y sin tener que estar continuamente "mirando" por dicho puerto. Algo asi como cuando en el antiguo MS-DOS se interceptaba la interrupcion que se generaba en un puerto al entrar un dato ejecutando mi propia rutina de lectura solo cuando era necesario.

Gracias de antemano
Un Saludo
Javier


Hola.

Pues asi de 'golpe'... ¿con un timer?.

Yo tengo 'algo parecido', se trata de controlar los monederos en un cyber y cada segundo 'leo' la situacion del puerto serie que me informa del estado del monedero.

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Dom Ago 13, 2006 6:06 pm 

Registrado: Jue Ene 26, 2006 9:28 pm
Mensajes: 74
hola Jesus y gracias por la sugerencia, pero asi es como lo tengo hecho, con un timer. La cuestion es que el programa se enlentece bastante al mostrar un tdbgrid y estar consultando el puerto cada segundo. Mi consulta es si se puede utilizar el evento que se genera cuando entra un dato por el puerto serie. De esta manera el programa solo leeria el puerto cuando sea necesario.

Gracias
Un Saludo
JMorales


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Dom Ago 13, 2006 9:35 pm 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
JMorales escribió:
hola Jesus y gracias por la sugerencia, pero asi es como lo tengo hecho, con un timer. La cuestion es que el programa se enlentece bastante al mostrar un tdbgrid y estar consultando el puerto cada segundo. Mi consulta es si se puede utilizar el evento que se genera cuando entra un dato por el puerto serie. De esta manera el programa solo leeria el puerto cuando sea necesario.

Gracias
Un Saludo
JMorales


Hola, de nuevo.

No he ahondado en el tema tal y como tu comentas, pero para hacer lo que propones (creo) que aunque dispusiesemos de un control dedicado, éste internamente estaría utilizando un timer, al menos a mi asi me lo parece. Yo lo que si te puedo comentar es que la aplicacion que utilizo para leer el monedero en los cyber está comprobando dicho monedero cada segundo y no noto ningun retardo (aun con juegos)... no se... si quieres poner algun ejemplo.... tu mismo...

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Dom Ago 20, 2006 12:08 pm 

Registrado: Jue Ene 26, 2006 9:28 pm
Mensajes: 74
Hola ¿serias tan amable de indicarme la sintaxis de FRead() ?
creo que estoy metiendo la pata en algun sitio.

Gracias
Javier


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Dom Ago 20, 2006 12:21 pm 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
JMorales escribió:
Hola ¿serias tan amable de indicarme la sintaxis de FRead() ?
creo que estoy metiendo la pata en algun sitio.

Gracias
Javier


Hola, Javier

Vamos por partes, relellendo el hilo, entiendo que lo que necesitas es leer INFORMACION que te llega por el COM (lease bascula, por ejemplo). Bien, no es lo mismo que yo hago, ya que lo que leo es el ESTADO de un pin del puerto (bueno son 2 pines). En tu caso yo contemplaria DOS posibilidades:

1º Ver si puedes averiguar (por el estado de algun pin) si se esta enviando informacion, si lo logras es en ese momento cuando ya lanzas el proceso que necesites....

2º Haz una pequeña aplicacion que haga de control, y sea ésta la que se encarga de 'esperar' la informacion del puerto cuando llega la envias a un fichero y ya en este punto es el programa principal el que comprueba la existencia o no el fichero, haces el tratamiento del mismo y LO BORRAR, y a volver a empezar......

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Dom Ago 20, 2006 4:35 pm 

Registrado: Jue Ene 26, 2006 9:28 pm
Mensajes: 74
Hola, agradeceria un ejemplo de lectura y escritura en un puerto serie.

Un Saludo
JMorales


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Dom Ago 20, 2006 4:46 pm 
Hola,

Quizás una manera de controlar el puerto COM podría ser a través de la función API IOCTL y todo lo que le rodea. Este enlace explica algo al respecto http://www.ddj.com/dept/windows/184416453


Arriba
  
Responder citando  
 Asunto:
NotaPublicado: Dom Ago 20, 2006 5:44 pm 
Ups...

Creo que antes me confundí... Creo que una forma elegante podría ser utilizando el conjunto de funciones API SetCommMask, GetCommMask y WaitCommEvents. Este enlace muestra ejemplos de como hacerlo: http://www.codeproject.com/system/SerialPortComm.asp El tema está en incluir todo eso dentro del bucle de mensajes de windows y hacer la llamada a una función CallBack que se encargue de todo el trabajo. En este sistema veo que un problema: lo hace dependiente de un handle de window.

¿Que opinais los expertos?
¿Que opina el creador de C3?


Arriba
  
Responder citando  
 Asunto:
NotaPublicado: Dom Ago 20, 2006 8:23 pm 

Registrado: Jue Ene 26, 2006 9:28 pm
Mensajes: 74
Hola de nuevo.
aqui dejo un ejemplo para ver si me pueden decir que estoy haciendo mal ya que no soy capaz de leer el puerto serie. Las lineas de codigo de apertura, configuracion, escritura y cierre estan copiadas tal cual del ejemplo "puertos.prg", la de lectura me la he "inventado" yo ya que no esta aun documentada y no se si varia la sintaxis con respecto a la de clipper. El aparato que envia datos al puerto serie funciona bien ya que lo he comprobado con el programa Hyperterminal de Windows.

Gracias desde ya
JMorales


Adjuntos:
CerraduraC3.rar [2.37 KiB]
427 veces
Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 10 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
cron