![]() |
![]() |
| 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
|
|||
|
|||
|
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. |
|
#2
|
||||
|
||||
|
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. |
|
#3
|
||||
|
||||
|
Cita:
|
|
#4
|
|||
|
|||
|
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. |
|
#5
|
|||
|
|||
|
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 |
|
#6
|
||||
|
||||
|
Suponiendo que ya tienes el puerto abierto y configurado, para escribir una cadena puedes usar algo como esto:
|
|
#7
|
|||
|
|||
|
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); |
|
#8
|
||||
|
||||
|
Bien, parece que estas controlando algún tipo de dispositivo electrónico, habría que ver como es el protocolo de comunicación de ese dispositivo. ¿Utiliza comandos de texto?, es decir, los que tu mandas y recibes son cadenas de texto. Si es así, para mandar el texto ya tienes la solución arriba, y para recibir texto hay que saber que carácter termina cada linea. Lo normal es leer byte a byte el puerto serie hasta encontrar el carácter final que suele ser #13.
De todas formas el código que tu pones no es correcto: Cita:
De todos modos, ¿cual es el protocolo de comunicación de ese dispositivo?, ¿que le tienes que mandar tu?, ¿que te responde el?, ¿es texto o bytes?, ¿sabes la longitud de la respuesta, o esta delimitada por un carácter final?. Y si no es mucho preguntar ¿que dispositivo es?, si me das más datos puede que entienda mejor lo que necesitas. |
![]() |
| 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 |
|