Programación General > Visual Basic 6.0 e inferiores
Como Puedo Enviar Bytes Por El Puerto Serie
Brroz:
Hola
viendo el último comentario, comento un par de cosillas:
Si abres un archivo como binario, podrás leer y escribir en él utilizando Get y Put respectivamente. Los parámetros que reciben estos métodos son el número de canal del archivo abierto, un desplazamiento (offset) a partir del cual leer y/o escribir y una variable de typo byte. Sobre los dos primeros parámetros creo que sobran explicaciones, el último aparte de contener el valor leído/escrito indica la cantidad de bytes que se leen/escriben. Es decir, si utilizas una matriz dimensionada con x elementos, leeras/escribirás x bytes en el archivo. Si no utilizas una matriz, logicamente leeras/escribirás 1 byte.
Tambien hay que considerar que a la hora de abrir el puerto con OPEN, se pueden indicar parámetros para configurar la comunicación con el mismo (ahora mismo no sabría la sintáxis, pero hacer, se hace).
A partir de esto, como creo que el el caso de scorpion25acv, podría ocurrir que en una máquina leas de un archivo en disco cierta cantidad (al fin y al cabo como si dimensionaras un buffer) de bytes y a continuación los escribas en un puerto exactamente igual como si de un archivo en disco se tratase (configuraciones e historias así aparte). En otro punto existirá otro equipo leyendo información (con Get) de su puerto también abierto como un archivo.
La salvedad a la parte que escucha, es que mietras que no se reciben datos del archivo (del puerto), la ejecución del código se detiene en el Get...
Sin duda que el control Comm simplifica la tarea, pero básicamente supongo que viene a hacer lo mismo.
Chao.
dannyhar:
Hola sirespi... muchas gracias por la preocupacion.. Espero que esto sea una señal de que me puedas seguir ayudando por que en verdad lo necesito...
Te voy a contar lo que me sucede y lo que quiero hacer.. Estoy haciendo mi proy de fin de carrera el cual consiste en el diseño de la mejor manera de hacer el control de vehiculos que acceden a un parqueadero.. Para esto tengo que presentar dos opciones una que permita ingresar los datos mediante el puerto serial y otra mediante el paralelo... esto mediante un teclado en el cual el cliente pulsa un codigo.. Despues de ingresar el codigo el usuario presiona end y los datos mediante un circuito (en el cual no tengo problem) deben pasar a la pc..
Bueno para no hacerme muy largo Al final de toda la parte electronica tengo una secuencia de bits o niveles de voltaje 8volt para el 0 y -8 volt para el 1 (bueno eso s lo que quisiera capturar en una variable en mi prog de visual Ah los niveles de voltaje cada un segundo ingresan al puerto serial.. pero me sale solo 0...
ocupo el mscomm pero e leido y e leido pero no me sale.. En este foro subista la respuesta a como enviar pero no como recibir... Bueno espero que te haya podido explicar mi problema y por
dannyhar:
Perdon se me envio lo que te queria decir es AYUDAME por fis...... te juro que te agradecere infinitamente chau y muchos saludos :hola:
sirespi:
Aver, vayamos por parte.
- Para Scorpion25. La verdad que en lo de enviar archivos entero por el puerto seri eme pillas. No obstante algo lei de como configurar el puerto serie como si se tratara de un modem, por lo que creo qeu es posible. Igual se puede hacer como dice Brroz, que lo que hagas es acceder al fichero e ir enviando su contenido segun lo vas leyendo y a la vez se va escribiendo en la maquina de destino. LA verdad, esto no lo he probado, tendria que verlo, si encuentro algo os lo digo, pero en principio seria buscar informacion sobre lo que ha planteado brroz.
- Para dannyhar.
Si no he entendido mal, lo que tu realmente tiene qeu hacer en tu aplicacion es recibir datos por el puerto serie.
Veamos, enviar es sumamente facil, tan solo tienes qeu definir una variable tipo byte y utilizar el mscomm.output. Creo qeu lo explique mas arriba. Si por ejemplo quieres enviar el numero binario 1010, este numero en decimal corresponde al 10, por lo tanto, tu variable tipo byte la pones a valor 10 y cuando la mandes, lo que realmente mandas sera la secuencia 1010.
Para recibir, tienes que usar la propiedad OnComm y despues seleccionar el commEvent. Es muy facil. TE coger una variable tipo byte y en ellas metes el buffer de entrada.
por ejmplo
Private Sub MSComm1_OnComm()
Dim Rec() As Byte
Select Case MSComm1.CommEvent
Case MSCOMM_EV_RECEIVE
Rec() = MSComm1.Input
en esa variable ya tienes lo qeu recoges del puerto serie y luego puedes utilizarla como tu quieras .
No se si esto te valdara de ayuda.
Mirate el ejemplo que adjunto, creo que ya lo subi uan vez. Metete en el codigo y repasalo, veras qeu es muy sencillo. Lo que no tengo claro es si tu quieres coger lo qeu te llega y ay esta, o si lo que quieres representar en tu programa es si te llegan 0 y 1 y en el caso de qeu te lleguen 0 poner un cero, y si te llegan 1 poner un 8.
De momento haz lo que te digo de recibir. Despues, si lo logras, orta cosa que se puede hacer es la siguiente. A ti te llegara a tu variable tipo byte un numero decimal. Pasas ese numero de decimal a binario con una funcion (si no sabes hacerla yo ya la tengo hecha). es decir, suponte que te envian la secuencia 1010 igual que antes, pero ahora te la envian a ti, no la envias tu. En tu variable byte del evento de recepcion tu recibes un numero, el 10, con lo cual no puedes saber si son 0 o 1, 0 v u 9v. Pues pasas el 10 a binario, es decir, 1010, y a aprtir de ahi te mueves pos la cadena de 0 y 1 y sabes si recibes 0 voltios u 8 voltios.
No se si te he podido ayudar o no pero en cualquier caso, dime lo qeu sea y si hace falta me escribes en una hoja todo detallado lo qeu necesitas y lo miramos mas profundamente. Un saludo.
dannyhar:
Hola sirespi gracias por la ayuda...
Sabes que ya logro recibir datos por el puerto serie con tu prog.. pero siempre y cuando corte la alimentacion de mi circuito en el momento exacto en que recibo los ocho bits.. caso contrario recibo otro caracter y por ende otro numero.. Nose por que pasa esto.. bueno tengo una idea de mandar una señal por el puerto paralelo para que me permita activar o no el max232 para asi no tener que estar quitando la alimentacion manualmente... que te parece la idea.. tu que piensas como podria hacerlo y por que me sucede esto... Espero tu respuesta...Gracias Saludos
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa