TODOPIC

Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: todopic en 02 de Noviembre de 2002, 07:10:00

Título: comunicacion RS232 en Visual Basic
Publicado por: todopic en 02 de Noviembre de 2002, 07:10:00
Hola, con este programita, pueden comunicar y recibir por el puerto serie de la PC, es un comienzo, y pueden adaptarlo a sus necesidades.... funciona OK!!!  



Agrego una versión alternativa a la original, con mejoras en la recepción y algunos retoques gráficos!

Ojo! En el nuevo programa, la transimición está en el cuadro de texto de arriba y la recepción debajo.

Saludos.

BrunoF
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Gotzuki en 21 de Enero de 2003, 10:30:00
Hola recien me he integrado a la comunidad, me parece genial todo lo que esta pasando aqui, es mas creo que no existen limites si todos ponemos de nuestra parte, tengo mi tesis en comunicacion de voz y datos via laser, lo que quisiera saber es si alguno de ustedes o entre todos podamos crear un software en visual basic que tenga opciones de comunicacion es decir imaginense un programa que tenga para configurar las salidas del puerto paralelo y/o serial para poder manejar con facilidad interfases como motores de paso, luces laser etc, lo que habia pensado era hacerlo en visual basic ya que es mucho mas facil y viable la programacion
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: todopic en 21 de Enero de 2003, 10:53:00
Hola, claro que es posible!
lo ideal seria por rs232 o rs485 segun las distancias que quieras controlar...  el puerto paralelo es mas facil de programar, pero necesitas las dll inpout16 inpout32 que estan en la pagina www.todopic.com.ar  (hay que declararlas)

pero seria interesante que tu control de luces sea inteligente, es decir, posea un micro, y este efectue las funciones segun lo que se envie por codigo serie...

amplia tu proyecto ok?

Norberto

Título: RE: comunicacion RS232 en Visual Basic
Publicado por: BORET en 06 de Febrero de 2003, 17:29:00
interesante .......

tengo un asm de un tnytrak que es para emitir telemetria , los datos a emitir se introducen via 232

no hay programa de win para esto , usan otro pic que recoge los datos de sensores digitales y se los pasa al tinytrak via 232
esta es una linea de datos de varios sensores:
$ULTW0000000000B811521DA8000287F40001038F0025004B00000000

el pc puede darle los datos , datos que uno quiera hacer uso , como voltios del microprocesador y temperatura o sensores conectados al pc

telemetria son datos de control de cualquir aparato o mecanismo via radio en aprs

control de mi casa via telemetria-aprs-packet

el asm esta perfecto y entendible

un saludo
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: todopic en 07 de Febrero de 2003, 10:52:00
Hola Boret, podrias enviarme o cargar aqui dicho asembler?  esta muy interesante

Norberto
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: angelmoi123 en 07 de Febrero de 2003, 15:26:00
Saludos.


Boret, me sumo al requerimiento de Nolberto, pudieras enviarme tambien el asm, estoy interesado en estudiarlo

angelmoi123

angelmoi@telcel.net.ve
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: BORET en 07 de Febrero de 2003, 17:38:00
AQUI ESTAN LOS ASM Y LOS INCLUIDES

EL OPTIONS.ASM ES PARA PONER LOS DATOS DE USUARIO

INDICATIVO,POSICION LAT/LONG. Y MAS DATOS TECNICOS

LOS DEMAS ASM NO HAY QUE PONER NADA

COMPILAR Y  HEXE  ..Y  AL PIC16F84

TELEMETRIA = CONTROL DE UNA CASA INTELIGENTE VIA RADIO.. DE UNA ESTACION ELECTRICA...DE UN INVERNADERO... Y  TANTAS COSAS COMO UNO QUIERA

YO POR ESPERIENCIA EN TELEMETRIA : EL SATELITE PCSAT EMITE TELEMETRIA , YO LA DESCODIFICO VISUALMENTE ( 23/111110001/546/R23)
PARA QUE ES ESTA TELEMETRIA?...PUES NOS DICE LOS VOLTIOS DE LA BATERIA..CARGA PLACAS SOLARES..INCLINACION DEL SATELITE..TEMPERETURA

PARA QUE LEO ESTA TELEMETRIA?? PUES ESTE SATELITE NO PODEMOS USARLO SI LA BATERIA ESTA POR DEBAJO DE 9,5 VOLTIOS , YA QUE SE PUEDE RESETEAR LA BIOS DE DATOS  Y PUN...BONM...FUERA DE SERVICIO EL NODO-DIGITAL QUE TIENE.....ESTOS NO CONOCIAN LOS PICs EEPROM JA JA JA...JA.....JA..



Título: RE: comunicacion RS232 en Visual Basic
Publicado por: BORET en 07 de Febrero de 2003, 17:48:00
EN EL ZIP HAY UNA FOTO QUE NO ES DE TELEMETRIA ES DE ESTACION METEREOLROLOGICA VIA RADIO

LA FOTO DE TELEMETRIA ES ESTA
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: lafe en 05 de Marzo de 2004, 20:35:00
HOla
Ah mi tambien me paso pero fijate al ejecutar el codigo paso
a paso y veras en donde esta el error que no es mas que una
palabra el encabezado dice..
Private Sub Form_Load ()
Public CommPort As String, Handshaking As String, Setting As String     "solo cambia public por Dim y listo
SALU2
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: andresbalaguera en 14 de Marzo de 2004, 18:14:00
Alguien ha transmitido datos a/desde un micro con Excel. Pues este tiene el módulo de visula Basic que es el VBA y sirve para hacer las macros.
Si alguien ha hecho algo o sabe algo de la comunicación serial con Excel le agradezco su colaboración.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Inet365 en 28 de Abril de 2004, 13:52:00
Tambien descarge el programa y me dice
La clave "Retained" no es valida.Imposible cargar.........
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: ga_funes en 02 de Mayo de 2004, 14:23:00
Hola: soy nuevo en esto y quiero bajar algunos archivos y me dice que el sitio no esta disponible. Me podrian decir cual es el motivo?
Gracias.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: nohaynicks en 04 de Mayo de 2004, 05:15:00
hola gente!! soy nuevo aqui, he llegado a la pagina xq estaba interesado en aprender a usar el puerto rs-232. Bueno si alguien me puede ayudar, estoy interesado en enviar señales por el puerto, me he bajado el programa que esta colgado al principio y mas o menos lo entiendo, pero donde puedo encontrar informacion sobre que tipo de señal tengo que enviar y como hacerlo en visual para que haga una cosa u otra? bueno muxas gracias de ante mano y felicitar al dueño de la pagina que este de p... madre(aunque no hay nicks disponibles )
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Dr.MT.Brown en 04 de Mayo de 2004, 07:01:00
Hola todopic...
 Disculpame la molestia..., pero al no tener el VB, necesitaria el exe de los archivos que pusiste para la comunicacion 232, si podes ponerlo te lo agradeceria.., sino mandamelos por mail....

 Gracias y un abrazo...


 
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Caliz23 en 25 de Septiembre de 2004, 12:02:00
Hola a todos soy Nuevo el foro...

       
ESTOY POR CREAR UNA APLICACION PARA EL USO DE CARNET INTELIGENTES Y NECESITO PROGRAMAR UNA INTERFACE CON LA MAQUINA LECTORA POR PUERTO SERIAL.. CON EL PROTOCOLO(tpl224) creo que es asi... ayudenme por favor
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: davicho70 en 04 de Octubre de 2004, 10:47:00
Buenas como están?? necesito un favor de alguno de ustedes, yo estoy realizando mi tesis y necesito comunicar un PIC16F877 con un programa realizado en Visual Basic por comunicación RS232.

   Se trata de que tengo unos registros en el PIC los cuales necesito cambiar su valor constantemente desde el PC por el programa realizado bajo Visual Basic. Y esto ocurrirá cuando el PIC le envíe un pulso o señal al PC.

   Si les soy sincero no sé controlar la recepción y el envío de datos en el PC en Visual Basic. Yo necesito que me expliquen por lo menos un poco de cómo es el procedimiento o los pasos para realizar esta comunicación, o si es posible me informen en dónde puedo conseguir información a cerca de esto. Del PIC´si sé enviar y recibir lo que sea, pero en Visual Basic no. gracias

David de Venezuela
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores en 04 de Octubre de 2004, 11:42:00
Tendrías que usar el control MSComm incluído en VB. Para las primeras pruebas te recomendaría usar el Hiper Terminal incluído en Windows que es más sencillo.
La mayoría de las dudas están ya discutidas y resueltas en este foro... así que a buscar y releer temas viejos.
Cuando te surja una duda que no esté discutida en los foros sólo la tienes que postear con la mayor cantidad de detalles posible, así te podrán ayudar más rapidamente.

Salu2.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: isa007 en 27 de Octubre de 2004, 08:27:00
Amigos:

Compré una balanza que cuenta con dos puertos seriales, uno que va directamente a la balanza y el otro está disponible; por lo tanto me gustaría enviar el peso a un computador, rescatar aquellos datos y quizás despues tratarlos. Espero encontrar algún programa que me haga esa operación.

Por la atención gracias.

Dante R.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Nocturno en 30 de Octubre de 2004, 02:04:00
Me alegro que te animaras a publicar tu duda en el foro. Como te decía por privado, aquí tendrás muchas más oportunidades de que alguien te pueda ayudar.

Y ahora, al tema. ¿Qué modelo de balanza es?, ¿tienes el manual?, ¿el protocolo de comunicación es RS232 (esto vendrá explicado en el manual)?
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: MGLSOFT en 30 de Octubre de 2004, 09:40:00
Hay un forista de Chile tambien, que esta en el tema del pesaje industrial, es muy probable que el pueda conseguirte el protocolo de comunicaciones, si lo hay, del modelo de tu balanza...Sonrisa GiganteSonrisa Gigante
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Dagofile en 27 de Noviembre de 2004, 14:55:00
Yo hice algo parecido es un programa macro en Power Point con comunicacion serial a control remoto, cambia las paginas en el Power Point
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: todopic en 28 de Noviembre de 2004, 12:59:00
Hola Dagofile, eso esta interesante?, podrias ampliar algo tu info?
en una oportunidad, pense en algo asi para las proyecciones en power point....
seria como un control remoto, con solo 2 o tres teclas... y no depender del mouse o teclado...


Norberto
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Checho_59 en 28 de Noviembre de 2004, 19:59:00
Hola a todos, desde ya felicito a los creadores de este foro, por lo util que resulta para la aclarar esas dudas que no te dejan dormir en paz.
Ahora vamos a las dudas que tengo...Estoy realizando un proyecto que consiste en activar un par de luces y enviar avisos de alarma mediante un PIC16F84 a un PC(Servidor) y finalmente a un usuario remoto PC (Usuario), el usario debe conectarse mediante un IP al Servidor y este debe transmitir y recibir ordenes mediante el puerto serial Rs232, nesecito de forma urgente saber de que manera envia y recibe los datos el Puerto Serial hacia una entrada o salida(configurada en el banco1 de PIC16F84) del PIC y de que manera puedo hacer la interfase en Visual basic 6 (El EZ server es el programa que utiliza este proyecto, pero estoy tratando de modificarlo) ya sea para la conexion via IP y control por el puerto serial.
Desde ya muchas gracias por la ayuda brindada, y hasta otro momento en que tal vez yo les pueda brindar de mi ayuda. Chao
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: rakzo_25 en 12 de Diciembre de 2004, 20:49:00
hola a todos, soy nuevo, y me interesea mucho ese programa de comunicacion serial, mero me marca un error en la linea "Public CommPort As String, Handshaking As String, Settings As String", si lo comento corre pero en ke se ve afectado el programa?.

Pd: este programa me sirve para la transferencia de datos haci un sistema minimo hecho con un micro 8031? y la verdad me urge gracias...
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores en 13 de Diciembre de 2004, 20:27:00
Hola rakzo_25.

Te marca un error porque estás declaranco como una variable algo que ya esta declarado internamente en VB como una propiedad del MSComm.
Las propiedades no se declaran como variables, se usan directamente:

objeto.CommPort[ = valor ]
objeto.Handshaking [ = valor ]

...donde CommPort o Handshaking son las propiedades del objeto MSComm.

Por ejemplo:

MSComm1.CommPort = 1

Es lo mismo que decir:

Hey! MSComm, tenés que usar el puerto serie 1!!!

Eso es una propiedad y ya está incluida en el objeto MSComm, lo mismo sucede con el resto de los objetos, cada uno tiene sus propiedades.

Otro ejemplo. Supongamos que semáforo es un objeto. La propiedad sería "color".

Semaforo.color = rojo

"color" no se declara en ningun lado como string o cualquier otra cosa porque ya esta declarado dentro de semaforo. OK?
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores en 13 de Diciembre de 2004, 20:43:00
Como el tema de MSComm es recurrente acá dejo algunas propiedades y los valores válidos para cada una de ellas. Espero que les sirva.

objeto = MSComm1 o el nombre que tenga su control MSComm.

********************************************************

valor = objeto.CommEvent

comEventBreak = 1001 = Se ha recibido una señal de interrupción.

comEventFrame = 1004 = Error de trama. El hardware ha detectado un error de trama.

comEventOverrun = 1006 = Pérdida de información en puerto. El hardware no ha terminado de leer un carácter antes de llegar el siguiente y lo ha perdido.

comEventRxOver = 1008 = Desbordamiento del búfer de recepción. No hay espacio para más datos en el búfer de recepción.

comEventRxParity = 1009 = Error de paridad. El hardware ha detectado un error de paridad.

comEventTxFull = 1010 = Búfer de transmisión lleno. El búfer de transmisión estaba lleno cuando se ha intentado agregar un carácter a la cola de transmisión.

comEventDCB = 1011 = Error inesperado al recuperar el Bloque de control de dispositivos (DCB) para el puerto.

*****************************************

objeto.CommPort[ = valor ]

valor = Un valor entero que especifica el número de puerto.

*****************************************

objeto.InBufferCount[ = valor ]

valor = Una expresión de tipo Integer que especifica el número de caracteres que hay en espera en el búfer de recepción.

*****************************************

objeto.InBufferSize[ = valor ]

valor = Una expresión de tipo Integer que especifica el tamaño del búfer de recepción, en bytes.

*****************************************
dim valor as string    "variable para almacenar los datos

valor = objeto.Input

Devuelve y quita una cadena de datos del búfer de recepción.

La propiedad "InputLen" determina el número de caracteres leídos por la propiedad "Input". Asignar a "InputLen" el valor 0 hace que la propiedad "Input" lea todo el contenido del búfer de recepción.

*****************************************

objeto.OutBufferSize [ = valor ]

valor Una expresión de tipo Integer que especifica el tamaño del búfer de transmisión.

*****************************************

dim valor as string    "variable para almacenar los datos

objeto.Output [ = valor ]

Una cadena de caracteres que se va a escribir en el búfer de transmisión.

*****************************************

objeto.Settings [ = valor ]

valor = Una expresión de cadena que representa el valor del puerto de comunicaciones, como se describe a continuación.

Valor está compuesto por cuatro valores y tiene el formato siguiente:

"BBBB,P,D,S"

Donde BBBB es la velocidad en baudios, P es la paridad, D es el número de bits de datos y S es el número de bits de parada.

La siguiente lista muestra las velocidades en baudios válidas.
 
110
300
600
1200
2400
9600 (predeterminado)
14400
19200
28800
38400
56000
128000
256000

La siguiente tabla describe los valores de paridad válidos.

Valor = Descripción
E = Par
M = Marca
N  = (Predeterminado) Ninguno
O = Impar
S = Espacio

La siguiente lista muestra los valores válidos de bits de datos.
 
4  
5  
6  
7  
8 (Predeterminado)

La siguiente lista muestra los valores válidos de bits de parada.

1  (Predeterminado)
1.5  
2

**********************************

objeto.PortOpen [ = valor ]

valor = Unaexpresión booleana que especifica el estado del puerto de comunicaciones.

Los valores admitidos para valor son:

True = El puerto está abierto
False = El puerto está cerrado

Cuando la propiedad PortOpen es True se abre el puerto. Si le asigna el valor False se cierra el puerto y se borra el contenido de los búferes de recepción y de transmisión. El control MSComm cierra automáticamente el puerto serie cuando finaliza la aplicación.

Asegúrese de que la propiedad CommPort contenga un número de puerto válido antes de abrir el puerto. Si la propiedad CommPort es un número de puerto no válido, cuando intente abrir el puerto el control MSComm generará el error 68 (El dispositivo no está disponible).

Además, el dispositivo del puerto serie tiene que aceptar los valores actuales de la propiedad Settings. Si la propiedad Settings contiene una configuración de comunicaciones que el hardware no admite, es posible que el hardware no funcione correctamente.

**********************************


Título: RE: comunicacion RS232 en Visual Basic
Publicado por: andresbalaguera en 21 de Diciembre de 2004, 10:01:00
Bueno Amigos;

Ya tengo comunicando dos PC por el puerto serial. Pero quiero dejar en un combobox la opcion de cambiar la velocidad de transmision, paridad, etc. parecido a como esta en el hyperterminal. Ya hice los combobox, le asigne las opciones desplegables, pero ahora no se como hacer que cambien estos settins en el propio MScomm. pueden poner algun ejemplo; Agradezco mucho la colaboracion.

Andres
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores en 21 de Diciembre de 2004, 10:38:00
Tenés que poner un boton para habilitar los cambios, entonces en el evento le ponés que cierre el puerto del MSComm (por las dudas que ya esté abierto), si no lo cerrás casi seguro te da error, después le asignás las nuevas propiedades y lo abrís nuevamente. Todo esto puesto dentro del evento Button_Click()
Otra forma es haciendo lo mismo en el evento de cambio en el comboBox, pero no es recomendable.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: solochina en 18 de Enero de 2005, 10:54:00
hola a todos de verdad los felicito en lo poco que he podido observar es una pagina super buena, por este motivo quisiera que me ayudaran. Veran yo soy suuuuper nueva en esto he trabajado en visual basic pero no con transmision de archivos. Ahora me encuentro con un proyecto en el que tengo que encriptar archivos y luego pasarlos a otra computadora por puerto serial y por puerto paralelo y como comprenderan me siento en la nebulosaHelado ya hice la parte de encriptacion pero me falta el traspaso de esos archivo si alguien tendria algun codigo o página que me ayude se lo agradeceria eternamenteVacilando
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: ardnax en 19 de Enero de 2005, 07:25:00
HOLA, ME PUDIERA AYUDAR CON UN PROGRAMA O DAR INFORMACION DE
COMO HACER UNA COMUNICACION RS232 PARA VER LOS DATOS DE UN
UN LECTOR ESCRITOR DE TARJETAS CON CHIP QUE TIENE UN PIC, YA
DETECTO LA TARJETA DENTRO DEL LECTOR LO QUE NO PUEDO ES
OBTENER LOS DATOS DE ESTA TARJETA, TODO ESTO LO HAGO USANDO
VISUAL BASIC 6.0, POR FAVOR AYUDEME YA QUE ESTO ES UN CASO DE
VIDA O MUERTE ES PARA CULMINAR MI PROYECTO DE TESIS.
Atte.
ALEXANDRA
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: ardnax en 19 de Enero de 2005, 07:54:00
Detecta lector/escritoe y una tarjeta dentro de el.
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
" Constantes para los códigos de control
Const STX = 2
Const ETX = 3
Const EOT = 4
Const SOH = 1
Const ENQ = 5
Const ACK = 6
Const NAK = 21
Const ETB = 23
Const ESC = 27
Private Sub Command1_Click() "botón que transmite el precio
Dim datos As String
Dim dato As String
" Envía una descripción y un precio de prueba
serie.Output = Chr(EOT) + Chr(STX) + "88" + "218" + "0" + Chr(ETX)
serie.InputLen = 1
dato = serie.Input
If dato <> "" Then
dato = Hex(Asc(dato))
Text1.Text = dato
Else
ms
End If

End Sub
Private Sub Form_Load()
" Los parámetros de apertura del puerto se han definido en tiempo de diseño, y dependen de la báscula.
serie.PortOpen = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
serie.PortOpen = False
End Sub
Private Sub Timer1_Timer()
serie.Output = Chr(EOT) + Chr(ENQ)
End Sub

Título: RE: comunicacion RS232 en Visual Basic
Publicado por: elmechu en 30 de Enero de 2005, 13:05:00
Hola, que tal, soy de colombia, descarqué el zip que está al principio del foro y le corregí el error del "public". Mi pregunta es ¿esa aplicacion funciona para toda comunicacion por el puerto? Pregunto esto porque tengo unas tarjetas de una maquina de analisis de gases y necesito saber que informacion envian, y si ese programa funciona para esto o necesito algo mas

Saludos
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: ardnax en 20 de Febrero de 2005, 08:34:00
he dejado algo de codigo en esta dir
http://miarroba.com/foros/ver.php?foroid=46840&temaid=3091622&ultimomsg=si
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: garamendi en 27 de Marzo de 2005, 10:28:00
Hola
       Antes que nada agradezco a todos porque leyendo el foro encontre muchas respuestas a cuestiones que tenia para resolver ; espero llegado el momento serles util a Uds tambien ,
Ahora quisiera hacerles llegar una duda  :

¿ puedo hacer un programa en Vbasic que realice una tarea cada 500 mseg ( por ejemplo leer una temperatura cada 500 Mseg exactos , ya que he estado investigando y aparentemente en sistemas multitarea no se puede hacer esta toma de lecturas con la exactitud )
Quizas para sea obvia la respuesta ; pero estoy comenzando a estudiar vbasic y necesito saver si lo puedo hacer asi o si debo solucionarlo via hard al problema .
Aguardo sus comentarios .
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Nocturno en 27 de Marzo de 2005, 13:27:00
Introduce un objeto Timer en tu formulario. Una de sus propiedades es Interval, y tendras que poner ahi el numero de milisegundos con el que quieres que se lance el evento OnInterval, donde podras poner tu codigo.
Desconozco si es muy preciso, pero en teoria deberia serlo.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 18 de Abril de 2005, 19:22:00
Hola maestros,bueno solicito una ayudotaaaaaaaa,miren esoty recibiendo datos del ADC en VB el prboblema esque cuando recibo, el textbox que uso se llena de datos al tiro, y no pues asi no me sirve,lo otro esque yo vi el ejem`lo para basse de datos que tiene con acces y bueno para guardar undato lo hacen con update cxada que se oprime un command button ahoraa lo que yo quisieras es:
1ª recibir los datos pero qure no se llene y que a cada instante me muestre el dato correcto(es decir como si borrara el antreriro dato y reciba el otro pero de manera innotable) y a la vez lo gusrade automaticamente en la base da datos(acces),pero no se como hacer esto????????????
2ª Que es lo mejor,¿ hacer la conversion de los datos adquiridos en el microcontrolador o en La PC?,el que yo tengo realiza la conversio a bcd y kluego a ascii osea todo en el micro.
Por favor si alguien de ustedes puede ayudarme,o decirme donde pueden ayudarme se los agradecere.

Espero me ayuden maestros.
Gracias de antemano.

Hp
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Nocturno en 19 de Abril de 2005, 00:17:00
Lo que te pasa con el Textbox es que estás añadiendo información a la que había en lugar de sustituir la vieja por la nueva.
Si quieres esto último, lo único que tienes que hacer es Text1.text=ValorRecibido

Con respecto a almacenar los valores en una base de datos, no es difícil, pero sí lo suficientemente complejo como para explicarlo aquí. Te recomiendo que leas este artículo que te resultará bastante clarificador:
http://www.elguille.info/vb/bases/indiceDAO.asp

Por último, ¿donde es mejor hacer la conversión de los datos?, pues dependerá de la aplicación, del tiempo libre que tenga el PIC, del tiempo libre que tenga el PC, de la información que se necesita para realizar la conversión,... Son muchos los factores que pueden influir en esta decisión. Prueba, si quieres a hacerla en uno de ellos y si te encuentras con alguna difícultad lo intentas con el otro.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 19 de Abril de 2005, 18:40:00
hola y gracias por responder maestro, bueno mira como me dices:
recivir=mscomm1.input
text1.text=recivir
y para el último dato
text2.text=text1.text
 verdfad, pero quer pasa con los anteriores datos se iran llenandoç, no existrira sobreflujo?

Ahora como haria para que en diferentes textbox(6) me den medidas distintas pertenecientes a los 6 canales adc.

buewno y sobre la base de datos ahora tengo una preguntaç, cual usar
ADO o DAO, segùn lei ADO es lo que reemplazara a DAO, ahora por favor te agradeceria que me digas cual usar debido a las ventajas que tiene dao 0 ado.

gracoias por toido.
hp
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Nocturno en 20 de Abril de 2005, 00:49:00
Pues no entiendo porqué se te van llenando. Teóricamente, con esas líneas que indicas, los Text Box deberían recoger en cada ciclo nueva información, no acumularla a lo que ya hubiera. Es probable que el problema esté en otra parte del programa.

Para hacer lo de poner 6 lecturas en sus respectivos lugares, se me ocurre que implementes un mini-protocolo. Es decir, cada lectura irá precedida de un código que identifica de qué canal ADC se trata. Y en tu programa tendrías que ir fraccionando los datos recibidos entre código y lectura, para a continuación, asignar al Text box que corresponda.

Además, si vas a usar 6 con la misma estructura, lo más recomendable sería hacerlo con un array de controles Text Box, de esta manera, el código final de asignación te saldría mucho más corto y legible:
Text[n]=Lectura[n]

Con respecto a las ventajas de ADO o DAO no tengo ni idea. Supongo que habrá alguna página que los compare.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Caliz23 en 20 de Abril de 2005, 08:56:00
Compadre ustedes no sabran algo de RTU Remotas de control de procesos...
estoy en desarrollo de un driver y necesito pasar la complilacion de Un lenguaje "ACCOL" para el rtu necesito hacer una especie de COM y no se como me podrian Ayudar compadres caliz23@mail.com esta es mi direccion por alguna cosa Gracias de ante mano...
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 20 de Abril de 2005, 19:06:00
Hola maestro bien ahi va la idea, mira si en el programa delpic mandaria digamos una "a" para el primer canal una "b" para el segundo canal y asi sucesivamente ..-....
ahora en VB seria asi?
pa el canal 0
if mscomm1.input="a" then
   var=mscomm1.input
   textarray(0)=var
...
pa elcanal1
 if mscomm1.input="b" then
   var=mscomm1.input
   textarray(1)=var
...

por favor ayudame eso de maejar bits en VB  no lo tengo cLARO,Y SI LA IDEA VA BIEN DAME UNA MANITO POTR FAVOR.

SAULDOS
HP.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores en 20 de Abril de 2005, 19:43:00
Por fin me hago de un momento para pasar por acá...

usuario_registrado:
Tratá de registrarte en el foro porque hay un montón de "usuario_registrado" y no se sabe quien es quien.

El objeto Timer de VB no es para nada preciso. Es bastante aproximado, pero no sirve para sincronizar correctamente con un Pic, que es mucho mas exacto. Depende mucho de la ocupación del procesador en el intervalo de tiempo que cuenta y como Windows tiene la costumbre de tener subprocesos corriendo en segundo plano (algunos que ni siquiera aparecen en el administrador de tareas) NO te va a servir si querés cierta exactitud. Yo ya lo comprobé en infinidad de situaciones. Una mejora es utilizar la API de Windows que se ocupa de los timers, pero tampoco mejora demasiado.
La solución pasa por otro lado, si lo que buscás es leer por el puerto serie cada cierto intervalo de tiempo te conviene programar el pic para que envíe los datos cada 500ms y hacer un "protocolo" casero para manejar los mensajes.
Seguí leyendo que más adelante te doy una solución que te puede funcionar...

************************

hhpp:
La solución que aporta Nocturno debería funcionar... pero me parece que te estás olvidando de algo más. Existen propiedades del objeto MsComm que sirven para gestionar el buffer de entrada y salida del puerto serie que si no están bien configuradas te hacen el error que mencionás.
Hasta donde yo entiendo vos leés el puerto cada intervalos de tiempo o presionando un botón en el formulario (en el evento Button_Click). El problema pasa porque en el momento que vos leés el puerto, en el buffer de recepción tenés 5 o 6 datos acumulados que ya te envió el pic. Tomemos un ejemplo:
El pic te manda un dato cada 500ms... vos leés el puerto cada 2 segundos. Mientras el pic envía la pc guarda los datos en el buffer (que es una memoria temporal) hasta que se lean. En el momento que se leen los datos se vacía el buffer. Entonces, a los 2 segundos, te va a devolver una cadena conteniendo los 4 datos seguidos (500ms x 4 = 2 segundos). Se entiende?

Ahora bien, la solución:
Manejar la comunicación por eventos! Acá va un ejemplo, supongamos que el control MsComm en tu formulario se llama "Comm".

Private serie as String
Private buffer as String
Private buffer2 as String

Private Sub Form_Load()  "Configurar el puerto ni bien arranca el programa...
    Comm.CommPort = 1    "Puerto com1
    Comm.Settings = "19200,N,8,1"    "Velocidad, paridad, etc...
    Comm.InputLen = 0                       "Explicado después.
    Comm.RThreshold = 1                    "Produce el evento OnComm cada 1 caracter.
    Comm.PortOpen = True                 "Abre el puerto.

End Sub

"Comm.InputLen = 0" es la cantidad de caracteres que va a leer cada vez que se hace un Input, si le ponés 5 te va a leer 5 nomás, si hay 20 no te va a vaciar el buffer, te va a dejar 15 en espera. Con 0 le decís que lea TODO el buffer y que lo vacíe completamente en cada lectura.
"Comm.RThreshold = 1" no hace exactamente lo que dice... pero bueno. Funciona bien así, tendría que disparar un evento por cada caracter recibido pero lo dispara cuando encuentra un retorno de carro ASCII "13". Mejor!

Después generamos el evento...

Private Sub Comm_OnComm()
    If Comm.InputLen > 7 Then
        Comm.PortOpen = False
        Comm.PortOpen = True
        Exit Sub
    End If
   
    buffer = Comm.Input
    If buffer = "" Then Exit Sub
   
    buffer2 = Left$(buffer, Len(buffer) - 1)
    Text1.Text = buffer2
        Call ControlSerie
   
End Sub

Esto es fácil, el pic envía un dato seguido del ASCII 13, cada vez que MsComm encuentra un ASCII 13 salta el evento OnComm. Entonces lo que hay que hacer es enviar los datos seguido ahí nomas de un ASCII 13.
Ahí le puse que si el buffer tenía más de 7 caracteres que lo descarte y vacíe el buffer. Esto es por si se acumulan datos (basura) en el puerto hasta que el programa termina de arrancar y estar operativo (desde la carga del form y activación del puerto hasta llegar al punto de que pueda atender las interrupciones). SOLO EN EL CASO QUE SE SEPA QUE LOS DATOS DEL PIC NO SUPERAN ESTA CANTIDAD. Se puede especificar otro valor distinto a 7 o ignorar toda la condición.
Despues está la condición de que si la cadena está vacía ("") que la ignore.
"buffer2 = Left$(buffer, Len(buffer) - 1)" es para filtrar el ASCII 13 del final de la cadena.
"Call ControlSerie" llama a otra rutina (si existe) que se encargue de hacer alguna acción dependiendo del valor de buffer2.

************************

Volviendo al tema de "usuario_registrado" (conseguite un nick!!!)
Protocolo "re-casero" (y fácil)
Supongamos que tenés que leer 3 pulsadores y 3 ADC"s....
En el pic te haces un programa que envíe los datos de esta manera según el caso. Te lo explico "metafóricamente" porque no sé en que lenguaje trabajás.

Pulsador 1: "1" + chr(13)
Pulsador 2: "2" + chr(13)
Pulsador 3: "3" + chr(13)

ADC1: "A" + valor1 + chr(13)
ADC1: "B" + valor1 + chr(13)
ADC1: "C" + valor1 + chr(13)

valor1..2..3 es el valor del ADC en cuestión, se manda toda la línea como una cadena (sin los +). En PicBasic sería "C",valor1,CR con CR como constante con el valor 13 (CR con 13").

El primer problema es que las cadenas tienen longitud variable.... para los pulsadores tenemos cadenas de 1 caracter mientras que para los ADC"s pueden ser de 4 o 5 caracteres (incluyendo el retorno de carro y suponiendo una conversión de 8 bytes).

La solución en VB aplicando los teoremas del ejemplo anterior es lo que sigue...
Vamos a crear el procedimiento "ControlSerie" anteriormente citado:

Public Sub ControlSerie()
    Dim largo As Byte
    Dim i As Byte
    Dim idPote As String
    Dim valPote As Integer
    On Error GoTo salir
    largo = Len(buffer2)

    If largo = 1 Then   ´Es un pulsador!!!
        Select Case buffer2
            Case "1"
                 "Acción para el pulsador nro 1.
            Case "2"
                 "Acción para el pulsador nro 2.
            Case "3"
                 "Acción para el pulsador nro 3.
        End Select

    Else
        idPote = Left$(buffer2, 1)  "Identifica si es A, B o C.
        Select Case idPote
            Case "A"
                idPote = Right$(buffer2, largo - 2)  "Ahora con el valor...
                "idPote tiene el valor de A... hacer lo que haya que hacer acá!
            Case "B"
                idPote = Right$(buffer2, largo - 2)  "Ahora con el valor...
                "idPote tiene el valor de B... hacer lo que haya que hacer acá!
            Case "C"
                idPote = Right$(buffer2, largo - 2)  "Ahora con el valor...
                "idPote tiene el valor de C... hacer lo que haya que hacer acá!
        End Select
    End If

salir:     "En caso de error se viene derecho para acá.
End Sub

********************

Espero que les sirva, por ahora me cansé de escribir, je je!!
Salu2.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Nocturno en 20 de Abril de 2005, 23:25:00
Sólo añado un pequeño comentario a la extensa explicación de Colores2.

La ventaja de usar un array de controles es no tener que hacer el programa así:
if mscomm1.input="b" then
var=mscomm1.input
textarray(1)=var

Supongamos que has recibido ya los datos y has extraido en las variables Canal y Lectura lo que te ha entregado el PIC. Directamente podrías hacer esto:

textarray(asc(Canal)-asc("a"))=Lectura

y en una sóla línea asignas la lectura al Text Box adecuado, sin tener que complicarte con IF o con SELECT CASE.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores en 21 de Abril de 2005, 06:53:00
Si, eso sirve. La razon de tanto Select Case e If"s es porque en mi software no manejo arrays de textbox, sinó que a partir de allí llama a otras funciones que hacen cosas diferentes entre si. Pero puede ser una buena opción. Hay que asegurarse de que el dato llegue bien para que no te dé errores de desbordamiento o similares en el caso de que asc(canal) llegue como cualquier cosa.

Salu2.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 21 de Abril de 2005, 21:28:00
Hola y gracias por todo, buenp ahora sigo con esto miren:

private sub Form_Load();
...
..
end sub
ahpra cuando reciba (13) entrara directamente a:

private sub comm-Oncomm()
 if...
..


 end if
buffer=comm.input
if buffer=" " thjes exit

canal=Left$(buffer,len(buffer)-6)"sacamos el caracter "a" para el                                                      "          canal0
buffer2=Right(buffer,len(buffer)-1) "Aqui sacamos todo incluido(13)
                                     
lectura=left$(buffer2,len(buffer2)-1)"Aqui filtramos (13)
textarray(asc(canal)-asc("a"Giño)=lectura" aqui automaticamente según varia canal se iran acomodando.

seria asi verdad?
( da lo mismo  canal=left$(buffer,len(buffer)-6)
               lectura=mid(vuffer,2,6)
)
end  sub


Si es asi por favor un comprendido.

ahora tengo dudas como saber si vas a tener 7 caracteres en el buffer despues de la conversion(10 bits)

Lo demas tendria que mandar mi paquete desde el uC con (a+valor+13) cada 500 ms? verdad?
ahora yo desde el uC ya los estoy enviando en ascii, no afecta que ponga asc(canal)-asc("a"Giño?(solo son numerosno creo, pero por si)

Ahora como le digo a la Pc que cada 500 ms reciba los datos?


Que pasaria si yo tuviera por ejemplo el boton entradas y al hacer click sobre el me desplieguen los 6 canales reciviendo datos en todo momento sin intervalos de tiempo, como haria para que reconozca cual va a un determinado canal?, sin intervalos de tiempo? como harian los datos por que si es todo momento donde se almacenarian estos, y si van a un textbos que pasaria?

Aclarenme estas dudas por favor
Hp
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Nocturno en 21 de Abril de 2005, 23:32:00
El trocito de programa que has puesto podría casi funcionar, digo "casi" porque hay errores de sintaxis (vuffer con "v"Giño, pero esa es la idea.
Yo lo simplificaría como has propuesto al final, pero usando un valor fijo en el recorte "left$":

canal=left$(buffer,1)
lectura=mid$(buffer,2,6)

Si quieres enviar una lectura cada 500 ms tendrás que indicárselo así al PIC, lógicamente, aunque en Visual Basic no tendrás que tener eso en cuenta. En VB tendrás que habilitar la interrupción por Datos serie recibidos. Joder, se me ha olvidado el VB Ardiendo y no me acuerdo del nombre del evento... algo como on_mscomm o algo así... desquiciado

Por último, no importa que tú uses los valores recibidos como caracteres ascii aunque el PIC envíe números. Ambas son maneras válidas de manejar bytes.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: IngLAOFX en 04 de Mayo de 2005, 05:29:00
Hola.. respecto a este tema, yo tengo una duda:

Quiero mudar un programa que hice en un lenguaje llamado Matlab a Visaul basic, por la facilidad de crear el GUI y ademas porque matlab no es nada eficiente y es muy lento, peor me da las funciones que riequiero y la facilidad de operar el puerto serial, pero bueno...

Segun he ledio, el puerto serie controlado con el MSCOMM activa la recepcion al recibir el hexadecimal 13..?? o son 2 caracteres ascii..?? y bien.. en mi caso deseo transmitir numeros, no caracteres, y me pregunto como podria solucionar el inconveniente de tener que transmitir el dato 13H , siendo que el VB lo consideraria el fin de la transmision,  y aun me faltaria transmitir mas datos.... espero haberme dado a entender..Muchas risas

O sera que a fuerzas debo trasnformar en el PIC el dato a BCD, despues a ascii y luego transmitirlo.."????
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores en 04 de Mayo de 2005, 21:56:00
hhpp:
"Ahora como le digo a la Pc que cada 500 ms reciba los datos?"
En el ejemplo "extenso" que puse mas arriba me tomé la molestia de explicar cual es (según mi parecer) la mejor manera de temporizar acciones que dependan de un tiempo exacto para la recepción de datos. Expliqué lo de el control Timer, el evento OnComm...

"Que pasaria si yo tuviera por ejemplo el boton entradas y al hacer click sobre el me desplieguen los 6 canales reciviendo datos en todo momento sin intervalos de tiempo..."
Si en vez de usar eventos y datos cada 500ms querés hacerlo cuando apretás un boton, entonces no utilizás el evento OnComm. Lo que hacés es configurar el valor máximo del buffer de entrada para que guarde solamente los últimos 30 caracteres (por poner un ejemplo, si un dato ocupa 4 caracteres y tenés 6 datos 4 x 6 = 24...) y hacés input en el evento Click del boton. Vas a tener que separar los datos con algún caracter y después ir sacando de a uno los datos que están delimitados por el caracter delimitador (...24 + 6 delimitadores = 30). Problema delimitado (y redundante Payaso)

IngLAOFX:
Si usás OnComm te toma el 13 como retorno de carro, no como "fin de la transmisión". La transmisión no se termina, sólo que en ese momento salta el evento. Habría que probar con otras configuraciones de Comm.RThreshold y Comm.InputLen (que no probéGiño a ver si también disparan el OnComm. De todas maneras cambiando el RThreshold puede pasar que se dispare a una cantidad determinada de caracteres que puede no ser bueno tampoco (o si).
La solución:
1) Almacenás en una variable las sumas de los Input"s en OnComm (buffer = Comm.Input + buffer). No es recomendable...
2) Cambias el valor de Comm.RThreshold a una cantidad fija de caracteres preestablecidos (con OnComm también) y te fijás si el caracter 13 te interrumpe todo por la mitad... si no sucede, todo ok, tendrás que trabajar con cadenas de longitud fija.
3) No usás OnComm y dejás que se acumulen en el buffer hasta que se te ocurra algo.loco
4) Usas recepción binaria, que es la que se usa para recibir por ejemplo archivos. Yo no la probé, pero tiene que funcionar. El problema es que no sé como recibe los datos VB en este modo, fijate que se almacenan como arrays de bytes o algo similar. Eso te puede funcionar bien.

Nocturno: el evento de recepción es OnComm.
Off Topic: suele darme mucha curiosidad los textos que aparecen junto a su nick en MSN... y rara vez lo encuentro "disponible" en ése medio para conversar...Noche
Salu2.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: IngLAOFX en 10 de Mayo de 2005, 21:36:00
Hola, ya estableci la comuniacion serial muy bien, no cabe duda que una vez que aprendes a usar el MSComm la vida se hace mas facil, pero siempre hay detallitos..:S

El datelle que me tiene sin juicio quiza se deba a mi falta de experiencia en VB, pero es el siguiente:

Cuando estoy haciendo el programa, y lo pruebo, funciona muy bien, la comunicacion se establece perfectamente, pero cuando genero el .exe del proyecto, al ejecutarlo se conecta bien al puerto, pero en ocasiones (la mayoria de las veces:S) cuando quiero leer el buffer de recepcion se empieza a llenar y el programa s queda colgado. El detalle es que yo solo espero recibir 600 bytes, y el buffer es de 1200 bytes, entonces no se por que diablos en modo de depuracion o como se le llame si funciona bien, pero una vez compilado, el ejecutable empieza a generar cosas raras con el buffer de entrada y pues, el programa se va al caño..:S

espero alguien tenga una explicacion o pista para ese problema.

Bueno, se me acaba de ocurrir que, mientras esta en modo depuracion, el programa corre mas lento que una vez ya compilado, entonces eso quizas podria generar que los comandos que le envio al pic desde la pc no se reciban bien, bueno, envio un comando y su argumento, entonces podria ser que el PIC no termine de procesar el comando recibido cuando ya esta en puerta el argumento y por eso suceden cosas raras... espero sea eso..

Saludos gente..Rebotado
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: IngLAOFX en 10 de Mayo de 2005, 21:57:00
bueno foro, ya respondi mi propia cuestion, al parecer si se debia a la rapidez con la que el programa ya compilado enviaba los datos al PIC, lo que hice para probar fue utilizar un bucle como delay con un numero muy grande, y ya no tuve el probelma anterior......Avergonzado

Pero gracias de todas maneras ya que este foro me ayudo a esclarecer algunos aspectos del mscomm.... y disculpen la molestia..Muchas risas
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 16 de Mayo de 2005, 16:50:00
Hola a todos y gracias bueno ahora tengo otro problema, miren  estoy enviando desde el pic como sigue:
                            A3.11113
                            B4.56713
-..........................

pero en el momento de hacer la conexión fisica con VB me sale el siguiente error:
error 341 en tiemp de ejecución: el índice de la matriz de controles no es valido

y la verdad no se donde esta el problema, por favor una ayuda:
Private Sub MSComm1_OnComm()
Dim lectura As String
If MSComm1.InputLen > 7 Then
MSComm1.PortOpen = False
MSComm1.PortOpen = True
Exit Sub
End If
buffer = MSComm1.Input
If buffer = " " Then Exit Sub
canal = Left$(buffer, 1)
lectura = Mid$(buffer, 2, 6)
Textarray(Asc(canal) - Asc("A"Giño) = lectura
End Sub
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: leonther en 17 de Mayo de 2005, 20:50:00
me han ayudado mucho sus dudas y sugerencias espero ahora si terminar bien mi proyecto
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 18 de Mayo de 2005, 13:48:00
Bien ya no se que esta mal:
Option Explicit
Private buffer As String
Private canal As String
Private lectura As String



Private Sub Form_Load()
"Dim CommPort As String, Handshaking As String, Settings As String
"Dim buferentrada    As String
MSComm1.CommPort = 1        "puerto com1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()

If MSComm1.InputLen > 7 Then
MSComm1.PortOpen = False
MSComm1.PortOpen = True
Exit Sub
End If
buffer = MSComm1.Input
If buffer = " " Then Exit Sub
canal = Left$(buffer, 1)
lectura = Mid$(buffer, 2, 6)
Textarray(Asc(canal) - Asc("A")) = lectura  "va de 0 a 3
End Sub

he aqui el código t me marca el error enTextarray(Asc(canal) - Asc("A")) = lectura
los parentesis estan bien
indica que el el indice no es valido y no se por que
ayuda por favor.

hp
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores en 19 de Mayo de 2005, 07:39:00
hhpp: "indica que el el indice no es valido y no se por que..."

Yo en el mensaje anterior:
"El segundo puede ser que lo que está adentro del parentesis "global" de un resultado que no esté dentro de los rangos de la matriz. Si textArray tiene 4 elementos empezando desde 0 entonces tenés las combinaciones textArray(0), textArray(1), textArray(2) y textArray(3). Cualquier número diferente a 0, 1, 2 o 3 te va a dar ese error"

Ese es el error que te está marcando, el numero de indice debe ser cualquier cosa.
Cuando se detiene ahí y te dá el error, pasá el cursor por encima de la variable "canal" y fijate que valor te dice que tiene. Después seleccioná toda la parte que está entre parentesis y fijate lo mismo. Vas a llegar a la conclusion de que el valor que te dá es cualquier cosa.
Como recomendación: sacá la parte que dice Asc("A") y en su lugar ponele directamente el valor, así queda menos complicado y descubrís antes el problema. De ahí en mas solo te queda saber que valor toma Asc(canal)...
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 21 de Mayo de 2005, 14:13:00
Hola colores y la verdad nose , por que hize todo y pareceria que se estuviese disparando en cadad carácter,  o talvez podria ser que el pic no esta enviando precisamente los datros cada 500ms?


Y que pasaria si recibo los datos de forma continua como los separaria ?

Gracias HP.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: IngLAOFX en 21 de Mayo de 2005, 17:00:00
Hola hhpp

Pues, segun lo que vi en tu programa, RTSHold esta puesto a 1, si bien recuerdo, creo que eso es para que se dispare el evento cada vez que recibes un byte en el buffer.

No se mucho de vb, pero pienso lo siguiente, si vos recibis digamos 6 bytes, donde el primero es del canal a, y su dato, luego el canal b y su dato, y finalmente el canal c y su dato, entonces cuando recibes el primer byte correspondiente a la etiqueta que usaste para el canal A, podria ser probable que el evento no termine de procesar el dato cuando el pic ya te envio otro byte y se volvio a disparar el evento.... puede ser problemas de ese tipo.

es por eso que en ocasiones se utiliza el control de flujo, pero que te parece lo siguiente:

Primero cerciorate que el PIC haga lo suyo, si tienes el programa en ensamblador, usa el mplab para simularlo y ver que efectivamente tome las muestras cada cierto tiempo que hayas establecido, esto es lo mas mportante quizas, ya que si no funciona esta etapa, no sabras ni que pex mas delante...

En segundo lugar, si cada 500 milisegundos vas a recibir digamos los 6 bytes, tal como lo mencione antes ( pueden ser los que quieras, pero debes estar conciente de la cantidad total) entonces ajusta tu RTSHold a ese numero, así, cuando recibas todos los datos completos, de cada uno de los canales, empezaras a procesarlos, ya que en ese peiriodo de tiempo, tendras aproximadamente 500 mS en los cuales el PIC no te enviara nada mas, y el VB tendra el tiempo suficiente para procesar los datos del buffer sin que se vuelva a disparar el evento del MSComm.

Como recomendacion, vos estas mezclando caracteres con datos binarios, por lo cual te recomiendo que leas byte por byte del buffer, porque, digamos que recibes los siguientes datos : A35 , donde el 35 es un numero decimal, pues en realidad lo que recibirias seria el codigo del caracter A, y el 35 codificado en binario, pues si lees 2 bytes,  el VB te lo va a manear de una manera extraña, al menos distinto de como lo deseas hacer, es por eso que si lo lees de byte por byte, no te dara problemas, asi me sucedio a mi, y asi lo arregle.

Es una opinion, y espero te ayude en algo..Muchas risas
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: IngLAOFX en 21 de Mayo de 2005, 17:09:00
Ahhh, por cierto, qu ete parece si en lugar de utilizar lo del text array como lo usas para determinar el indice, mejor utilizas un case y quizas asi te librs de ese problema, ademas que tu codigo sera mas entendible...Muchas risas
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 30 de Mayo de 2005, 20:25:00
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.}



Título: RE: comunicacion RS232 en Visual Basic
Publicado por: gmcorreaisaza en 09 de Junio de 2005, 16:48:00
Escrito originalmente por JeanPaul1
SonrisaHolaaaaa a todos,soy nuevo acá y leyendo los correos que han enviado veo que es un lugar confiable para resolver todas las dudas,espero tambien yo ayudarles también.Lo que quiero hacer es enviar datos de la PC por el puerto serial hacia un PIC(16F877) y también otro programa de enviar datos desde el PIC hacia la PC por el puerto COM en Visual Basic pero en entorno grafico. Además también necesito el hardware necesario para el primer caso.Les agradezco por su ayuda.Si alguien conoce alguna pagina buena se los agracdecería,es urgente,byeeeeeee


Que mas jeanpaul1, sabes tengo el mismo problema tuyo y lo tengo que resolver para poder graduarme, asi que porfavor si tienes el codigo o algun ejemplo seria bueno de tu parte enviarmelo al correo gmcorreaisaza@yahoo.es me seria de gran ayuda. gracias

Att: Giovanni
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: leonther en 02 de Julio de 2005, 15:49:00
Escrito originalmente por IngLAOFX

Hola hhpp Pues, segun lo que vi en tu programa, RTSHold esta puesto a 1, si bien recuerdo, creo que eso es para que se dispare el evento cada vez que recibes un byte en el buffer.



Por lo que he leido tiene razon incluso el amigo colores dice que no funciona como debe, pienso que cuando lo probo no le funciono y lo tomo asi como lo entiendo: que cuando veia un ascii 13, que es como enter el saltaba al OnComm, deberas que no se yo yo que entiendo es que con el MSComm.RThreshold = X el valor de X dice cuantos bits son los que el lee del buffer deentrada para pasar al evento.
de todas formas no se mucho, mi sugerencia seria que sepas cuantos son los bits que trasmistes y le des el valor de X.
Jejejeje,

fuera de tema: me presento estoy a punto de graduarme de tecnico en Venezuela y me mandaron un proyecto con pic y una pc.
He leido sus consejos y me han resultado muy utiles pero no he logrado todavia comunicarlos.
Me mandaron hacer un telecajero de esos de los bancos bueno con sus limitaciones pero con el mismo procedimiento, sabiendo que tengo que usar un uC yo no sabia mucho y compre el 16F874 que ya tiene los de la transmision serial, planteo mi caso:
*Tengo que usar el micro y la PC
Yo mi uso el micro para que
*controle un teclado externo de 4*4 q ya lo hice
*un lector de tarjeta bajo un esquema inventado que es por medio de optoacopladores que lo tengo medio listo porque es un tanto dificil hallar la sincronización
*ademas de controlar el dispensador de monedas (no utilizamos billetes) son
monedas de una sola denominación ya esta listo use un motor dc y le invierto el giro con un Puente H y esa inversion del giro la debo controlar con el micro pero las veces que deba ser tiene que venir de la pc (eso no lo he hecho).
La Pc me sirve para:
*bueno alli tengo la base de datos ya diseñe el programa lo hice en visual Basic y lo pense como superponer una serie de pantallas segun lo que reciba del micro
tengo el programa con algunos detalles malos porque no soy muy ducho en esto de basic.
Ademas aprovecho el puerto paralelo de la máquina para imprimir por medio de ella.
bueno que mas le digo la comunicacion es serial entre uC y PC
los datos los recibo de forma externa es decir del micro nada del teclado de la maquina yo ya he probado mi programa como si fuese del teclado del pc y todo bien.
realiza 3 tipos de operaciones:
retiro
consultra de saldo
transferencia de saldo
son dos tipos de cuentas
cuenta de ahorro y cuenta corriente
creo que eso es todo
bueno mi problema es que ando clavado con lo de la comunicacion serial aqui en mi universidad me exigen de programacion cuando yo no he visto ni un lenguaje de programacion por eso pido su ayuda mas adelante les muestro lo que he ehcho gracias.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp 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.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: jerupic666 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
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: LordLafebre en 14 de Septiembre de 2005, 01:43:00
Hola:

Revisa este link:

http://miarroba.com/foros/ver.php?foroid=64652&temaid=3767849

Suerte...!
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Artifox 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
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores 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.


Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp 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.ç
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Sebascl 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
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp 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
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp 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.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores 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.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores 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.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp 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.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp 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.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores 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.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: karen81 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
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 26 de Diciembre de 2005, 16:41:00

hasta donde se no se puede enviar datos hex, solo envia ASCII bueno no hay otra que convertirlos una llegados, pero no entiendo que esta mal ya por ejemplo envio la A  y no passa nada, haber una manito con el programita lo probe en el simualdor y trabaja de maravilla pero el momentio de montar no pasa nada.
Gracias.
hp.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 04 de Enero de 2006, 14:47:00
Bueno ya no se que esta mal revise todo el hardware y todas lsa conexiones estan bien, estoy recibiendo los datos de los cnales analogicos peroo no pasa nada el rato de trasnmitir por fsavor ayuda.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 04 de Enero de 2006, 21:19:00
Hola karen bueno simplemente sumas 30hex, por ejemplo 0=30hex
1=31hex, etc ahora tendrias que tomar restricciones 0-9, tb para las letras.
Bueno sigo con mi tema, recuerdan que esoty recibiendo los datos analogicos que el pic envia en los correspondientes textbox, con el codigo que ya puse atras.
los datos analogicos vienen de la siguiente manera:
A2.445B4.567.... etc
Ahora tyengo un problema por que cuando se produice una interrupcion en el pic
este envia otro dato el cual debo separar y colocarlo en diferentes textbos, segun
sea su equivalente bianrio, lo malo esque se mete justo en medio de los datos analogicos A3.455@B4.567 y asi, cualquier idea ayudaria.
Gracias.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: edibrok en 19 de Enero de 2006, 09:24:00
hola!!
quisiera saber como envio un enter en visial basic por el puerto serial, osea el CrLf, ya que nesecito enviar comandoas at y estos requieren de un enter al final.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores en 19 de Enero de 2006, 19:03:00
Char 13?
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: hhpp en 23 de Enero de 2006, 16:24:00
Bueno ahora ya vamos con esto y necesito su ayuda.
Como testeo bits en VB?

por ejemplo tengo el caracter "A" =01000001

quisiera hacer esto a= A(solo el bit 0)  and 1 (solo el bit 0) de modo que si ambos bits estan en uno  , entonces que el resulto sea uno, caso contrrario 0.

Aqui denme una mano .
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: BrunoF en 23 de Enero de 2006, 21:00:00
Hola. la funcion AND es una multiplicacion.

No entendi bien...yo aca te hice el algoritmo para que compares los 2 bits ceros de las dos variables que le pongas. El codigo:

Private Function FuncionAND(byte1, byte2 As Long) As Boolean

FuncionAND = CBool(Right(byte1, 1) * (Right(byte2, 1)))

End Function

y para ver el resultado hace asi:

MsgBox FuncionAND(1000001,11111111 )

Eso debe dar TRUE (=verdadero)(=1) ya que ambos bits ceros de ambos valores que ingrese son 1.

Espero que sea eso lo que querias.Proba y juga. Exitos.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Pithya en 24 de Enero de 2006, 11:56:00
Hola!! Es la segunda vez que entro en el foro, espero que me podais ayudar como la otra vez... Mi problema es que tengo un pic 16f873a en el que he almacenado datos de humedad que un robot ha ido tomando y quiero pasarlos a visual basic, pero al usar el programilla que habia por aqui he visto que te pasa el codigo binario a ascii automaticamente y a mi eso no me vale, necesitaria ver los numeros en binario!! Alguien sabe como puedo hacerlo? Gracias!!
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: BrunoF en 24 de Enero de 2006, 12:05:00
Hola. No te entendi bien...
Si. El programita que usaste es seguramente el que hice para ENO45. Y es para pasar de binario a ASCII.
Si lo que necesitas es pasar de binario a decimal, entonces solamente necesitas cambiar el programa asi:

Private Function Bin2String(DatoBin As Long) As integer

Dim DatoInt As Integer
Dim Recorre As Integer

DatoInt = 0
For Recorre = 0 To Len(CStr(DatoBin)) - 1
DatoInt = DatoInt + ((2 ^ Recorre) * CInt(Mid(CStr(DatoBin), Len(CStr(DatoBin)) _
- Recorre, 1)))
Next

Bin2String = DatoInt

End Function

y la llamas por ejemplo asi:


dim midecimal as integer
midecimal = Bin2String(1001)
msgbox midecimal

Ahora si lo que necesitas es pasar de decimal a binario..hay que hacer otro programa, pero no es muy complicado. Exitos.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Pithya en 25 de Enero de 2006, 10:06:00
Bueno... a ver si me se explicar:

Tengo un form en el que recibo datos por el puerto serie, yo envio datos en binario, pero en mi form "recibir" me aparecen en ASCII. Así que tengo un problema, porque por ejemplo, un "1"binario es un "1" decimal, pero no es un "1" ASCII... O sea que al enviar, por ejemplo, el byte "1000001", que es un 65 decimal, me aparece en la pantalla una "A" y no un "65", que es lo que yo quiero. Adjunto mi form "recibir", a ver si sabes que arreglos le tengo que hacer... perdon porque no se mucho de visual (xa entendernos, no me he enterado de nada de lo que habia escrito en tu post anterior) si me puedes ayudar te estaré eternamente agradecida.

FORM TRANSMISION RS232:

rivate Sub cmdDatos_Click()
Dim buferentrada As String
buferentrada = MSComm1.Input        
txtRebre.Text = buferentrada      
End Sub

Private Sub Command1_Click()
Form3.Show
Form8.Hide
Form3.Enabled = True
End Sub

Private Sub Form_Load()
Dim CommPort As String, Handshaking As String, Settings As String

Dim buferentrada    As String
MSComm1.CommPort = 1        
MSComm1.PortOpen = True    
End Sub

Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)

End Sub

Private Sub MSComm1_OnComm()
MSComm1.Settings = "9600,n,8,1" "configuracion del puerto serie

End Sub

Private Sub Texto_Change()

End Sub

Private Sub Texto2_Change()

End Sub

Private Sub txtRebre_Change()

End Sub


YA TA

En el form tengo un boton para recibir, uno para salir (volver al form principal) y el textbox donde se ven los datos que llegan
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: BrunoF en 25 de Enero de 2006, 13:28:00
Hola.

Cambia esto:

Dim buferentrada As String
buferentrada = MSComm1.Input

por esto:

Dim buferentrada As integer
buferentrada = Asc(MSComm1.Input )

Exitos.
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Pithya en 29 de Enero de 2006, 05:10:00
No funcionó Llorica

Me da un error en lo de Asc(...). He encontrado un programilla por el foro para pasar de ASCII a decimal, a lo mejor me sirve... probare a ver que tal. El codigo es el siguiente (por si alguien ve algo mal o alguna sugerencia...)

Recibo en el puerto un caracter ascii de ese valor hexadecimal que es del tipo string, lo que hago es convertir dicho valor en un valor decimal (recibo un string de 2 caracteres para la resolucion de 10bits que comentas)
//////////////////////////////////////////////////////////////////////////
Public Function pasarAsciiDato(cad As String) As Integer
Dim rdo As Boolean
Dim carAscii As String
Dim carHex As String
Dim carDec As Integer

"a partir de un caracter ascii recibido en el puerto,
"obtenemos el dato asociado
"If cad <> vbNullString Then
carAscii = Asc(cad)
carHex = Hex(carAscii)
carDec = pasarHexADecimal(carHex)
"End If
pasarAsciiDato = carDec
End Function
//////////////////////////////////////////////////////////////////////////////////
Esta funcion nos devuelve el valor decimal de los 10bits que enviaste por el puerto.
aqui esta definida la funcion pasarHexADecimal()
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Public Function pasarHexADecimal(InputData As String) As Double
""
"" Converts Hexadecimal to Decimal
""
Dim i As Integer
Dim DecOut As Double
Dim Lenhex As Integer
Dim HexStep As Double


"" Zeroise the output
DecOut = 0

"" The length of the input
""
InputData = UCase(InputData)
Lenhex = Len(InputData)

""
"" Check to make sure its a valid Hex Number
""
For i = 1 To Lenhex

If IsNumeric(Mid(InputData, i, 1)) Then
""
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "A" Then
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "B" Then
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "C" Then
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "D" Then
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "E" Then
GoTo NumOk
ElseIf Mid(InputData, i, 1) = "F" Then
GoTo NumOk
Else
MsgBox "El número no es hexadecimal", vbCritical
Exit Function
End If

NumOk:
Next i

HexStep = 0

""
""
"" Convert the Number to Decimal
""
For i = Lenhex To 1 Step -1

HexStep = HexStep * 16
If HexStep = 0 Then
HexStep = 1
End If

If Mid(InputData, i, 1) = "0" Then
DecOut = DecOut + (0 * HexStep)
ElseIf Mid(InputData, i, 1) = "1" Then
DecOut = DecOut + (1 * HexStep)
ElseIf Mid(InputData, i, 1) = "2" Then
DecOut = DecOut + (2 * HexStep)
ElseIf Mid(InputData, i, 1) = "3" Then
DecOut = DecOut + (3 * HexStep)
ElseIf Mid(InputData, i, 1) = "4" Then
DecOut = DecOut + (4 * HexStep)
ElseIf Mid(InputData, i, 1) = "5" Then
DecOut = DecOut + (5 * HexStep)
ElseIf Mid(InputData, i, 1) = "6" Then
DecOut = DecOut + (6 * HexStep)
ElseIf Mid(InputData, i, 1) = "7" Then
DecOut = DecOut + (7 * HexStep)
ElseIf Mid(InputData, i, 1) = "8" Then
DecOut = DecOut + (8 * HexStep)
ElseIf Mid(InputData, i, 1) = "9" Then
DecOut = DecOut + (9 * HexStep)
ElseIf Mid(InputData, i, 1) = "A" Then
DecOut = DecOut + (10 * HexStep)
ElseIf Mid(InputData, i, 1) = "B" Then
DecOut = DecOut + (11 * HexStep)
ElseIf Mid(InputData, i, 1) = "C" Then
DecOut = DecOut + (12 * HexStep)
ElseIf Mid(InputData, i, 1) = "D" Then
DecOut = DecOut + (13 * HexStep)
ElseIf Mid(InputData, i, 1) = "E" Then
DecOut = DecOut + (14 * HexStep)
ElseIf Mid(InputData, i, 1) = "F" Then
DecOut = DecOut + (15 * HexStep)
Else
MsgBox "ERROR pasando a decimal", vbCritical
End If

Next i



pasarHexADecimal = DecOut

eds:
End Function
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Y gracias al que posteó esto y a todos los que respondeis Sonrisa
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: BrunoF en 29 de Enero de 2006, 11:06:00
Hola. Tiene que funcionar...
A ver si nos entendemos:

Vos lo que queres es esto?

ejemplo:

mivariablestring = "@"

¿y queres obtener el valor 64, que le corresponde al @ en la tabla ASCII?

si es eso hace:

if mivariablestring <> "" then mivariableinteger  = asc(mivariablestring)

"" se puede reemplazar por VbNullString. Como desees.

Exitos
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Yului en 17 de Febrero de 2006, 08:17:00
Hola a todos.. Soy nueva en el foro, decidi inscribirme porque veo que tratan temas muy interesantes...

Les digo que mi tesis se basa en realizar la implementación de un bus de campo asíncrono, mediante el uso de PIC 16f84, la parte que tengo que desarrollar es el protocolo de comunicación entre el pic maestro con la PC (mediante comunicación serial) y el maestro con los esclavos.. Estoy un poco desorientada.. Por lo que agradezco toda la ayuda que me puedan proporcionar al respecto...

Gracias...
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Yului en 17 de Febrero de 2006, 08:18:00
Hola a todos.. Soy nueva en el foro, decidi inscribirme porque veo que tratan temas muy interesantes...

Les digo que mi tesis se basa en realizar la implementación de un bus de campo asíncrono, mediante el uso de PIC 16f84, la parte que tengo que desarrollar es el protocolo de comunicación entre el pic maestro con la PC (mediante comunicación serial) y el maestro con los esclavos.. Estoy un poco desorientada.. Por lo que agradezco toda la ayuda que me puedan proporcionar al respecto...

Gracias...
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: LordLafebre en 17 de Febrero de 2006, 08:32:00
Hola Yului:

Bienvenida a esta grandiosa comunidad de mas de 7000 usuarios que somos Rebotado...

Con respecto a tu proyecto, comentanos un poco mas sobre el que quieres exactamente hacer, cuales son las herramientas que vas a utilizar y que es lo que tienes para partir desde alli...! Sonrisa Gigante
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: Colores en 27 de Marzo de 2006, 11:38:00
if len(buffer) = 21 then
.......
elseif len(buffer) = 34 then
.......
end if
Título: RE: comunicacion RS232 en Visual Basic
Publicado por: en 04 de Abril de 2006, 19:57:00
Escrito originalmente por todopic
Hola, con este programita, pueden comunicar y recibir por el puerto serie de la PC, es un comienzo, y pueden adaptarlo a sus necesidades.... funciona OK!!!  


Tengo un Visual Basic ver 4.0 y nesecito hacer un programa sensillo para comunicarme por el puerto serial COM1 ha un instrumento y resivir senales del instrumento, nesesitu un programita que pueda correr en esta vercion si pudierran ayudarme gracias

mi correo es carlalfonzo@yahoo.com
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: pitillo en 20 de Abril de 2006, 10:56:11
hola buenas tengo un problemilla:
he usado el hyperterminal para enviar dos datos a mi pic y los guardo en 2 variables:
var1 = gethex();
var2 = gethex();
y no me ha dado ningun problema, mi problema viene ahora que esos datos los tengo que enviar por el visual basic y no se como hacer el programa del pic para que me guarde los dos datos en una variable.
Esto tiene que ser algo muy sencillo porque simplemente estoy enviando una cadena de texto y si pulso o no un boton, pero de verdad que no tengo ni idea como me llegan a mi pic.
Cualquier ejemplo sencillo de pic que reciba datos yo creo que me valdria....
Un saludo para todos.
Título: Ayuda puerto rs232
Publicado por: bigteacherfco en 18 de Mayo de 2006, 12:24:38
Hola saludos alguien de los desarrolladores me pordria solucionar un problemilla neceito mostrar datos en una pantalla lcd que se conecta atraves del puerto rs232 pero no se como hacerlo si alguien me puede alludar gracias.
Título: Comunicacion RS232 en Visual Basic
Publicado por: fcm5241e en 23 de Mayo de 2006, 17:25:33
Hola amigos.

Soy nuevo en esto de los foros y deseo obtener ayuda para poder recibir datos de una balansa por el puerto COM1

no importa que me llegue como una sola cadena... pero lo que meinteresa es obtener la lectura.....

Les agradesco de antemano ..... mi correo es fcampoverde@laeuropea.com.ec

Saludos
Freddy. C
Título: que empiezen las clases de Visual Basic para comunicación RS232
Publicado por: vdiazg en 01 de Junio de 2006, 02:55:55
 :) Hola amigos, en vista que he recibido bastante ayuda en este foro, quisiera ofrecer ahora la mia, he visto que hay varias dudas con respecto al uso del puerto serial en VB, bueno ofrezco empezar unas pequeñas clases desde lo mas basico (conceptos y tecnicas) y ejemplos (codigos), obviamente deben tener al menos una pequeña base en programacion en VB.
Espero su respuesta para empezar todo por el FORO.  :P
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: vszener en 01 de Junio de 2006, 10:12:04
Jeje pues adelante....


Suerte!!! :wink:
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: TECNO en 10 de Junio de 2006, 14:39:59
Hola que tal. Soy nuevo y nesecito ayuda, como hago para descargar el programa de visual. Agradesco alguien que me lo diga.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: navaismo en 04 de Agosto de 2006, 00:19:39
Hola amigos pues hace poco me adentre a la comunicacion serie y es maravillosa (jajaja) bueno no es muy dificil y lo que queria compartir es este pcb para hacer una plaquita rapida para conectar el pic al pto serie.

los capacitores como saben todos son de 1uF y si son polarizados las tierras miran hacia el conector db9 la max232 va con la muesca hacia el lado derecho de la placa y los conectores son para la corriente y la transmision de datos.

el primer conector(de izquierda a derecha) es el de transmision el primer pin es el que va al pin transmisor del pic y el segundo a al pin receptor del pic.

El segundo es la alimentacion el primer pin es gnd y el segundo 5V
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: ferra en 31 de Agosto de 2006, 19:59:42
no encuentro el programita, de donde lo saco?
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Cryn en 06 de Septiembre de 2006, 01:50:06
los links de la primera pagina, ya no estan ahi, quisiera verlos, para aprender, y de paginas posteriores, piden contraseña de mi @, y coloco la del foro y no da, se peuden recuperar todavia??
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: interticio en 30 de Noviembre de 2006, 11:22:57
hola a todos en esto de bisual estoy muy mal y quiciera hacer una comunicacion de un pic con la Pc. si alguien me puede pasar algun ejemplito para empezar le estaria muy agradecido.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: cororo en 12 de Diciembre de 2006, 23:13:17
Hola
    Necsito usar una libreria que consegui para utilizar el GPIB,pero nose como abrirla o que comandos utiliza para realizar las comunicaciones con equipos GPIB, espero y me puedan ayudar pasandome una libreria con la forma en como se declaran cada una de sus funciones o algun programa para abrir la libreria que consegui.
Gracias de antemano.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: ascii en 26 de Diciembre de 2006, 10:53:38
A las personas que les gustaria aprender como realizar aplicaciones por comunicacion RS232 aqui dejo un ejemplo realizado en visual Basic 6, se trata de un simple chat que sirve para comunicar 2 computadores. El activex que se ocupa se llama mschart.


http://www.gigasize.com/get.php/255814/serialchat.rar
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Milo en 18 de Enero de 2007, 09:14:41

Buennass:

Buennas:

Estoy intentando capturar dos bytes con el puerto com, mi dspic envia continuamente bytes al programa de visual Basic, pero no se como hacer para que me los capture de dos en dos (bueno si con el RTrehold, pero no), he estado mirando en el foro y he probado varias cosas pero no consigo que me lo haga.

El problema que tengo es que el indice del array solo se incrementa una vez, supongo que será porque solo entra una vez en el if. Lo que hace el programa es que me saca por el Text1.Text todos lo datos que envio.

¿Cómo puedo hacer para que, a la vez que va ejecutandose el comEvReceive, me guarde los datos en el array en su correspondiente posición incrementando el indice?

Muchas gracias de antemano,

Este es mi código:

Private Sub MSComm1_OnComm()
    Dim i As Integer
    Dim Valor As String
    Dim Dato(10) As String
    Dim X As Integer
   
   
    Dim textosalida As String
   
       

    If MSComm1.CommEvent = comEvReceive Then
        textosalida = MSComm1.Input
        txtDatosRx.Text = txtDatosRx.Text & textosalida
        txtDatosRx.Text = textosalida
        Dato(X) = textosalida
         X = X + 1
       
        Text1.Text = Dato(0)
        Text2.Text = Dato (1)

    End If
   
     
End Sub


Saludos,
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: BrunoF en 18 de Enero de 2007, 11:18:51
Hola.

Para poder recibir de a dos bytes, basicamente necesitas cumplir con dos requisitos:

RThresHold debe valer 2;
InBufferSize debe ser mayor igual a 2;

Para que lo que queres funcione, no necesitas mas que sacar:

    Dim Dato(10) As String
    Dim X As Integer

del evento Private Sub MSComm1_OnComm().

Asi como esta ahora, las variables esas son locales. Entonces, se crean al entrar el programa al Sub y se destruyen al salir de este.
Declaralas fuera, y de esta manera seran globales y no se perderan.

Saludos.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Milo en 19 de Enero de 2007, 05:41:51

Muchas gracias,  :mrgreen:, Bruno

La información me ha servido de mucho.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Designer en 27 de Abril de 2007, 20:26:05
Hello amigos, necesito ayuda, con RECIBIR datos en visual desde 16f877? les agradesco todo lo que puedan brindarme.!!!!!!!!!!!
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: proycto(A) en 16 de Mayo de 2007, 23:24:27
ESTE FORO TIENE EXACTAMENTE LO QUE NECESITO, SIN EMBARGO EL LINK PARA DESCARGAR YA NO ESTA, QUIEN LO PUDIERA SUBIR SERIA DE GRAN AYUDA

DE ANTEMANO GRACIAS
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Milo en 21 de Mayo de 2007, 13:16:39

Buennass,

Tengo un problema con la recepción de caracteres con pic. Creo que el problema es de tiempos. He intentado hacerme un especie delay en c a lo bruto pero no ha funcionado, este es mi codigo y me interesa hacer una especie de delay como funcionaría en c para cada vez que envio en caracter espere cierto tiempo.

Citar
Private Sub cmdAceptar_Click()
       
    Flag = 0
           
    frmPrincipal.MSComm1.Output = Chr$(&H2E)                    'Caracter sincronismo
    Temporizacion                                                            'Intento de función delay
    frmPrincipal.MSComm1.Output = Chr$(&HA)                      'Modo Algoritomo PY0
    Temporizacion
    frmPrincipal.MSComm1.Output = Chr$(&HB)                     'Modo Algoritomo PY0
    Temporizacion
    frmPrincipal.MSComm1.Output = Chr$(&HC)                     'Modo Algoritomo PY0
   
End Sub


Private Function Temporizacion()
    Timer1.Enabled = False
    Timer1.Interval = 2000
    Timer1.Enabled = True

    While Flag = 0
          Flag = Flag           'Por poner algo dentro del while
    Wend

End Function



Private Sub Timer1_Timer()
    Timer1.Enabled = False
    Flag = 1
End Sub


Lo que intento hacer es que se espere dos segundos cada vez que envio un caracter a mi pic, pero no funciona se me cuelga el programa. Si alguien sabe otra forma mas coherente, que la que me he inventado, de hacer un delay espero su consejo


saludos,
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Milo en 21 de Mayo de 2007, 13:39:38

He descubierto que si uno mira antes por la web tienes mas probabildades de que le funcione una cosa,en vez de inventar como yo,  :D

Así que no se si me valdrá para mi programa del pic, pero funcionar como delay funciona:

Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Y luego pones en la función que utilices, esto

Sleep 2000 'Esto es para dos segundos, es decir que el numero que pongas es el numero de milisegundos que va estar haciendo el delay

Aquí esta las web de donde lo he sacado, de todas manera solo puse "delay en visual basic" , en el google, dificil ehh  :mrgreen:

http://support.microsoft.com/kb/212667 (http://support.microsoft.com/kb/212667)


http://www.daniweb.com/techtalkforums/thread605.html (http://www.daniweb.com/techtalkforums/thread605.html)

saludos,
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: PalitroqueZ en 21 de Mayo de 2007, 19:04:45
si Milo es una opción,

aunque hay casos y depende de la aplicación en que puede causar problemas, puesto que esa api puede 'congelar' la aplicación el tiempo asignado, por la web se consiguen procedimientos que hacen las de retardos base de contadores y usando el 'do events'

por ej:

http://www.canalvisualbasic.net/temarios/trucos3.asp

en este link aparece una función llamada Esperar

Un sencillo Cronómetro

Para ejecutar un lapso de tiempo x (por ejemplo 5 segundos), escribir el siguiente codigo en un Modulo Nuevo:

    Public Sub Esperar(Tiempo as Single)
        Dim ComienzoTiempo as Single
        Dim FinTiempo as Single
        ComienzoTiempo = Timer
        FinTiempo = ComienzoTiempo + Tiempo
        Do While FinTiempo > Timer
                Do Events
                 If ComienzoTiempo > Timer Then
                        FinTiempo = FinTiempo - 24 * 60 * 60
                End If
        Loop
   End Sub

se puede incluir el tiempo en modo fraccional o con decimales


Título: Re: comunicacion RS232 en Visual Basic
Publicado por: BrunoF en 21 de Mayo de 2007, 19:14:57
Bueno.

Pedro: cabe mencionar la excepcion de que la funcion Timer cuenta los segundos pasados de medianoche, por lo que el algoritmo no funcionará bien problablemente en cercanías de la medianoche, si el usuario decide cambiar la hora del sistema, o si el tiempo de espera es muy grande(el algoritmo nunca funcionará bien si Tiempo > 24*3600),etc si no se tienen en cuenta ciertos ajustes que se le deben hacer.

Saludos.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: PalitroqueZ en 21 de Mayo de 2007, 19:34:11
¿que tal Bruno?

no me había pensado en ese pequeño gran detalle, y en las aplicaciones que le he montado no lo había probado cerca de medianoche, me tocará probarlo

por allí hay otra rutina, que trabaja de forma similar, no se si tenga el mismo problema, pero ésta trabaja solo con enteros.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Milo en 22 de Mayo de 2007, 12:48:41
Buennas:

Gracias Pedro y Bruno por la ayuda, de momento seguiré con la función sleep a ver si no me da muchos problemas, cuando tenga un poco mas de tiempo probaré a optimizar esa función.

También vi algo por la web que utilizaba en método OnTime,

Sub MyMainMacro()

   ' Pause for 15 seconds.
   Application.OnTime When:=Now + TimeValue("00:00:15"), _
      Name:="MyDelayMacro"

End Sub

Public Sub MyDelayMacro()

   ' Place your delayed macro commands here.
   MsgBox "This macro runs after 15 seconds."

End Sub

La web es la de microsoft la postee dos mensajes atras.

Saludos y gracias de nuevo.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: BrunoF en 22 de Mayo de 2007, 13:57:41
Ojo que esa funcion es para crear macros con controles del Excel(office en general).

Saludos.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Milo en 22 de Mayo de 2007, 16:10:20

Buennass:

Yo ni siquiera la he mirado bien pero aunque sea para office te da una idea de como hacerla con visualbasic controlando el tiempo (función time), se podría ver que hora es, y hacer un while comprobando la hora hasta que pasasen x segundos , podría ser otra solución.
Podría ser algo así ?


saludos,
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: homfly en 05 de Junio de 2007, 08:39:04
donde esta el archivo que hay en el primer mensaje?Quiero empezar a aprender a comunicarme con rs232 y tambien a aprender a usar a visual basic.

Mandarme informacion que tengais sobre visual basic y comunicacion pic-pc  a

homfly@hotmail.com

Gracias
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: artemix en 05 de Junio de 2007, 20:34:23
hola amigo estaba quisiera que me envies el programa de la comunicacion RS232 en visual basic...para probarlo e implementarlo en el proyecto que estoy realizando.te agradeceria que me lo envies a mi correo:salim2281@hotmail.com

Título: Re: comunicacion RS232 en Visual Basic
Publicado por: proycto(A) en 28 de Junio de 2007, 16:23:46
Hola a todos tengo un problema, resulta que estoy recibiendo los datos de un pic por el puerto RS232, y si bien obtengo la grafica, me falta añadir valores a los ejes del grafico en el formulario y cambiar el color de fondo del grafico (que es negro). Adjunto el codigo fuente, a ver si alguien me puede ayudar, mi mail es anarkicio@hotmail.com para cualquier ayuda.


Private serie As String   
Private buffer As String
Private buffer2 As String
Dim vel_int As Integer
Dim vel_ant As Integer
Dim velocidad As Double
Dim TM As Integer
Dim ptr As Integer

Private Sub MSComm1_OnComm()
buffer = MSComm1.Input

vel_int = Val("&H" + Mid(buffer, 1, 2)) 
vel_ant = Val("&H" + Mid(buffer, 4, 2))
TM = Val(Mid(buffer, 7, 3))
velocidad = (vel_int - vel_ant) * 10# / TM
Text1.Text = Str(vel_int) + " " + Str(vel_ant) + " " + Str(TM) + " V: " + Str(velocidad)
   
If ptr > 499 Then
ptr = 0
Grafico.Cls
End If

Grafico.Line (ptr, 255 - vel_int)-(ptr - 1, 255 - vel_ant)
       
ptr = ptr + 1
End Sub
Private Sub Form_Load()
ptr = 0

      
MSComm1.CommPort = 1                 
MSComm1.Settings = "9600,N,8,1"   
MSComm1.InputLen = 0               
MSComm1.RThreshold = 12 
MSComm1.PortOpen = True     
End Sub
 

SALUDOS A TODOS
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: eagle_gold en 02 de Julio de 2007, 19:32:18
Hola amigos:

Soy un aficionado novato a los pics, y tengo poco tiempo estudiando los temas del foro los cuales me parecen muy interesantes.
he querido descargar los archivos adjuntos de los primeros post de este tema pero no veo las links, y en el foro de miarroba aunque me inscribi tambien me dice que no tengo nivel suficiente para descargarlos. Mi pregunta es: de donde los puedo descargar o que debo hacer para bajarlos de miarroba?
Cualquier ayuda es bienvenidad y gracias por las aportaciones de todos los que saben para que los novatos como yo aprendamos.
 :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: geor1984 en 06 de Julio de 2007, 17:17:09
hola todo pic. soy nueva en esto y queria saber si me podías mandar por mail el programita de rs232 en VB por mail por favor porque no sé de donde bajarlo! muchas Gracias! mi mail es: rinaldoni@gmail.com
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: gg en 25 de Julio de 2007, 00:14:57
Hola, soy nuevo en esto y al igual que otras personas, no encuentro de donde bajar el código para hacer las pruebas. Me lo podrías pasar a gvguida@hotmail.com

Desde ya muchas gracias.
Saludos.
Título: MSCOMM en VisualFoxPro 6
Publicado por: Noemed7 en 03 de Agosto de 2007, 13:39:51
Hola necesito imprimir un ticket en una tm-u200a, mi problema es que al presionar el boton para mandar a imprimir solo lo hace cuando rastreo el funcionamiento con la ventana "debugger", si lo dejo seguir sin rastrear solo imprime algunos datos, es como si el envio de datos supera el buffer de la impresora o algo asi.
Necesitaria saber como enviar mas lentamente los datos a la impresora o si tienen otra solución.
Gracias!
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Nerp en 03 de Septiembre de 2007, 20:56:23
Hallo , buenas el encabezado dice que se descargaba el programa para interectuar con el puerto serie pero no lo encuentro ningun link de donde descargarlo . saludos  :shock:
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: IAO en 04 de Septiembre de 2007, 15:37:19
Holaaaaaaaa:

Pensé que era mejor continuar este hilo, que abrir otro nuevo con más de lo mismo.

Bueno para todas esas personas que buscan un ejemplo, un ejemplo para entender, aquí les muestro uno.
Lo realizo el Sr. Paliztroquez, Gracias por tu ejemplo, con todo mi respeto y compañerismo, muchas gracias.
Ejemplo Paliztroquez (http://www.todopic.com.ar/foros/index.php?topic=8348.msg55735#msg55735)

Basado en este ejemplo. Me tomé la libertad de modificar algunas cosas, pero la idea principal ya saben de quien es.
Debo decir que esta trabajando bien, y lo comenté por varias partes, para aquellos que no entendemos mucho.

Basado en un monitor de LPT que publiqué aquí:    LPT monitor (http://www.todopic.com.ar/foros/index.php?topic=7042.msg129216#msg129216)  lo hice hace como 2 años atrás, me tomó 3 días realizarlo.
Decidí hacer algo parecido. Este me tomó casi 4 días, se me complicó en algunas partes pero aquí está:RS232Monitor (http://www.box.net/shared/xc4yhdvo2z)
falta implementar la parte de com3 pero no es tan importante para comenzar.

Una nota fuera del contexto: Para los nuevos en programación, trata de aprender a utilizar lo que llaman funciones
y  subrutinas.  Te hará más divertida la forma de programar. Igual en asembler con los pic (o cualquier lenguaje) ,
trata de efectuar tantos CALL y MACROS como puedas, llénate de esas pequeñas Subrutinas , Funciones  y Macros
que te facilita la tediosa tarea de programar. No hagas código tipo espaguetti, o tipo churro como le digo yo.
Espero entiendas lo que escribo.

Recuerde que yo estudié electrónica, no programación. Hay personas como yo, que entienden más con un ejemplo que leyendo.
Ahora, el ejemplo más la lectura me da el poder para terminar.
Vean que lo finalicé sin hacer una pregunta en el foro. Pero me metí en la lectura, como un pedazo de animal hasta
que lo logré.

Se les quiere, con todo respeto su amigo IAO....
Bye('_').




Título: Re: comunicacion RS232 en Visual Basic
Publicado por: IAO en 05 de Septiembre de 2007, 15:15:09
Holaaaaa:

Vean la nueva modificación es una imagen .BMP:
Ver Imagen (http://bp0.blogger.com/_MjmgxJ7iCEk/Rt7wbltOCtI/AAAAAAAAACk/jffqlDb2kto/s1600-h/Pic-Pc.bmp)


Bye('_').
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Nerp en 05 de Septiembre de 2007, 22:05:21
Ese programa se ve rebueno , me podrian decir que programa es , curso el 4to ciclo de electronica y el profe nos mando a hacer la placa Go Go , todo facil al fabricarla pero ni idea de la programacion del pic 16f877p , supuestamente lo que desea el profesor es q la al conectarla a la pc y ejecutar el programa que supuestamente tenemos que hacer el programa lea los sensores conectados a la placa. bueno me pregunto si alguien a hecho un programita parecido si es posible en vb6 q mas o menos entiendo , saludos , buen foro :P
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: IAO en 06 de Septiembre de 2007, 13:29:44
Holaaaaa:

Citar
Nerp escribió.
Ese programa se ve rebueno , me podrian decir que programa es.
Sr. Nerp:
Usted me deja sorprendido.  :shock:         
Yo admiro a los Colombianos y Peruanos por la información tanto en revistas como logros en electrónica poseen.
Aquí en Venezuela yo (hablo por mi) no he visto algo parecido. Y eso desde hace años atrás, nunca vi información como la de ustedes.
Usted pregunta algo tan elemental, que me parece fuera de lógica su pregunta.

Pero 3 mensajes más arriba estan los archivos para los programas VB y Proteus Isis. El que esta en el fondo es Proteus Isis.
Las dos ventanas más pequeñas son de VB.

Espero no haberle ofendido  :?, pero es que me parece una burla, en vez de una pregunta. :(

Mis saludos y respetos.... :)
Bye('_').
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: PalitroqueZ en 06 de Septiembre de 2007, 19:22:25
Hola IAO.

Te felicito por el avance que hiciste.  :-/ :-/ :-/


un saludo y a programar se ha dicho..
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: IAO en 06 de Septiembre de 2007, 20:37:03
Holaaa:

Sr. PalitroqueZ:
Sin su ayuda o primer impulso, todavía estaría indagando y como perdido. Si realicé un pequeño avance eso
se debe a su aporte. Nunca tendré palabras para tanto agradecimiento que llevo dentro de mi.

Nuevamente gracias.

Me despido con gran gratitud  :-) :-/

Bye('_')
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: IAO en 13 de Septiembre de 2007, 12:48:14
Holaaaaaaa:

Ya termié la modificación para la sorpresa, que ya no es sorpresa. Antes de criticar, te digo: Solo es un ejemplo.
Mientras aprendo se los paso a ustedes los que saben menos y así sabemos todos.
(http://img252.imageshack.us/img252/4751/muestraxx2.gif)

Se que el medidor analógico no es exacto, pero solo lo hice para tener una idea rápida de como controlarlo.
Quieres más exactitud, debes ponerle más cariño al asunto en general.
Aquí les dejo el link, para descargar el VBprog de este insignificante pero ilustrativo ejemplo.
PIC-Monitor-Visor Analógico. (http://www.box.net/shared/c6oo3f7ifq)
No incluí el progama en ISIS ya que me imagino que lo descargaste de la Publicación que está más arriba.
Publicación más arriba. (http://www.todopic.com.ar/foros/index.php?topic=7013.msg129618#msg129618)

Código: [Seleccionar]
'''Aquí es para el Relog Analógico.
        '''Traté de hecer algo como hizo el Master Brunof pero lo dejé así, soy medio tapao.
        If valor2 = 1022 Then FormMeter.VScroll1(0).Value = value1 + 11 'Aguja en 5 Voltios
        If valor2 = 921 Then FormMeter.VScroll1(0).Value = value1 + 9   'Aguja en 4.5 Voltios
        If valor2 = 818 Then FormMeter.VScroll1(0).Value = value1 + 8   'Aguja en 4 Voltios
        If valor2 = 716 Then FormMeter.VScroll1(0).Value = value1 + 7   'Aguja en 3.5 Voltios
        If valor2 = 614 Then FormMeter.VScroll1(0).Value = value1 + 5   'Aguja en 3 Voltios
        If valor2 = 511 Then FormMeter.VScroll1(0).Value = value1 + 4   'Aguja en 2.5 Voltios
        If valor2 = 409 Then FormMeter.VScroll1(0).Value = value1 + 3   'Aguja en 2 Voltios
        If valor2 = 307 Then FormMeter.VScroll1(0).Value = value1 + 2   'Aguja en 1.5 Voltios
        If valor2 = 205 Then FormMeter.VScroll1(0).Value = value1 + 1   'Aguja en 1 Voltio
        If valor2 = 102 Then FormMeter.VScroll1(0).Value = value1 + 0   'Aguja en 0 Voltios
        If valor2 = 1 Then FormMeter.VScroll1(0).Value = value1 + 0     'Aguja en 0 Voltios

Espero lo puedan disfrutar más, de lo que yo lo he disfrutado  :5].  Fue hecho más para ustedes que para mí. :-).
Esto solo me ha quitado más tiempo libre, pero ya está, que más da.

Con todo cariño, respeto y aprecio me despido.
Si hago algo más, después se los paso.

Estoy feliz porque terminé esto.  :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :D :D :D :D

Bye('_').

Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Milo en 13 de Septiembre de 2007, 15:47:24


Enhorabuena, IAO, ha sido corto pero intenso,

saludos,
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: IAO en 25 de Septiembre de 2007, 11:03:35
Holaaaaaaaaaa:

Sr. Milo:
Tienes razón ha sido muy intenso, gracias por los saludos.
Saludos para ti, lo tuyos y toda esa gente linda de España. Tengo dos hijos en Tenerife, que les perdí el rastro hace dos años.  :?

;========================================================
PIC - RS232 y GRAFICO en EXCEL
Para los Novatos como Yo. Vean esto, para que se pongan verdes, les de nauseas y vomiten de la envídiaaaajajaja.... :mrgreen: :-/
Porque no les daré los fuentes.
(http://img502.imageshack.us/img502/7814/verimgge8.gif)
Saben uhmmm  Les Mentí  :D  :D  :D
Aquí les dejo los fuentes mis PANAS. Disculpen la Broma. Estoy Arrepentido.  Aprendan y aprendan que es bueno.
Les dejo este link para que sepan de donde salió la idea principal.
Idea Principal. (http://www.trash.net/~luethi/microchip/software/scope.html#toc)

Y este otro para Bajar el los fuentes, un tanto modificados para que pudiera trabajar en XP. Ya que la DLL llama una función que tiene otro nombre.
Solo les comento que: Un PIC manda por RS232 unos valores, los almacena en una columna de la Hoja de Cálculo y los Grafica.
Está también el oscilloscopio del Link pero funcionando, porque así como esta allí en WinXp no va a trabajar.
Amigos espero lo puedan disfrutar, porque a mi me hizo rabiar mucho.  :5]
Está todo listo para funcionar. Yo lo ejecuté en XP-SP2 con Office 2003 y todo me trabajó bien.
Si algo no le funciona, lea un poco. No me culpe de sus errores y no ofenda a mi mamá.  :D :D :D :D :D :D
Programas con la Modificación. (http://www.box.net/shared/bj8pfp1fsl)

Bye('_').  :-)
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: PalitroqueZ en 25 de Septiembre de 2007, 14:37:47
pués te felicito por tu esfuerzo IAO, yo no he montado datalogger usando los macros del office, a ver que se aprende de allí.

gracias
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: IAO en 25 de Septiembre de 2007, 18:41:33
Holaaaaaaa:

Gracias -PalitroqueZ- .
Espero le pueda servir a mucha gente. Yo tenia ese proyecto para Win98, nunca pude hacerlo correr en WinXP.
De verdad me interesó nuevamente el tema, pero ahora no me pateó como antes, porque tengo más kilometraje en lectura.
Las DLL, me dieron dolor de cabeza en su tiempo. Sacale la chicha Pali...Z a ese ejemplo, revientalo por todas partes.
Tiene sus truquitos de VBA que hay que saber donde estan o como programarlos.
Yo intentaré hacerlo con el MSCOMM?.OXC

Amigos no parece importante.  Pero llegará el momento que tendrás que utilizarlo.

Con todo cariño para la gente de este foro. Lo terminé en 3 días. Espero le saquen el jugo a esos ejemplos.

Saludos Pedro, Milo y a todos,  Saludos Verdaderos. :-)

Aquí les dejo el Link de un programa que recibe por RS232 unos datos los almacena en un Archivo.txt y los grafica en una hoja de calculo Excel.
RS232 a TXT a Excel (http://www.box.net/shared/7c61beg7j8) esta como decimos en Venezuela burda de pepiao.

Bye('_').

Nota para Novatos: Pana si lo mejoras o haces algo nuevo, compartelo no seas pichiiiiiiiiiiiirrrrrrreeeeeee.  :D :D
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Infausto en 15 de Octubre de 2007, 16:54:34
disculpen mi pregunta, pero ¿para que quieren graficar los datos recibidos por el puerto serial?. Mientras escriben la respuesta les comento que estoy terminando de desarrollar una DLL para leer y escribir en los puertos COM (no es una gran novedad pero todas las que he encontrado no me acomodan). La estoy escribiendo en C y la verdad es que no es nada complicado (utilizando la API de windows todo se simplifica bastante). Quería aprender bien los conceptos de esta intefaz, y que mejor para esta labor que programándolo. Si gustan y si lo necesitan realmente, puedo crear una aplicación (o una planilla excel) para graficar el input del puerto, pero realmente no se me ocurre para que pueda servir esto. Si lo que quieren es monitorizar la actividad del puerto serial, hay una muy buena aplicación: Free Serial Port Monitor (http://www.serial-port-monitor.com/Download/free-serial-port-monitor.exe). Es bastante completa y tiene una amplia gama de opciones.

Bueno, espero sus comentarios.

Saludos.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: PalitroqueZ en 15 de Octubre de 2007, 19:08:20
...¿para que quieren graficar los datos recibidos por el puerto serial?. ...

una posible utilidad es la de mostrar en "vivo" datos que varían continuamente, como por ejemplo datos del ADC del pic.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: RedPic en 15 de Octubre de 2007, 19:18:18
Me he descargado el Free Serial Monitor y tiene muy buena pinta.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Infausto en 15 de Octubre de 2007, 20:31:11
...¿para que quieren graficar los datos recibidos por el puerto serial?. ...

una posible utilidad es la de mostrar en "vivo" datos que varían continuamente, como por ejemplo datos del ADC del pic.

mm, todavia no entiendo para que necesitan el "poder" de un gráfico para eso. Pero bueno, cada uno con su método :P.

Me he descargado el Free Serial Monitor y tiene muy buena pinta.

Es muy bueno para monitorizar el puerto en serie. Lo uso hace tiempo y no sabes cuanto me ha facilitado las cosas.

saludos.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: MGLSOFT en 15 de Octubre de 2007, 21:22:49
En la pagina de PARALLAX encontraran un muy buen graficador de datos por el puerto serial, con escalado manual y automatico del eje X y del Y creo que tambien, tambien pueden escalarlos a mano.
Aunque esta desarrollado para hacer debug de sus programas PicBasic, se pueden enviar datos desde cualquier lenguaje respetando el formato de envio...
Es una buena herramienta, barata y a mano de cualquiera que la necesite... :mrgreen:
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: dogflu66 en 20 de Octubre de 2007, 22:29:08
Hola MGLSOFT, estoy buscando el graficador que indicas y no lo encuentro.
¿Es un herramienta del Basic o se puede bajar a parte?.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: dogflu66 en 20 de Octubre de 2007, 22:42:49
...¿para que quieren graficar los datos recibidos por el puerto serial?. ...

una posible utilidad es la de mostrar en "vivo" datos que varían continuamente, como por ejemplo datos del ADC del pic.

mm, todavia no entiendo para que necesitan el "poder" de un gráfico para eso. Pero bueno, cada uno con su método :P.

Me he descargado el Free Serial Monitor y tiene muy buena pinta.

Es muy bueno para monitorizar el puerto en serie. Lo uso hace tiempo y no sabes cuanto me ha facilitado las cosas.

saludos.



Hay infinidad de razones para usarlos.

Por ejemplo:
Tan solo para el adc del pic hay infinidad de sondas que se pueden conectar ya sea temperatura, luz, caudal, etc. Los numero en si tienen las respuestas pero son muy difíciles de interpretar si no se pasan a una grafica.

Ejemplo practico:

Hace ya algunos añitos tuve que extraer datos de respuesta de caudal para venturis, eran como 1000 lecturas para cada venturi, esos numeros se pasan a grafico y superponiendo estos graficos se ve rapidamente que venturi trabaja de forma mas lineal.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: dogflu66 en 21 de Octubre de 2007, 09:22:09
Pude descargar el StampPlot Lite junto con un manual de uso,
pero no tengo forma de que me acepte la configuracion.

Utiliza la funcion DEBUG.
Ejemplo: DEBUG "!SPAN 50,150", CR 'Configura amplitud (span) 50-150.

Y yo envio desde mi lenguaje: Serout GPIO.4, 9600, "!SPAN 50,150", 13 'CR=13
pero no acepta los comandos de configuracion, se ve que DEBUG envia algo mas... :(
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: MGLSOFT en 22 de Octubre de 2007, 00:11:36
Debug envia los datos en otro formato, lo que si se es que si bien esta hecho para Pbasic, lo puedes utilizar con el comando debug del PicBasicPro , si mal no recuerdo, hay que modificar un solo parametro, por lo demas funciona OK.
Baja el manual de las intrucciones del Pbasic y compara con la instruccion debug del PBP, yo no recuerdo la diferencia, estoy viejito... :mrgreen: :mrgreen:
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: RALF2 en 21 de Noviembre de 2007, 16:36:31
Hola amigos!
Muy interesanbte lo de la comunicacion serial en visual basic, recien utilizando el mscomm logre enviar y recibir datos y aunque soy todavia muy nuevo en esto del visual basic ya he logrado algunos avances  :mrgreen:

En los comentarios que hacen envian datos (serialmente) para graficarlos en excel ahora bien. quisiera saber algo a ver si me pueden orientar, yo tengo un programita que me convierte una imagen jpeg en hexadecimal, si la envio serialmente podre ver la imagen en pantalla?

Saludos
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: pocher en 10 de Diciembre de 2007, 05:15:50
Quiero poner a un nivel alto o bajo el pin RTS de salida desde Visual Basic y no me aclaro. No estoy seguro si es con RTSEnable=True (False) (Seguramente no es así). ¿Como se hace?

Quiero controlar con niveles directamente aplicaciones desde los pines del RS232 y usando Visual Basic sin usar el PIC. ¿Como se ponen a 0 ó a 1 los diferentes pines del RS232 usando el MSCOMM?

Un saludo
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: stk500 en 10 de Diciembre de 2007, 05:37:56
Hola amigos!
Quizas os sirva este link para todos tipo de aplicaciones en Visual basic
http://www.hw-group.com/products/io_controller/index_es.html
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Nocturno en 10 de Diciembre de 2007, 05:57:55
Quiero poner a un nivel alto o bajo el pin RTS de salida desde Visual Basic y no me aclaro. No estoy seguro si es con RTSEnable=True (False) (Seguramente no es así). ¿Como se hace?

Quiero controlar con niveles directamente aplicaciones desde los pines del RS232 y usando Visual Basic sin usar el PIC. ¿Como se ponen a 0 ó a 1 los diferentes pines del RS232 usando el MSCOMM?

Un saludo
Teoricamente es como dices, Pocher.
mscomm1.RTSEnable=true
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: megatec en 10 de Diciembre de 2007, 20:05:56
 :-/  :-/ Hola a todos los amantes de la electronica , los felicito por la calidad de estos foros
soy de Uruguay nuevo en el foro y hace años que trabajo en electronica pero pocos que me he facinado con los pics espero serles de ayuda en lo que pueda desde ya a las ordenes .
pero como supongo todo nuevo usuario buscando soluciones ,je je .
Si pueden orientarme les agradezco , tengo un diseño que maneja un centro de computos
con dos equipos de aire acondicionado que mantienen una temperatura estable con un pic
que tambien tiene una alarma sonora y un llamador telefonico para avisar del problema,funciona de maravilla pero...siempre hay un pero quisiera poder comandar este sistema mediante visual basic o sea puedo establecer comunicacion con el pic pero via hyperterminal o sea con comandos escritos y mi intencion seria una interfaz grafica para por ejemplo conun boton en el grafico prender y apagar los equipos, y con una ventana poder mostrar la temperatura en la pc etc. yo de visual basic se muy poco y apelo a la buena voluntad de la gente de este foro para que si puede me guien de como hacer o donde encontrar info
fuera de esto si lo desean les puedo enviar el codigo y los esquemas de este sistema .
gracias   mil    :(   :)
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: navaismo en 10 de Diciembre de 2007, 20:36:56
Que te parece esto (http://micros.mforos.com/1149905/6005582-curso-completo-de-visual-basic/) para empezar con el lenguaje
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: RALF2 en 10 de Diciembre de 2007, 20:42:21
Que tal megatec!
Bien venido a la familia todopic  :mrgreen:
Yo a igual que tu empece hace muy poco con la programacion de visual basic y te digo que es una potente herramienta, todo lo que comentas sobre utilizar el hyperterminal de windows para comunicarte con el pic en vb lo puedes hacer.

Reviza en este sub foro sobre comunicacion RS232 con vb y alli encontraras todo lo necesario ademas de manuales y un e.t.c   largo de ayudas.

Saludos
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: lgxx19 en 11 de Diciembre de 2007, 22:09:47
Hola, como puedo hacer para descargar los archivos?
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: sacrifixium en 14 de Febrero de 2008, 01:23:02
Hola buen día camaradas!!!

Estoy pensando en desarrollar un sistema de monitoreo y control de un cuarto de bombeo... el control con el pic es relativamente sencillo... creo, pues en la escuela superior estudié el 16f84... y supongo que recordaré programarlo; sin embargo quiero monitorear y cambiar algunos setpoints del programa mediante una pc, programando en Visual Basic he leido que es relativamente sencillo mediante un protocolo RS232...

Me gustaría saber si me pueden ayudar a empezar mi proyecto y por donde empezar???

He visto que han posteado en este tema con archivos adjuntos que quiero descargar para estudiarlos... sin embargo no me aparecen los links para poder bajarlos. Me pueden explicar como descargarlo o en que parte del foro se encuentran???

Muchas gracias!!!
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Nogamer en 04 de Marzo de 2008, 23:32:35
Holas a todos, soy nuevo en estos foros y en estos momentos me interesa bastante comenzar a hacer pruebas para aprender a enviar y recibir información con el PC con visual basic hacia y desde el microcontrolador.

Como no se mucho de Visual Basic estuve mirando los posts de la primara pagina y no veo los link de los que se habla.

Alguien plz puede volver a poner el link del que se habla en el primer post en la primera página?

Gracias.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: IAO en 06 de Marzo de 2008, 04:13:44
Holaaaaaa:


Les comento que los link de las primeras páginas nunca los encontre, en uno o dos años que he estado por aquí.
Pero en la pagina 7 u 8, hay unos ejemplos bastante aceptables y los links están trabajando.
Lee todas la páginas con calma y tomen  su tiempo. Hay que leer mucho y comenzar por lo básico que es leer.

Pueden ir armando el proyecto por partes y luego integras todo. Así y con ensayo y error es como lo hago, tardo un poco, pero
al final lo consigo.


Mis respetos y saludos.
Bye('_').
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Blanca Sánchez en 10 de Marzo de 2008, 00:32:26
Hola!

Pues estoy que posteo y no posteo... :lol:

lo que pasa es que ya logré enviar datos por el puerto. El problema es que no siempre funciona, es decir:

supongamos que envío 3 datos:

- 376
- 938
- 0

como la longitud es variable, configuro el MSComm1 de la siguiente forma:

MSComm1.InputLen = 0
MSComm1.RThreshold = 1

los 3 datos anteriores, los envío por el pic 3 veces a un arreglo de TextBoxes, cuando se visualizan en ellos varía la respuesta, aparece:

txtT(0).text = 376
txtT(1).text = 938
txtT(2).text = 0
txtT(3).text =
txtT(4).text = 376
txtT(5).text = 938
txtT(6).text =
txtT(7).text = 0
txtT(8).text = 37
txtT(9).text = 6

es decir, a veces se salta un textbox o parte el resultado. Para evitar el salto, puse en el Oncomm que cuando no se reciba nada, salga del evento, pero no pasa nada.

Private Sub MSComm1_OnComm()
dato = MSComm1.Input
If dato = "" Then
    i = i
    txtNombre.Text = "error"
Else
txtT(i).Text = dato
i = i + 1
End If
End Sub

 :shock:

la parte del pic:
Código: [Seleccionar]
while(i<=2)
{
Delay10KTCYx(50);
putsUSART(microsegundos_LCD);
putcUSART(salto);
Delay10KTCYx(50);
putsUSART(milisegundos_LCD);
putcUSART(salto);
Delay10KTCYx(50);
putsUSART(segundos_LCD);
putcUSART(salto);
Delay10KTCYx(50);
i++;
}

Lo más desconcertante es que a veces funciona bien, es decir, todos los registros son correctos, no se salta ninguno, y a veces lo hace mal... será ruido???  :shock: :shock: :?
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: IAO en 10 de Marzo de 2008, 00:51:24
Holaaaa:

Blanquita disculpa, es por cariño.

Yo no tengo tu respuesta en este momento, voy a analizar bien todo.
Por allí en este sub-foro hubo un problema similar, voy a ver si lo con sigo.

No te dé miedo hacer una pregunta. Lo peor que puede pasar es que no te contesten. :D :D :D
Puede que uno u otro regaño. Pero asi se aprende. :D

Bye('_').
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: huichoman en 10 de Marzo de 2008, 01:13:18
Hola amigos.

La neta, la neta, apenas toqué Visual Basic, utilicé la versión 6 el cuatrimestre pasado, así que no puedo ayudarles mucho. No le seguí porqué me mudé a Delphi  :mrgreen:. Pero si en algo les puede servir, rastreando en los respaldos de mis documentos, encontré aún parte del proyecto, les adjunto mas abajo el código fuente.

Lo que más o menos hice fue lo que se ve en la imagen:

(http://hostfile.org/vbi1.png)

En sí, lo que hace es enviar ciertos comandos, a los que un pic debe de contestar, en este caso temperatura y humedad. Utilicé el control de rts, ya que utilicé un convertidor rs232 a rs485. Por ahi tengo el esquema de la placa y los archivos de proteus para simular, en un chance los busco, si los hallo los posteo  :).  No he checado el código, pero al parecer es una de las primeras versiones, en la última que hice, o hasta donde le metí mano fue cuando graficaba los datos y guardaba todo en un archivo de excel por cada día. Esa debe de estar en la compu que utilizo en la escuela, de nuevo si la hallo la posteo. Pero para comenzar creo que pueden checar el código para ver como funciona. En lo que pueda ayudar, con mucho gusto, perooooooooooooo aclaro, no se ni como lo hice, pero lo hice :mrgreen:.

Saludos.

GANBATTE KUDASAI.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Blanca Sánchez en 10 de Marzo de 2008, 01:33:44
Holaaaa:

Blanquita disculpa, es por cariño.

Yo no tengo tu respuesta en este momento, voy a analizar bien todo.
Por allí en este sub-foro hubo un problema similar, voy a ver si lo con sigo.

No te dé miedo hacer una pregunta. Lo peor que puede pasar es que no te contesten. :D :D :D
Puede que uno u otro regaño. Pero asi se aprende. :D

Bye('_').

He visto muchos mensajes con respecto a este tema, y no me animo a postear a veces porque no quiero redundar en los temas... quizá la solución ya se planteó y se me pasó...

Gracias IAO por todo en lo que puedas ayudarme y corregirme... y si es necesario... regañarme  :-)


Modificado:

CREO EMPEZAR A ENTENDER PORQUÉ siempre preguntan por el caracter salto de línea o retorno de carro!!!

No solo lo buscan dentro de la cadena para quitarlo, sino para saber si lo que se está recibiendo es parte de la cadena anterior!!!

Esto lo explica bien huichoman en su programa que posteó!!!

Ya había visto que buscaban ese caracter y que de hecho con la funcion left lo quitaban.... pero no entendía TODO!

Espero estar de acuerdo con mi hipótesis y corregir mi problema!  :-/
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Blanca Sánchez en 10 de Marzo de 2008, 08:06:28
AJUA!

Pues bien, lo logré!!!

Quisiera recomendar ciertos puntos para transmitir varias cadenas de longitud variable:

1. Programa del microcontrolador:

- Intercalar el caracter salto de carro entre cada cadena a transmitir.
- Dejar un retardo de tiempo entre cadenas de caracteres, es decir:
   cadena + chr(13) + retardo + cadena + chr(13) + retardo.....
   en mi caso estoy programando en c18:
   Delay10KTCYx(50);

2. Programa en Visual Basic:

- MSComm1.InputLen = 0
- MSComm1.RThreshold = 1  El que sea igual a 1 no significa que siempre salte al evento exactamente cuando detecta el salto de carro. Por eso es necesario verificar que llegó dicho caracter:
   dato = MSComm1.Input
   salto = InStr(dato, Chr(13))
   
  si salto es igual a cero, significa que no ha llegado el chr(13), por tanto, los datos que llegaron, son de una cadena incompleta, faltan por llegar mas caracteres...

  si salto es distinto de cero, YA llegó el salto de carro... entonces el resultado se manda a desplegar o se guarda!!!

  Valió la pena el café cargado!!!
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: huichoman en 10 de Marzo de 2008, 10:05:53
Felicidades paisana  :-/.

Y sí, el café cargado ayuda muchísimo  :mrgreen:. Por lo general trabajo a partir de las 10 de la noche hasta que el cuerpo aguante, por lo general hasta las 2-3 de la mañana, y nunca debe faltar el cafecito cargado, aunque una receta que me dejó con mucha energía, fué café cargado+hotcakes con lechera y mermelada de zarzamora  :shock: :shock: :shock:  :D.

Saludos.


GANBATTE KUDASAI !!
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Nocturno en 10 de Marzo de 2008, 10:14:20
Bah, café. Se nota que sois principiantes. Lo mejor para la nocturnidad es el ron  :D
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: MiCrOtRoNiC en 10 de Marzo de 2008, 14:34:13
Bah, café. Se nota que sois principiantes. Lo mejor para la nocturnidad es el ron  :D
La voz de la experiencia  :D :D :D :D..y si lo mezclas con cola u otro  al pelo...
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Blanca Sánchez en 10 de Marzo de 2008, 17:04:36
 :D :D :D :D

Bah, café. Se nota que sois principiantes. Lo mejor para la nocturnidad es el ron  :D

 :D :D :D :D

Con ron no vería ni el teclado!!!  :D :D :D

Pero lo tomaré en cuenta cuando ya no me haga el café...
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Perro75 en 12 de Junio de 2008, 13:51:13
Estimado como puedo descagar el archivo........ :?
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: LordLafebre en 14 de Junio de 2008, 14:20:45
Hola:

Haz click en el link de archivo adjunto y le das guardar, así de fácil, si te refieres al archivo de huichoman.
Título: Re: RE: comunicacion RS232 en Visual Basic
Publicado por: M3LEB en 24 de Junio de 2008, 20:39:58
Que tal
 
Es la primera vez que entro a un foro , he revisado lo amplio e informativo que es este web site .
por otra parte quiero pedrile ayuda para crear un codigo de comunicacion RS232 usando una interfases MAX232 en Visual C++
me pueden ayudar por favor ?
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: LordLafebre en 25 de Junio de 2008, 18:17:28
Hola:

estás en el subforo equivocado este es dedicado a Visual Basic, escribe tu duda en el foro dedicado a C para computador.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: misterweb en 14 de Julio de 2008, 03:34:47
 No se que tal la experiencia de otra gente pero mi experiencia con el puerto serie y Visual es que aunque funciona nunca es satisfatorio, siempre se pierden cadenas, e seguido los programas y ideas de este foro, pero a la hora de impementarlo en el Pic nunca llega a convercerme,  No se por que en el buffer siempre se queda mierda y no se por que nunca tengo forma de reiniciar el buffer, ni abriendo ni cerrando el puerto ni, ni reseteando mediante la instruccion de visual Inbuffer.. = 0 , yo no entiendo cuando le meto un mensaje desde el pic largo y repetido indefinidamente al Hiperterminal de Windows no pierde ni un solo byte, pero cuando lo hago a un programa de Visual Basic, siempre se acaba perdiendo informacion............. NO SE LA EXPERIENCIA GENTE pero me gustaria contrastarla.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: pabloquimbar en 26 de Agosto de 2008, 12:02:48
Hola amigos... os cuento lo que me pasa:
Estoy haciendo el proyecto fin de carrera y trata sobre la medición de la temperatura y la humedad y su procesamiento con un PIC16F877A.
Tengo un pequeño problemilla... al PIC se puede acceder a través de teclado matricial y por teclado de pc por puerto serie, y las lecturas de la temperatura se pueden ver tanto en la pantalla del pc (puerto serie) como en un lcd. Para manejar el puerto serie empecé con el hyperterminal y funciona perfectamente, pero la verdad que no es muy bonito de ver, jeje y me gustaría hacer una aplicación en visual basic para que quedara mejor.
El caso es que no sé nada de visual basic y me bajé el prueba.zip a ver qué tal pero no me funciona. Mis dudas son las siguientes:

-En el código fuente del PIC hay que cambiar algo? Es decir, yo tengo un printf("Introduzca la temperatura deseada"); y me aparece en el hyperterminal... pasará lo mismo con el VB?
-Tengo q hacer alguna modificación en el prueba.zip (bueno, en el proyecto q trae dentro) para poder leer los datos? Es q ví los comentarios del cajetin recibir y parece q no, pero no lo sé... por lo menos, los baudios son los q necesito :)

Si alguien me ayudase estaría muy agradecido.

Un saludo y gracias de nuevo.  ^^
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Goodfrey en 15 de Marzo de 2009, 20:48:51
Buenas noches aqui desde venezuela, señores quisiera decirles primero y principal que soy nuevo en esto de la electronica aun no estoy viendo en mi universidad Micros... en el cual se usan pic pero estoy de antemano interesado en aprender todo al respecto del mismo.... entonecs si tienen aun manual o algo que me ayude a empezar desde 0 seria de gran utilidad.... ahora a lo que vine a preguntar...

Veo una materia llamada interfaces eletroncicas y acabo de terminar una practica por puerto paralelo en MATLAB y me toca hacer la RS232 en Visual basic o en Matlab ahora mi problema es esto... tengo que establecer comunicacion por medio de un programa echo por mi en cualquier de estos lenguajes con un hardware en el protoborard, que se yo un ejemplo sencillo que seria mandar un dato por el programa y visualizarlo en uno leds o unos display 7 segmentos...

ahora la cosa es que dicho puerto tiene niveles de voltajes muy extraños y se transmiten en forma serial con unos bits de inicio y bits de final que tengo que eliminar para poder utilizar solo los datos que quiero que reciba el hardware entonces mi pregunta es como hago parar eliminarle esos bits de informacion de la trama solo para utilizar los bits de datos???

gracias por las respuesta no se si me exprese bien....
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Suky en 15 de Marzo de 2009, 22:25:04
Los bit que dices, el protocolo lo utiliza para determinar cuando se inica y termina el envio de datos de un transmisor a un receptor. Visual Basic y dependiendo del PIC que utilices esto ya esta implementado. Lee el siguiente articulo para aclarar lo que he dicho: RS232 (http://www.mediafire.com/?npdcytmyyjn)
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Goodfrey en 16 de Marzo de 2009, 09:23:34
Disculpame Suky en efecto se que el pic tiene su usart interno y maneja todos esos niveles de voltajes ahora pregunto si conoces alguna manera de eliminarle esos bits de inicio y final sin usar el pic es decir puro hardware sin usar pic...
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Suky en 16 de Marzo de 2009, 12:23:03
Bueno, no se entendía!  :mrgreen:
He visto que utilizan el 74LS164N, pero no tengo mucha información sobre eso. Creo que la consulta la deberías haber realizado en el subforo Foro Técnico (http://www.todopic.com.ar/foros/index.php?board=25.0). Realízala allí, explicando bien cual es la idea, ósea un conversor serie/paralelo sin PIC y allí tendras mejores resultados.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: BrunoF en 20 de Abril de 2009, 00:07:25
Si necesitás eliminar los bits de inicio y fin ,me parece que vas a tener que entrar a controlar directamente el puerto serie mediante llamadas a la API. Desconozco del tema, pero seguramente puedas tomar control usando alguna .dll ya hecha en la web, o haciendo las llamadas a la API
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: nmpa33 en 29 de Abril de 2009, 08:05:50
Hola,

Tengo un problema con la comunicación rs485 en modbus rtu (PC con PLC).
Tienes algun ejemplo de como debo hacerlo? hice un código para rs232 y me funciona excelente, a este solo le añadí la habilitación del RTS para controlar el conversor rs232/485 pero no me funciona nada bien... como debe ser mi código para comunicarme en rs485?
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: Rodricity en 28 de Mayo de 2009, 13:11:17
 Es mas sencillo con un timer.

 En el timer, cada vez que produzca el evento revisas algun flag (que se setee cuando recibes tu "mensaje" que signifique que envie tu siguiente caracter), envias el caracter y desactivas el flag.
Código: [Seleccionar]
Public linea As String
Public incoming As String
Public flag As Boolean

Private Sub Form_Load()
linea = "Mensaje a guardar en EEPROM"
End Sub

Private Sub MSComm1_OnComm()
If (MSComm1.CommEvent = comEvReceive) Then
    incoming = MSComm1.Input
    If (incoming = "K") Then
        flag = True                                                        'Indica si recibimos el caracter que nos dice que está listo el PIC
    End If
End If
End Sub

Private Sub Timer1_Timer()
If (flag = True) Then
    flag = false
    MSComm1.Output = Left(linea, 1)                    'Enviamos solo 1 letra (la primera)
    If (Len(linea) <> 0) Then
        linea = Right(linea, Len(linea) - 1)                'Con esto le vamos quitando la letra enviada
    End If
End If
End Sub

 De esta forma, cuando tu PIC esté listo para guardar el siguiente caracter en EEPROM, le envias al PC la letra "K", o lo que se te ocurra.

 Y cada vez que el timer genere su evento, revisamos si recibimos el caracter que nos dice que enviemos la siguiente letra, obviamente, enviamos solamente una, y luego le quitamos la letra enviada al mensaje original, para no repetirla.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: dgawd en 06 de Julio de 2009, 04:59:12
Hola, buenos dias amigos, les comento un problema que para uds seguramente sea una tonteria pero me ha hecho pelear muchas horas.

Estoy tratando de recibir datos a traves de VBA para graficar en el Excel. Actualmente estoy enviando una cadena de texto que imprime la variable millis y los datos de unos potes cuando se le envia la letra "D" mediante un boton. Se lee de la siguiente manera: millis,datos pote 1,datos pote 2+[CR]

Estoy usando el NETComm que es similar al MSComm, y tengo lo siguiente

..
    NETComm1.RThreshold = 1
    NETComm1.InputLen = 0
..

Código: [Seleccionar]
Private Sub Netcomm1_OnComm()
   
    If NETComm1.CommEvent = NETComm_EV_RECEIVE Then
        'recoge valor de entrada
        datos = NETComm1.InputData
        'busca la posición del caracter de salto de linea
        i = InStr(datos, Chr(13))
       
    If i <> 0 Then
       
        buffer = buffer & datos
        Sheet1.Range("E12").FormulaR1C1 = buffer
       
    End If

End If

Con eso lo que hago es ver como se obtiene la cadena de texto. Y se recibe a veces bien, y otra veces recibe partes en blanco o no lo lee bien.

Enviando 2 datos, esto es algo que ahora me esta funcionando:

Código: [Seleccionar]
Private Sub NETComm2_OnComm()
If NETComm2.CommEvent = NETComm_EV_RECEIVE Then
    datos232 = NETComm2.InputData
    If ((Asc(datos232) > 13) And (Asc(datos232) <> 44)) Then
        trama = trama & datos232
    End If
    If (Asc(datos232) = 44) Then
        tiempo = (trama)
        trama = ""
    End If
    If ((Asc(datos232) = 10)) Then
        dato = (trama)
        trama = ""
        Hoja2.Range("F9").FormulaR1C1 = tiempo
        Hoja2.Range("G9").FormulaR1C1 = dato
    End If

End If

End Sub

Pero no se como ponerlo para funcionar con 3 o mas variables dentro de la cadena de texto

Mi idea, era recibir la cadena de texto completo separada por comas completa sin perdidas de caracteres y ahi utilizar la funcion Split() para separarlo y mostrarlos en las celdas del Excel, pero las veces que recibia la cadena bien (usando el InStr para buscar el char(13)) despues me decia que luego del Split, la 2da variable generada tenia un "subscript out of range"  :?
Supongo porque algunas veces no la leia del todo bien a la cadena, :/

Podrian por favor indicarme como es el codigo para saber cuando una cadena ha ingresado completamente y sin errores? Y luego que forma utilizarian para separarlo en 3 o mas variables para ser luego mostradas.


Muchas gracias por su ayuda, saludos!!  :mrgreen:
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: dgawd en 06 de Julio de 2009, 15:40:32
Me respondo a mi mismo, lo he solucionado de la siguiente manera:
Envio la cadena de la forma millis+chr(44)+pote1+ch(45)+pote2

Código: [Seleccionar]
If NETComm1.CommEvent = NETComm_EV_RECEIVE Then
    datos = NETComm1.InputData
    nadoti = Asc(datos)
    
    If ((nadoti > 13) And (nadoti <> 44)) Then
        buffer = buffer + datos
    End If
    If (nadoti = 44) Then
        tiempo = buffer
        buffer = ""
        Sheet1.Cells(12, 5).FormulaR1C1 = tiempo
    End If
    If (nadoti = 45) Then
        largo = Len(buffer)
        pote = Left(buffer, largo - 1)
        buffer = ""
        Sheet1.Cells(12, 9).FormulaR1C1 = pote
    End If
    If (nadoti = 10) Then
        dato = buffer
        buffer = ""

        Sheet1.Cells(12, 12).FormulaR1C1 = dato

        
    End If
End If

El NETComm1.InputLen lo deje en 1.

y un video/
:mrgreen:

Saludos!
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: lorotron en 10 de Septiembre de 2009, 02:21:51
un gran favor estoy enviando desde mi pic lo siguiente "semaforo en mal estado" ,clrf, "baptista y colombia" , clrf , "falla interna" , clrf

pero el momento de recibir en visual basic con el siguiente codigo
Option Explicit
Dim cadena As String
Dim Buffer As String
Private Sub Command2_Click()
If MSComm1.PortOpen = True Then 'si el pueerto esta
MSComm1.PortOpen = False 'abierto, cerrarlo
End If
End Sub

Private Sub Command3_Click()
Text1.Text = Text2.Text
End Sub

Private Sub Form_Load()
Timer1.Interval = 60
MSComm1.Settings = "9600,n,8,1" 'propiedades
MSComm1.CommPort = 1 'seleccionar puerto
MSComm1.InBufferCount = 0
MSComm1.InputLen = 0
MSComm1.PortOpen = True 'abrir puerto
End Sub

Private Sub Timer1_Timer() 'setear timer en 1 ms
If MSComm1.PortOpen Then
 Buffer = Buffer & MSComm1.Input
 If InStr(1, Buffer, Chr(13)) Then
 Text2.Text = Buffer
 Buffer = ""
 End If
End If
End Sub


y al momento de recibir los datos en visual basic me aparece solamente el final del mensaje "llainterna"
como puedo hacer para ver todo el mensaje en el textbox?
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: BrunoF en 10 de Septiembre de 2009, 03:12:32
Hola. Fijate que en el primer post de este hilo agregué una versión alternativa a la de Todopic.

Mejoré varios problemas que pueden surgir. Uno de ellos relacionados con que el buffer de entrada no debería ser revisado con un timer, sino tratarse mediante eventos.

Saludos.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: japifer_22 en 01 de Abril de 2011, 00:00:49
hola, les queria pedir ayuda. resulta que estoy haciendo un programa que solo tiene que recepcionar una trama igual a :

STX (02h) - DATA (10 ASCII) -  CHECK SUM (2 ASCII)  - CR -  LF  - ETX (03h)
[The 1byte (2 ASCII characters) Check sum is the “Exclusive OR” of the 5 hex bytes (10 ASCII) Data characters.]

donde esto quiere decir que :
Lo que quiere decir que debe eliminar el primer caracter que es STX (02h), este caracter es para hacerte saber el inicio de la cadena, despues de ese caracter es que se envian los 10 caracteres ASCII que nesesito ver por un label, despues viene el checksum, un retorno de carro
y un fin de transmision que es el caratere ETX(03h)

he esto dandole a esto pero no puedo, aparte por que soy muy novato en esto.

estoy recepcionando con MSComm1.
si me pudiecen ayudar se los agradeceria mil.
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: banistelrroy en 11 de Mayo de 2011, 02:20:28
muy buen aporte les felicito voy modificar un poco gracias lo voy a necesitar
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: rosdgo en 31 de Agosto de 2011, 07:16:21
Buenas foreros, quiero hacer algo parecido a lo que indican este tema, no se si es posible, les comento:
Quiero crear una aplicación en Visual Basic mediante la cual el PC se comunique via ModBus (RS232) con una pantalla HMI que es la maestra y el PC y un automata programable MILLENIUM III de la marca CROUZET seran los esclavos.
Necesito información de como realizarlo.

Muchas gracias y un saludo
Título: Re: comunicacion RS232 en Visual Basic
Publicado por: epogor en 16 de Septiembre de 2011, 11:07:00
Hola soy nuevo en este foro y queria que me dieran un consejo para empezar a programar, estoy haciendo un projecto propio y quiero controlar un motor con un PWM, desde una pc, ya pude hacer andar el pwm, pero ahora empiezo a conectar el pic con una rs232, voy a usar Visual Basic pero necesito saber como comenzar a conectar el pic con la pc, algun consejo? desde ya muchas gracias por cualquier aporte que puedan hacer, el pic que voy a usar es el 18f2550, que aunque tiene usb prefiero aprender a usar rs232 y luego pasar a usb gracias.
Título: Re: comunicacion hyperterminal a Visual Basic macro excel
Publicado por: NEURINRO en 02 de Abril de 2012, 12:41:16
Saludos a todos soy nuevo aqui en esta pagina, me gustaria saber como le hago para leer los datos de hyperterminal  del puerto serial para llevarlo a una hoja de excel en un macro y luego enviarlo via email a mi correro (outlook). he utilizado varios codigos genericos par intentar leer pero no consigo ver nada corro la macro y lo unico que sale es Debug 424. realmente no se donde esta el erro pues son codigos genericos de comunicacion via puerto serial. aqui les dejo los codigo que uso para leer los datos que suben a hyperteminal por el puerto comm 1 y luego enviarlos a por email.... Gracias

Private Sub MSComm1_OnComm()
        SelectCase MScomm1.CommEvent
        Case comEventBreak   ' A Break was received.
        Case comEventCDTO    ' CD (RLSD) Timeout.
        Case comEventCTSTO   ' CTS Timeout.
        Case comEventDSRTO   ' DSR Timeout.
        Case comEventFrame   ' Framing Error.
        Case comEventOverrun ' Data Lost.
        Case comEventRxOver  ' Receive buffer overflow.
        Case comEventRxParity   ' Parity Error.
        Case comEventTxFull  ' Transmit buffer full.
        Case comEventDCB     ' Unexpected error retrieving DCB]

         ' Events
        Case comEvCD   ' Change in the CD line.
        Case comEvCTS  ' Change in the CTS line.
        Case comEvDSR  ' Change in the DSR line.
        Case comEvRing ' Change in the Ring Indicator.
        Case comEvReceive ' Received RThreshold # of chars.
            'Sets the global mstinbuff to = what is received by the commm control
            mstInBuff = mstInBuff & MScomm1.Input
            'Resets the variable used to count the lack of response to 0 so that
            'counting restarts.
            mdblReceived = 0
         
    End Select
End Sub



Sub CDO_Send_Selection_Body()
    Dim LastRow As Long
    Dim Source As Range
    Dim Dest As Workbook
    Dim wb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim OutApp As Object
    Dim OutMail As Object
   
     If WorksheetFunction.CountA(Cells) > 0 Then
        LastRow = Cells.Find(What:="*", After:=[C1], _
              SearchOrder:=xlByRows, _
              SearchDirection:=xlPrevious).Row
    End If
            Set sh = Sheets("DataLog")    '<<< Change
            Set Source = sh.Range("A" & LastRow & ":C" & LastRow) '<<< Change
 
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
 
    Set wb = ActiveWorkbook
    Set Dest = Workbooks.Add(xlWBATWorksheet)
    Source.Copy
    With Dest.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial Paste:=xlPasteValues
        .Cells(1).PasteSpecial Paste:=xlPasteFormats
        .Cells(1).Select
        Application.CutCopyMode = False
    End With
 
    TempFilePath = Environ$("temp") & "\"
    TempFileName = "Selection of " & wb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss")
 
    If Val(Application.Version) < 12 Then
        FileExtStr = ".xls": FileFormatNum = -4143
    Else
        FileExtStr = ".xlsx": FileFormatNum = 51
    End If
 
    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Session.Logon
    Set OutMail = OutApp.CreateItem(0)



 
    With Dest
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        On Error Resume Next
        With OutMail
        .To = "neurin.rodriguez@hospira.com"
        .CC = ""
        .BCC = ""
        .From = """Sistema de Alarmas"" <neurin.rodriguez@hospira.com>"
        .Subject = " "
        .HTMLBody = vbCr & vbCr & "[" & Format(sh.Range("B" & LastRow).Value, "HH:MM AM/PM") & "] EVENTO: " & sh.Range("C" & LastRow).Value 'RangetoHTML(sh, rng)
            .Send
    End With
        On Error GoTo 0
        .Close savechanges:=False
    End With
 
    Kill TempFilePath & TempFileName & FileExtStr
 
    Set OutMail = Nothing
    Set OutApp = Nothing
 
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub



Function RangetoHTML(rng As Range)
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook
 
    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With
 
    'Publish the sheet to a htm file
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         Filename:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With
 
    'Read all data from the htm file into RangetoHTML
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")
 
    'Close TempWB
    TempWB.Close savechanges:=False
 
    'Delete the htm file we used in this function
    Kill TempFile
 
    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function



Sub CDO_Send_ActiveSheet_Body_Without_Pictures()
    Dim rng As Range
    Dim OutApp As Object
    Dim OutMail As Object
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With
 
    Set rng = Nothing
    Set rng = Sheets("DataLog").UsedRange
    'Set rng = Sheets("DataLog").Range("A4:C" & LastRow).SpecialCells(xlCellTypeVisible)

    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Session.Logon
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next

    With OutMail
        .To = Sheet1.Email1.Value
        .CC = Sheet1.Email2.Value
        .BCC = ""
        .Subject = "Reporte de Alarmas para: " & Format(Range("A4").Value, "MM/DD/YYYY")
        .HTMLBody = RangetoHTML(rng)
        .Send
    End With
    On Error GoTo 0
 
 With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
 
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub




Public Function SheetToHTML(sh As Worksheet)
'Function from Dick Kusleika his site
'http://www.dicks-clicks.com/excel/sheettohtml.htm
'Changed by Ron de Bruin 19-Aug-2006
    Dim TempFile As String
    Dim Nwb As Workbook
    Dim fso As Object
    Dim ts As Object

    sh.Copy
    Set Nwb = ActiveWorkbook

    With Nwb.Sheets(1)
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    TempFile = Environ$("tempII") & "/" & _
               Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    Nwb.SaveAs TempFile, xlHtml
    Nwb.Close False

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    SheetToHTML = ts.ReadAll
    ts.Close

    On Error Resume Next
    Kill TempFile
    fso.deletefolder Left(TempFile, Len(TempFile) - 4) & "*", True
    On Error GoTo 0

    Set ts = Nothing
    Set fso = Nothing
    Set Nwb = Nothing
End Function

 

Option Explicit