![]() |
![]() |
| 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
|
||||
|
||||
|
La variable "Escritos" se pasa por referencia a la funcion, es la propia funcion la que le asigna un valor. No hay necesidad de inicializarla.
|
|
#2
|
||||
|
||||
|
Hola,
Bueno, es lo que yo decía, ¿no? ![]() |
|
#3
|
|||
|
|||
|
cambiar la configuracion del flags
Amigo antetodo muchas gracias por la fuente, el codigo compila sin errores pero el circuito no recibe el dato.
Realicé pruebas en hyperterminal fijando la configuración del puerto en 9600 Bits por seg, 8 Bits de datos, paridad: ninguna, 1 Bits de parada y en control de flujo: ninguno, y funciona... Ahora voy a la configuración de la fuente que enviaste que es la siguiente: BaudRate := CBR_9600; ByteSize := 8; Parity := NOPARITY; StopBits := ONESTOPBIT; Flags := $01; Aqui en el Flags, es donde debo especificar la opcion NINGUNO, ya probe con $00, $02, $03 y nada. CUAL SERA EL PARAMETRO??? Ahhhh, me cambiaron el parametro 1 por A es decir, tu me enviaste la función MandarByte('COM1',1); pero debo cambiarla a MandarByte('COM1','A'); te lo comento por si tiene algo que ver, y porsupueto cambien el BYTE por STRING en el parametro B Última edición por bill_mg fecha: 08-07-2006 a las 17:57:07. |
|
#4
|
||||
|
||||
|
Para mandar el carácter 'A' (ASCII 65) no hace falta que cambies nada en la función, dejándola tal cual estaba antes utiliza esto:
Si cambias el tipo de parámetro de Byte por un string y dejas el resto de la función igual, no estas mandando un 'A' si no otra cosa. Mejor utiliza el método que te explico arriba. |
|
#5
|
|||
|
|||
|
no lee el dato
El código corre y no genera error pero no manda el dato. Para que sirve la variable Escritos, el valor de esta en la linea donde aparece
Result := WriteFile(hPort, B, 1, Escritos, nil); es un poco de numeros algo así como 1489274260 porque crees que no manda el dato. Pruebo el circuito con hyperterminal y funciona bien. Que puede estar pasando? |
|
#6
|
||||
|
||||
|
Supongo que como te aconseje mas arriba volviste a dejar el código de la función como estaba, y utilizas la función Ord para convertir un carácter en un Byte. Si no es así corrígeme. Si estas haciendo esto, no se porque no te funciona, solo puedo adivinar.
Comprueba lo siguiente: - No es lo mismo una 'A' que una 'a' - Que el circuito no necesite de alguna señal en los pines DTR y RTS - Comprueba que otro programa no esta usando el puerto serie - Comprueba que el puerto es el correcto - Comprueba los parámetros del puerto serie En cuanto a la variable "Escritos" no le deis mas vueltas, solo la incluyo porque es necesaria para llamar a la función pero su valor antes de llamar a la función no es importante, en cambio su valor después de la función no indica el numero de bytes que realmente se han escrito. Tienes que pensar que esta misma función se utiliza para escribir en muchos lugares (ficheros, discos, pipes, sockets, etc) y en algunos tiene sentido que no se puedan escribir todos los bytes que se quiera, en esos caso la variable nos devuelve el numero de bytes que han sido escritos realmente. En este caso no tiene mucho sentido, solo mando escribir un byte y el puerto serie no tiene porque rehusar mandarlo así que tampoco compruebo su valor después de llamar a la función WriteFile, es una variable inútil en este caso. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Como recibir datos en un puerto serial | JULIPO | PHP | 1 | 17-06-2006 20:54:36 |
| Capturar Ventana Windows y escribir datos | nachoporcar | API de Windows | 2 | 01-06-2006 19:57:31 |
| Puerto serial CLX | bismarck_sierra | Lazarus, FreePascal, Kylix, etc. | 0 | 06-07-2004 21:55:22 |
| Puerto serial | fled | Varios | 2 | 28-04-2004 22:27:47 |
| Puerto serial. | danytorres | Impresión | 1 | 29-01-2004 16:51:42 |
|