Programación General > Visual Basic 6.0 e inferiores
Como Puedo Enviar Bytes Por El Puerto Serie
oscar_937:
:devil: HOLA A TODOS: :devil:
ME PODRIAN AYUDAR EN ESTE PROBLEMILLA?:
KIERO QUE DESDE LA PC PODER ENVIAR USANDO EL MSCOMM BYTES POR EL PUERTO SERIE, COMO LE HAGO NECESITO ENVIAR 8 BITS(1BYTE) A UN PIC16F84 PARA QUE ESTE REALICE CIERTA RUTINA Y AL TERMINAR LA RUTINA QUE EL PIC ENVIE UN DATO A LA PC INDICANDO QUE YA TERMINO, COMO LE PUEDO HACER, EL PIC TRABAJA A 4800 BAUDIOS Y OTRO A 9600 BAUDIOS, PERO LO QUE ME INTERESA ES ENVIAR BYTES, SUPONGO LOS TENGO QUE ENVIAR COMO UNA MATRIZ O ALGO ASI PERO COMO LE HAGO ME PUEDEN AYUDAR?
GRACIAS AMIGOS PROGRAMADORES Y LES ENVIO SALUDOS DESDE EL DF
ATM OSCAR_937 :comp:
sirespi:
A ver te comento.
Primero de todo, necesitas usar el componente MScomm, que es el de puerto serie. Te metes en componentes, lo buscasy lo pones en el formulario. Esto es muy facil
Seguidamente, configra el puerto. POr ejemplo, en el evento on load del formualrio, pon lo siguiente.
MSComm.Commport=1 para usar el puerto 1.
MSComm.Settings="4800, n, 8,1" con esto configuras el puerto a 4800 baudios, paridad nula, 8 bits de parada y uno de stop, esto lo puedes poner como quieras.
MSComm.portopen=true con esto abres finalmente el puerto.
Despues necesitas definir una variable tipo byte
Dim enviar(1) as byte si solo vas a enviar uno
La variable byte son tus 8 bits en decimal. Me explico. Si quieres enviar 11111111, lo que tiene que poner es un 255
enviar(0)=255
MSComm.output=enviar
Y con eso lo envias.
Recibir es pelin mas complejo, necesitas usar el evento oncomm y agregar un modulo, ademas de tocar las propiedades del puerto para que salten esos eventos, ya que por defecto vienen a 0.
Ahora mismo es que acabo de llegar de currar despues de 14 horas, pero si me dices exactamente lo que quieres hacer, yo te hago dos programas, uno qeu envia y otro que recibe, en eso tardo un periquete.
Un saludo.
oscar_937:
hola amigo programador :devil:
necesito comunicarme con un pic con un programa en visual basic 6, por medio del puerto serie, el dato es el resultado de una operacion matematica, osea un dato decimal, tengo que convertir el decimal a binario y despues enviarlo?? kiero enviar 4 bytes o 6 o etc(podrias darme un ejemplo con 4 bytes??) entonces como le hago ?? los mando como matriz ?? y como se hace eso??esos bytes el pic los recoje y manda a realizar una rutina , al terminar la rutina el pic me envia cierto byte (8 bits oooraleee!!) yo atrapo ese byte y lo convierto a decimal como hago eso o como limpio el buffer despues de enviar y recibir???
como esta eso de la propiedad inputmode???
ahora necesito enviar un cero (0) y despues el byte(00001010) y despues un uno(1) para que el pic reconosca que es un dato nuevo o como??
o como seria para solo enviar los bytes sin tener que ponerle un cero y un uno al terminar el dato??
o enviar el cero(0) y los 4 bytes y al terminar enviar un uno(1)
me podrias dar un ejemplo uno para cada caso si pudieras o tienes tiempo porfavor
asi como configuro el mscomm si kiero que los envie a 4800 y otro para enviarlos a 9600??
espero me haya explicado gracias de antemano :comp: :hola:
saludos desde el DF
sirespi:
perdona por no responder antes, pero estoy de curro hasta las cejas, y ademas tengo el proyecto fin de carrera.
Esta noche cuando llegue a casa miro lo que dices yte digo como se puede hacer. Un saludo
sirespi:
Vamos a ver.
Ya se por donde vas.
Te comento varias cosas. Tienes qeu usar el mscomm, la propiedad input mode ha de estar a uno.
Para mandar cosas, te tienes que definir una variable tipo byte.
Te pongo un ejemplo.
Siempre se han de mandar de 8 bits en 8 bits , ya que los micros (por lo menos la mayoria) trabajn asi, y el visual igual (esto varia segun algunos S.O. orientales, pero creo que es asi siempre). Es decir, tu vas a recibir y a envair de 8 en ocho. Si quisieras enviar 16, pos no hay problema, simplemente enviaria primero 8 y despues 8.
Vamos a ponernos en el caso facil. Enviar 8 bits. Por ejemplo: 10101010. Vamos a ver, este numero en binario, si lo pasas a decimal, tienes el 170.
Te defines una variable Dim a As byte.
Luego dice a=170.
y luego mscoom.output=a
De esta forma, al tener la propiedad input mode a 1, lo que de verdad le dices cuando mandas el 170, es mandarle los bits 10101010.
Y lo mismo para recibir.
Te envio un programa, echale un vistazo. Si tienes un cable serie para unir los dos puertos series del ordena, puedes usar los dos programas. Uno envia un byte y el otro lo recive y viceversa.
Echale un vistazo al codigo y veras que es muy sencillo
Espero qeu te sirva de ayuda
Navegación
[#] Página Siguiente
Ir a la versión completa