FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Cita:
|
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
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 |
#4
|
||||
|
||||
Suponiendo que ya tienes el puerto abierto y configurado, para escribir una cadena puedes usar algo como esto:
|
#5
|
|||
|
|||
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); |
#6
|
||||
|
||||
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. |
#7
|
|||
|
|||
al dispositivo se le mandan bytes en hexadecimal pero para mandarselos y que lo entienda ese byte lo hemos de pasar a char. Asi por ejemploo mandando la siguiente secuencia de bytes 20 30 40 50 primero tendria que pasar el byte 20 a char luego el 30 a char, etc y cuando tengamos todos los bytes en char mandarlo. la respuesta nos tendria que dar una secuencia de chars que nosotros pasariamos a hex para ver su valor.
Pero vamos que casi todos los circuitos electronicos que se manejan por el com creo que van de forma parecido o igual. Otra cosa, se me olvidaba darte la gracias por tu interes. |
|
|
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 |
|