![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Ignoro como funciona el componente que mencionas, pero me surge una pregunta, ¿por que no utilizas la API para leer el puerto serie?. Windows dispone de las funciones necesarias para leer el puerto serie de manera sencilla, los componentes lo único que hacen es llamar a esas mismas funciones, pero además incluyen un montón de código a mayores, que a veces en vez de ayudar es una molestia.
¿Que es lo que necesitas exactamente?, es decir, si tienes que leer byte a byte e ir procesando cada uno por separado un simple bucle sera mucho mas rápido que cualquier componente que funcione con eventos. Si no quieres tener tu aplicación congelada mientras ejecutas el bucle, utiliza threads, de esta manera la lectura se realizara en paralelo con hilo principal de tu programa. Un simple loop dentro de un thread es el método mas rápido que existe para leer los bytes, eso te lo garantizo. Por ejemplo:
Aunque si vas a leer una gran cantidad de bytes te recomiendo que metas el código dentro de un Thread, para no tener la aplicación parada. Última edición por seoane fecha: 17-08-2006 a las 21:17:05. |
|
#2
|
|||
|
|||
|
Seoane, al final voy a probar lo que dices de programarme a pelo las rutinas de manipulacion del COM. Pero estoy pez en la api. Sabes de informacion de la API referente a como manipular el puerto COM ?
Agredeceria links o documentos. A por cierto esto de los threads, ni idea como funcionan? gracias. Última edición por Geta fecha: 17-08-2006 a las 21:19:23. |
|
#3
|
||||
|
||||
|
Todas las funciones las tienes en la ayuda. En el menú de ayuda de Delphi abre "Windows SDK" hay encontraras la función CreateFile, SetCommState, etc. Incluso creo recordar que viene algún ejemplo de como leer el puerto serie. Básicamente windows trata el puerto serie como si fuera un archivo mas (con ciertas limitaciones), una vez abierto y configurado, puedes leer y escribir en el como si de un archivo se tratase. Tienes un par de funciones, además, para manejar si te hiciese falta, las lineas RTS,DTR, etc.
PD: En el ejemplo anterior, añadi una linea que faltaba. Última edición por seoane fecha: 17-08-2006 a las 21:33:01. |
|
#4
|
||||
|
||||
|
Cita:
|
|
#5
|
|||
|
|||
|
Nada, no soy capaz de mandar un string por el com con las funciones de la API. Me es imposible.
Imaginad una cadena a mandar por ejemplo: ' hola' Como la mando, he imtentado con writefile pero al leer la respuesta del dispositivo, nada, no hay respuesta. estoy desesperado. |
|
#6
|
|||
|
|||
|
He hecho algunas pruebas con el componente AdpComPort, prueba con este código, haber que tal.
Puede ser mejorado, pero lo hice asi al vuelo. Te explico un poco, en el evento OnTriggerAvail del AdpComPort llega los bytes uno por uno, entonces, al llegar cada paquete leo el primer caracter y espero 100 ms para que llegue toda la cadena restante. Yo uso un Memo para ver la cadena pero tu puedes usar variables. Podrás mover este parámetro de espera en ms si la cadena es muy grande, pero no lo creo necesario. Espero te sirva. Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
|
#7
|
||||
|
||||
|
Suponiendo que ya tienes el puerto abierto y configurado, para escribir una cadena puedes usar algo como esto:
|
|
#8
|
|||
|
|||
|
Cita:
Magnifico, asi si que me lo entiende el dispositivo. Le he dicho a si a groso modo que encienda un led con un byte en hexadecimal y se ha encendido. pero se supone me tenia que responder un byte y no lo hace. Leo con ReadFile asi: Código:
comando: String; ... ... ReadFile(hPort,comando,length(comando),cuantos,nil); |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Disminuir el tamaño de un ejecutable | tannyk | Varios | 6 | 18-05-2005 06:23:41 |
| Disminuir el tamaño de los archivos .pst (outlook) | Alexander | Windows | 3 | 11-05-2005 19:42:38 |
| Disminuir tamaño de un programa | Leomedellin | Varios | 1 | 06-04-2005 18:49:05 |
| de BYTE a STRING | emeceuy | Varios | 3 | 20-08-2004 16:29:32 |
| ADO: Byte nulo (byte #0) en un string | Pandre | Conexión con bases de datos | 0 | 02-04-2004 20:18:37 |
|