Autor Tema: comunicacion RS232 en Visual Basic  (Leído 341170 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
RE: comunicacion RS232 en Visual Basic
« Respuesta #60 en: 14 de Agosto de 2005, 12:27:00 »
Hola amigos ya esoty que reviento con esto, si algún alma bendita podria ayudareme por favor responda(volvere en 5 días )
HP.

Desconectado jerupic666

  • PIC10
  • *
  • Mensajes: 5
RE: comunicacion RS232 en Visual Basic
« Respuesta #61 en: 14 de Septiembre de 2005, 01:31:00 »
hola

   tengo un proyecto en mano que consiste en medir la velocidad y voltaje de un motor de cc ambos en un voltaje de 0 a 5 v esto lo paso por un ADC del pic 16f876, almaceno 1000 datos de c/u, despues los quiero mandar a un archivo ya sea de texto o de xcel para obtener la funcion de transferencia con matlab y asi poder realizar un control para dicho motor, mi pregunta es con visual puedo generar dicho archivo txt o xls? y si si como?
miles de gracias

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: comunicacion RS232 en Visual Basic
« Respuesta #62 en: 14 de Septiembre de 2005, 01:43:00 »

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
RE: comunicacion RS232 en Visual Basic
« Respuesta #63 en: 17 de Septiembre de 2005, 16:10:00 »
Hola a todos, hice un programita bien sencillo en Visual Basic para el envio y recepcion serial y lo deje en el almacen del foro aca les dejo la direccion:

http://miarroba.com/foros/ver.php?foroid=348538&temaid=3607620&do=prevtopic

Descripcion del programita:

ENVIO: esta configurado para enviar datos seriales a una velocidad de 19200bps (se puede cambiar en el archivo fuente) Para poder ingresar los datos a enviar hay un textbox en el cual se ingresan los "caracteres a ser enviados" Por ejemplo si envio una "A" en verdad estoy enviado un 65 que es el valor en ascci de "A" (cada caracter tiene su valor ascii) de manera que en cada caracter hay 8bits, los cuales son enviados a un pic, otra pc, cualquier dispositivo...

RECEPCION: La recepcion se hace por "interrupcion" (para compararlo con el pic) del modulo MSCOMM cada vez que reciba un dato por el puerto serial, el programa lo mostrara en un texbox (cabe recalcar que este valor se mostrara en ascii) de manera que si yo envio desde el pic un byte con un valor de 64, en la PC recibire un caracter "@".

Si desean probar si hay conexion, pueden unir los pines 2 y 3 del puerto serial y ver en el programa que todo lo que envian automaticamente lo recibe...

Espero les sirva, un abrazo

Rebotado
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: comunicacion RS232 en Visual Basic
« Respuesta #64 en: 21 de Septiembre de 2005, 12:17:00 »
Escrito originalmente por hhpp
Hola amigos, que pasaria si yo recibo los datos continuamento como los separo, sigue el mismo formato, pero ahora es continuamento como separa los datos para que se vayan a sus respectivos lugares.

HP.}



Los datos no se envían contínuamente (o la menos no es conveniente), se envían de a rafagas. O sea, se envían en conjuntos de longitud fija o en conjuntos con un retorno de carro al final.
Si se enviaran continuamente no habría forma de saber dónde empieza uno y termina el otro.

Entonces:
Si los datos tienen una longitud fija, por ejemplo 4 bytes, entonces bastará con poner:

mscomm1.Rthreshold = 4

Con esto cada 4 caracteres que lleguen al puerto de activará el evento OnComm.
Entonces, supongamos que querés recibir los valores de 5 potenciómetros con el ADC del Pic. Los 5 ADC"s los identificás con A, B, C, D, E.
Entonces desde el Pic enviás "B231"... esto quiere decir que el potenciometro B tiene un valor de 231. Facil!
Ahora, para separar la "B" del resto de los números tenés que:

(dentro del evento On_Comm)
Dim dato as string
Dim pote as string
Dim valor as byte

dato = mscomm1.input
pote = Left(dato, 1)
valor = CByte(Right(dato, 3)

Select Case pote

Case "A":
"resto del codigo para A.

Case "B":
"resto del codigo para B.

.....
.....

End Select

Eso es con buffer de longitud fija. Cuidado porque no es lo mismo "B231" que "B23", este último tiene 3 caracteres. Tendría que ser "B023".

La otra forma es con un retorno de carro al final, sin setear Rthreshold. Es el método que explique unos post mas atrás. La forma de separar los caracteres es la misma, salvo que (creo) hay que hacer:

dato = mscomm1.input
dato = trim(dato)

Con trim se sacan los caracteres invalidos o no legibles. Con esto sacamos el simbolo de retorno de carro, que aunque no lo veamos está. De otra forma después salen errores por todos lados al separar los datos.

PD: el codigo que postee puede tener algun error menor. Pasa cuando uno escribe codigo sin el editor (no está probado) y pasa mucho tiempo sin tocar VB ;)

Espero que sirva.



Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
RE: comunicacion RS232 en Visual Basic
« Respuesta #65 en: 19 de Octubre de 2005, 19:22:00 »
Hola amigos y gracias poco a poco sigo avanzando ahora tengo un problema , y se que no viene al caso en nuestro foro, pero si alguien tiene idea se lo agradeceia mucho.
Quiero hacer un a pa´gina web que sea accesible desde un terminal fijo(PC) y a la vez de un terminal movil(Celular via WAP) si alguien tiene idea de como hago esto se lo agradecere mucho.ç

Desconectado Sebascl

  • PIC12
  • **
  • Mensajes: 73
RE: comunicacion RS232 en Visual Basic
« Respuesta #66 en: 18 de Noviembre de 2005, 20:28:00 »
Hola, aqui dejo un pequeño programita en vb6 para comunicacion serial por rs232 se configura el puerto , la velocidad...

http://miarroba.com/foros/adjuntos.php?accion=download&fileid=780159&foroid=348538&rand=1538932

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
RE: comunicacion RS232 en Visual Basic
« Respuesta #67 en: 10 de Diciembre de 2005, 08:48:00 »
Hola amigos de nuevo aqui una pregunta para enviar valres hexadecimales seria asi verdad?
mscomm1.ouput=&5h

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
RE: comunicacion RS232 en Visual Basic
« Respuesta #68 en: 12 de Diciembre de 2005, 19:55:00 »
Hola cumpas quizas me puedan ayudar nuevamente.

Private Sub Form_Load()
MSComm1.PortOpen = True
al = 0
bl = 0
End Sub

Private Sub Command1_Click()
Dim al As Byte
Dim bl As Byte
al = Text1.Text
bl = Text2.Text
MSComm1.Output =hex(al)
MSComm1.Output = hex(bl)
MSComm1.Output = hex(al)
MSComm1.Output = hex(bl)
l = MSComm1.Input
Text3.Text = l

End Sub

Private Sub salir_Click()
MSComm1.PortOpen = False


End Sub
lo que esta arriba es mi pequño codigo pero no funciona, se supone que tyiene quer enviar el contenido de text1, luego el text2, text1,text2 en ese orden pero no pasa nada si alguien puede ayudarme se lo agradecere bastante.

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: comunicacion RS232 en Visual Basic
« Respuesta #69 en: 13 de Diciembre de 2005, 10:57:00 »
El MsComm no manda valores hexadecimales, solo manda ASCII. Si envias cualquier otra cosa que no sea texto va a intentar convertirlo a ASCII.

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: comunicacion RS232 en Visual Basic
« Respuesta #70 en: 13 de Diciembre de 2005, 18:17:00 »
Pregunto:
Para que querés mandar el contenido de un textbox en hexa? Para que le ponés un Char adelante? Por que no hacés MSComm1.Output = Text1.Text?

Salu2.

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
RE: comunicacion RS232 en Visual Basic
« Respuesta #71 en: 14 de Diciembre de 2005, 11:04:00 »
bueno esta es la idea.
tengo un pic(16f873) con dos puertos como salidas y uno como entradas
entonces por ejemplo yo quiero modificar la salida RBO(RB0=1) entonces debere envioar
el correspondiente n{umero para que solo se ponga a uno el bit o delpuerto b
y asi si quiero modificar una salida del puerto C lo mismo, tambien quiero modificar
varas salidas a la vez por ejemplo el numero tres deberia encender bito y bit1
ahora una vez que modifique las salidas una variable leera el estado de las entradas y
lo enviara via serial a la PC(VB) entonces yo debo agarrar este valor y reflejar el estado
de las entradas en el programa de visual.
Ojasla me hayan entendido.

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
RE: comunicacion RS232 en Visual Basic
« Respuesta #72 en: 16 de Diciembre de 2005, 18:04:00 »
Bueno ahora debo enviar iniucalmente la letra A luiego B otra vez A y otra vez B
todo secuencialmente es lo mas facil, en esto no tendria que haber problema yo pienso popr que si manda la A=41h y B=42h ambos ocupan 1 byte tonces el RCREG recibira inialmente 41 luego 42 y asi sucesivamente, pregunta por que no pasa nada el rato de monatrlo fisicamente?
En la simulacion todo ok, yo pienso que es problema de mi programa en VB aunque no se donde.

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: comunicacion RS232 en Visual Basic
« Respuesta #73 en: 19 de Diciembre de 2005, 18:45:00 »
Te seguís complicando... las cosas hay que hacerlas sencillas desde el comienzo, sinó cuando no funciona no sabés que hacer.
Olvidate de enviar datos en hexa por un momento. Hacé todo mas fácil, por ejemplo:

(todo en string, modo texto, ASCII, txt, o sea: letras. NO HEXA!)

Si el pic recibe un "A" entonces RB0 = 1
Si el pic recibe un "a" entonces RB0 = 0
Si el pic recibe un "B" entonces RB1 = 1
Si el pic recibe un "b" entonces RB1 = 0
Si el pic recibe un "C" entonces RB2 = 1
Si el pic recibe un "c" entonces RB2 = 0..... sigue...

No sería mas sencillo? Cada letra ocupa un byte y te ovidás de los HEXA y te simplifica la vida. Si es mayúscula es 1, si es minuscula es 0. Hacés una tabla con IF"s o con un CASE y listo.

Salu2.

Desconectado karen81

  • PIC10
  • *
  • Mensajes: 22
RE: comunicacion RS232 en Visual Basic
« Respuesta #74 en: 21 de Diciembre de 2005, 18:57:00 »
Giñohola, yo tengo el mismo problema de que debo enviar valores en hexadecimales a un pic por el puerto serial, esos valores no se ingresan por ningun textbox, son constantes que estan almacenadas en el programa, mi pregunta es si definitivamente "No" se pueden enviar datos en hexa por el puerto serialEnfurruñado o si?
y si asi es como se pasa de hexa a asccii ?????


cualquier ayuda sera bienvenidaRebotado

graciasMuchas risas