Autor Tema: Uno más de RS232 - WinXP+VB6  (Leído 24084 veces)

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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Uno más de RS232 - WinXP+VB6
« en: 09 de Julio de 2007, 18:38:08 »
Hola

He programado poco en VB y voy a iniciarme en RS232... pero antes de empezar con pruebas quisiera saber lo siguiente:

- Si uso WinXP y VB6, ¿puedo usar normalmente el puerto serial o necesito la librería IO.DLL?
- ¿El control MSCOMM acepta puertos com más allá del 4? Por ejemplo el COM9.

Hasta ahora esas son las dudas que tengo. Encontré una página que lo lleva a uno de la mano para iniciarse con la MSCOMM...

http://www.thaiio.com/prog-cgi/0002_serial.htm

Gracias

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #1 en: 09 de Julio de 2007, 19:37:08 »
Hola:

La librería IO.DLL yo la he usado para el puerto paralelo, para el puerto serie, basta con el mscomm, y respecto a lo otro, del com9, si lo tienes habil, pues te debe funcionar.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #2 en: 09 de Julio de 2007, 19:48:43 »
OK!

Ya comencé a hacer pruebas y he tenido éxito, tienes razón MSCOMM es suficiente...



Posteriormente haré pruebas con un puerto virtual COM9.  :mrgreen:

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #3 en: 10 de Julio de 2007, 15:47:49 »
el mscomm viene como anillo al dedo, trae lo justo y necesario para hacer una comunicación.

la desventaja es que al crear el .exe, y portarlo a otra máquina puede que no corra, porque hace falta instalar y/o registrar el control ocx, entonces hay que crear un instalable. cosa que no ocurre si te vas por el camino de las apis (aunque sería complicarse la vida)  :)
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #4 en: 10 de Julio de 2007, 17:26:25 »
Interesante, luego les preguntaré como generar el instalador. Gracias Pali  :mrgreen:

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #5 en: 17 de Julio de 2007, 19:22:53 »
Hola de nuevo

Ya regresé a mis pruebas con MSCOMM y me encuentro con varias dudas. Aquí lo que "creo" que hacen las sig. propiedades:

- mscomm1.inputlen = 0 'sirve para capturar todo lo que tiene el buffer de entrada en una variable, por ejemplo:

text1.text=mscomm1.input

así capturaría todos los caracteres del buffer de entrada en text1.

- El evento MSComm1_OnComm se detona cuando cualquier cosa ocurre en el puerto serial, pero no sé como diferenciar entre recepción y envío, creo que es con banderas como:

MSComm1.CommEvent = comEvReceive And MSComm1.InBufferCount > 0

pero no estoy seguro.

¿Existe alguna guía fácil para esos eventos en donde se detallen esas banderas? Si no tendré que instalar la ayuda MSDN  :mrgreen:

Otra cosa que quiero hacer es lo siguiente...

- El pic va a estar enviando una trama de caracteres así:

a346a245a876a...

-La pc debe sincronizarse con la "a" e interpretar el dato 346, 245 y 876.

¿Qué instrucciones me recomiendan estudiar para lograrlo?

Gracias por su ayuda  :mrgreen:

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #6 en: 18 de Julio de 2007, 10:25:35 »
Hola Migsantiago, eso lo manejas como un string, tienes como dato el LEN (largo de todo el string) y puedes ir buscando con MID$ caracter por caracter hasta que encuentras una "a", luego de alli, tomas 3 caracteres...

Hay una instruccion que directamente te busca un caracter de una cadena... pero no recuerdo como se llama...  :?

Ya algun colega me pegara un palazo  :D  :-)

Un abrazo
Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #7 en: 18 de Julio de 2007, 10:30:41 »
Gracias Norberto, buscaré más info sobre la instrucción MID$, soy muy nuevo en vb todavía.

Todavía no encuentro alguna guía sobre la MSCOMM, espero que alguien cuente con una en el foro.  :D

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #8 en: 18 de Julio de 2007, 11:01:21 »
Ahhh, perdon Mig!,
por ejemplo defines
PALABRA AS STRING

supongamos que lo que llega se llama DATO$  -> que podria ser "MIGSANTIAGO"

PALABRA=MID$(dato$,4,3)
entonces mid tomara Desde el cuarto caracter, tres caracteres
PALABRA=SAN

Logicamente, los numeritos podrian ser contadores, valores fijos etc


Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Milo

  • PIC16
  • ***
  • Mensajes: 101
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #9 en: 18 de Julio de 2007, 11:04:56 »

Buennass:

La función de la que habla Norberto es InStr, 

Devuelve un tipo Variant (Long) que especifica la posición de la primera aparición de una cadena en otra.

te pongo un ejemplo que viene en la ayuda msdn del visual basic,

Dim SearchString, SearchChar, MyPos

SearchString ="XXpXXpXXPXXP"   ' Cadena en la que se busca.
SearchChar = "P"               ' Se busca "P".

' Una comparación textual que comienza en la posición 4. Devuelve 6.
MyPos = Instr(4, SearchString, SearchChar, 1)   

' Una comparación binaria que comienza en la posición 1. Devuelve 9.
MyPos = Instr(1, SearchString, SearchChar, 0)

' La comparación es binaria por configuración predeterminada (si se omite el último argumento).
MyPos = Instr(SearchString, SearchChar)   ' Devuelve 9.
MyPos = Instr(1, SearchString, "W")   ' Devuelve 0.

Yo no he utilizado nunca esta función pero estoy teniendo problemas con la sincronización de datos del pic al pc, yo utilizo la propiedad RThreshold la pongo a 5, para que me salte el evento cada vez que reciba 5 bytes, el problema que tengo es que cuando mando mucha cantidad de datos 800 bloques de 5 bytes el algún momento coge uno de mas o uno de menos y ya me trastoca todos los siguientes datos. Me toca hacerlo de otra manera pero aún no tengo muy claro como.

Espero que te valga de algo la información, el la ayuda mdsn viene explicado la instrucción mejor.

Saludos y suerte



"En tanto que haya alguien que crea en una idea, la idea vive" Ortega y Gasset

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #10 en: 20 de Julio de 2007, 10:57:48 »
Ah, ahora entiendo  :mrgreen:

Pero antes de hacer uso de MID$ y de INSTR, quisiera preguntar algo más. Cuando uno hace uso de la instrucción...

mistring=mscomm1.input

y el buffer de entrada tenía 300bytes almacenados... ¿se depositan automáticamente 300 bytes en mistring y el buffer... se borra?

(ohh y feliz cumple Milo :D )
« Última modificación: 20 de Julio de 2007, 11:13:48 por migsantiago »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #11 en: 20 de Julio de 2007, 14:10:43 »
Efectivamente, se borran al leer el buffer.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #12 en: 21 de Julio de 2007, 13:00:56 »
...
Todavía no encuentro alguna guía sobre la MSCOMM, espero que alguien cuente con una en el foro.  :D

busqué unas guias viejas que tenía en un cd, y resulta que son sacadas de la MSDN  :(, Mig esa es la fuente principal, el resto es revisar codigos hechos en VB
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #13 en: 23 de Julio de 2007, 11:43:51 »
jeje sí! pero se me sigue olvidando traerme los cd's de la msdn para instalarlos en mi trabajooooo  :8} :8}

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Uno más de RS232 - WinXP+VB6
« Respuesta #14 en: 24 de Julio de 2007, 20:34:26 »
Ya regresé a mis pruebas...

Quise compilar la siguiente instrucción pero VB me regaña...

Public volt(1 To 40) As String  'lleva el voltaje de cada medidor

y me dice que...



ya le di varias revisadas y no entiendo porqué está mal.

Ah y lo de mid e instr todavía no lo pruebo. Apenas compile les aviso. :mrgreen:


 

anything