Comunicación serial con Visual Basic 2008

hola, soy nuevo en el foro, y entre por que leí que hablaban del COMPIN
lo que pasa es que estoy haciendo un proyecto para la escuela, y necesito simular la comunicación serial
pero no tengo el complemento COMPIN.
Así que les agradecería mucho si me lo pueden pasar.

Ya lo busque en varias partes del foro pero no encuentro donde descargarlo. Gracias
 
hola, soy nuevo en el foro, y entre por que leí que hablaban del COMPIN
lo que pasa es que estoy haciendo un proyecto para la escuela, y necesito simular la comunicación serial
pero no tengo el complemento COMPIN.
Así que les agradecería mucho si me lo pueden pasar.

Ya lo busque en varias partes del foro pero no encuentro donde descargarlo. Gracias
Compin viene integrado en proteus......
 
Hola a todos! Necesito enviar un dato tipo BYTE por puerto serial con VB. Tengo este código:
Dim dato As Byte = 40 // Declaro dato como tipo byte
Luego de abrir el puerto, escribo:
puerto_Output = dato
Y me genera un error en esta linea. La única manera de que no me genere error es haciendo:
puerto_Output = CStr(dato)
El problema con esta linea es que NO QUIERO enviar el dato como string! Si lo pongo así se envían DOS bytes, el que representa al "4" y el que representa al "0". Necesito enviar un byte de valor 40, es decir, 00101000.

Agradecería enormemente su ayuda.

Saludos
 
buenas noche estoy empezando con el visual y me encuentro con el c# y el basic en 2008, la duda cual usar es que quiero que se comuniq con un arduino xbee para hacer que un carrito se muy por wi-fi gracias
 
Hola a todos! Necesito enviar un dato tipo BYTE por puerto serial con VB. Tengo este código:
Dim dato As Byte = 40 // Declaro dato como tipo byte
Luego de abrir el puerto, escribo:
puerto_Output = dato
Y me genera un error en esta linea. La única manera de que no me genere error es haciendo:
puerto_Output = CStr(dato)
El problema con esta linea es que NO QUIERO enviar el dato como string! Si lo pongo así se envían DOS bytes, el que representa al "4" y el que representa al "0". Necesito enviar un byte de valor 40, es decir, 00101000.

Agradecería enormemente su ayuda.

Saludos
Saludos andrea1708
Hace poco realize este proyecto completo de interfaz RS232 PIC PC en VB6.
Las funciones son faciles de pasar a VB .Net
El proyecto no lo hize en .Net porque es tan solo una aplicación simple.
Incluye el código fuente comentado y también adjunte algunos ejemplos para su uso.
Dale una vista, y estoy seguro que encontraras la solución para enviar los datos que quieres.

El truco de lo que tu dices envíar como Byte viene siendo tan solo así.

' Enviar los datos como caracteres al PIC
puerto_Output = CStr(Chr(dato))

Espero que con esto puedas solucionar lo que necesitas.

Suerte y hasta luego.
 
Última edición:
Hola a todos! Necesito enviar un dato tipo BYTE por puerto serial con VB. Tengo este código:
Dim dato As Byte = 40 // Declaro dato como tipo byte
Luego de abrir el puerto, escribo:
puerto_Output = dato
Y me genera un error en esta linea. La única manera de que no me genere error es haciendo:
puerto_Output = CStr(dato)
El problema con esta linea es que NO QUIERO enviar el dato como string! Si lo pongo así se envían DOS bytes, el que representa al "4" y el que representa al "0". Necesito enviar un byte de valor 40, es decir, 00101000.

Agradecería enormemente su ayuda.

Saludos
Pon arriba del todo esto.
Código:
Imports System.IO.Ports
Dentro de un button introduces este código.

serialPort1.Open() 'Abrir puerto serie.
Dim mBuffer As Byte() = New Byte(0) {} 'Almacenas bytes en un buffer.
mBuffer(0) = &H40
serialPort1.Write(mBuffer, 0, mBuffer.Length) 'Envía en este caso un byte.
serialPort1.Close() 'Cerrar puerto serie.


Un saludo.
 
Hola chicos! gracias a todos por sus respuestas. Al final lo hice asi:

Dim dato As Byte = 40 // Declaro dato como tipo byte
Dim datochar As Char
datochar=Microsoft.VisualBasic.Chr(dato) //esto me permite convertir a char
puerto_Output = CStr(datochar)

Un poco rebuscado pero funciono =)

PD: nunca encontre el metodo .Write en mi VB =S

Ahora tengo otra pregunta. Necesito enviar desde un micro hacia Visual Basic una cadena de bytes. Lo logre colocando el Rtrheshold a 1, es decir, que la interrupción del OnComm sucede cada vez que recibo un dato en el puerto. El problema es que quiero que primero Visual Basic reciba todos los datos en el buffer de recepción y luego de que ya todos llegaron, genere la interrupcion para sacarlos uno por uno.
Creo que tiene que ver con el InputLen y Rtrheshold pero hasta ahora no he logrado nada.
Espero que alguien me pueda ayudar.

Gracias.
 
Hola:

Prueba introducir este código desde el rpincipio.

Imports System.IO.Ports

Luego usas serialPort. haber si sale el Write, no es normal que no salga.
 
oe man disculpa la molestia he visto unos ejemplos de lo que vienen haciendo, desde la pag. 15 mas o menos y nose que pasa cuando los corro junto con el Visual Serial Port Driver 7.1 - hasta donde se ese programa es como el enganche de visual basic 6.0 y proteus, verdad?, de hecho en el caso visto.

bueno si es asi, cuando lo corro la falla normal es creo con la programacion que esta en visual basic. MsComm1.PortOpen m sale en falla y nose como ver de donde proviene esta falla lo he visto y lo recontra he visto y nada.. =/ si pudieras ayudarme vacan seria hermano (Y) gracias

Pd: soy un nuevo aprendis llevo poco con estos programas, pero quiero ver ya cosas grandes. GRACIAS espero su rpta.!
 
Hola a todos principalmente a meta y wily,voy a retomar lo del interfaz de comunicaciones.os dire que lo de controlar la luces creo que esta todo terminado,pero me gustaria poderle poner deteccion de camaras IP por el cual necesitare ayuda.meta cuando te conectes dime por favor como insetar foto,que queria poner una del interfaz terminado y no hallo como
 
Última edición:
Hola

Por el puerto serial estoy enviando datos por ejemplo: ffffgghhppppp

estos datos les estoy enviando de manera muy rapida, creo que del orden de nseg (80 no estoy seguro). El transmisor esta configurado a 9600 baudios

En el VB Express 2008 estoy trabajando con la accion: SerialPort1_DataReceived

Código:
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Dim dato As String = SerialPort1.ReadExisting
        If Microsoft.VisualBasic.Left(dato, 1) = "f" Then
            SendKeys.Send("1");
        End If
        If Microsoft.VisualBasic.Left(dato, 1) = "g" Then
            SendKeys.Send("2");
        End If
        If Microsoft.VisualBasic.Left(dato, 1) = "p" Then
            SendKeys.Send("3");
        End If
        If Microsoft.VisualBasic.Left(dato, 1) = "h" Then
            SendKeys.Send("4");
        End If
        If Microsoft.VisualBasic.Left(dato, 1) = "t" Then
            SendKeys.Send("5");
        End If
        If Microsoft.VisualBasic.Left(dato, 1) = "r" Then
            SendKeys.Send("6");
        End If
    End Sub
El puerto lo estoy iniciando de este modo:

Código:
        SerialPort1.PortName = "COM1" 
        SerialPort1.BaudRate = 9600
        SerialPort1.DataBits = 8
        SerialPort1.Parity = Parity.None
        SerialPort1.StopBits = StopBits.One
        SerialPort1.Handshake = Handshake.None
        SerialPort1.Encoding = System.Text.Encoding.Default
de todos los datos que recibo, solo la mitad entran a trabajar con el conjunto de IFs

por lo que algunas veces no envio el numero 3 , 4 etc.

Alguien sabe si se puede guardar los datos recibidos en un buffer para luego tratarlos en los IFs?

o tambien creo que el problema esta en como les doy la condicion:
Microsoft.VisualBasic.Left(dato, 1) = "r"

Del conjunto de datos que envio, ffffffppppphhhhh solo leo el primero, no estoy seguro pero envio letra por letra al puerto serial, los datos recibidos los guardo en un string, probe guardarlos en un char pero sigue el mismo problema.

Gracias de antemano
 
quizas es mas tardado el if que la recepción de datos, mejor recibelos todos en una variable o en un arreglo y depues hacer la condicionante.

para meterlos en un arreglo utiliza la instruccion split()

otra cosa es que te serciores que el buffer esta vacio pueden estar "quedandose" en el buffer de recepcion
 
No entiendo muy buen eso de guardar la cadena y luego ejecutar los ifs

pero encontre otra solucion que parece funcionar y la comparto para los que estan interesados:

La funcion InStr de VB 2008 express es lo que estaba buscando ya que busca un caracter especifico en un cadena.

gracias.
 
Hola a todos. Tengo el siguiente problema a la hora de insertar el MScomm en Visual Basic para poder comunicarlo con una placa Arduino UNO.
El error que me sale es el siguiente:

" No se encontró la información de licencia para este componente. No tiene una licencia apropiada para usar esta funcionalidad en el entorno de diseño".

Antes de darme este error, ni si quiera me aparecía la opción de añadir el componente 'Microsoft Comm Control 6.0'. Para ello descargue el Mscomm32.ocx.

He buscado todo lo habido y por haber y de momento lo único con un poco de sentido ha sido
des-registrar el Mscomm32.ocx y volverlo a registrar desde 'Ejecutar' mediante:

C:\WINDOWS\SYSTEM32\REGSVR32.EXE /u C:\WINDOWS\SYSTEM32\MSCOMM32.OCX
y
C:\WINDOWS\SYSTEM32\REGSVR32.EXE C:\WINDOWS\SYSTEM32\MSCOMM32.OCX

Sin embargo, sigue sin encontrar la licencia del componente.

Agradecería cualquier posible ayuda. Gracias de antemano.
 
El componente ActiveX MSCOMM32.OCX no necesita licencia para usarlo dentro o fuera del entorno de desarrollo de Visual Basic.
Tal vez ese archivo fue modificado por alguna instalación y sustituyó al original por uno que requiere licencia.
Prueba borrando ese archivo y copia un archivo original, o reinstala el Visual Basic pero eliminando ese archivo para que la instalación agregue uno nuevo.

Es muy diferente registrar un componente en el sistema con REGSVR32.exe, que registrarlo con licencia.
 
Última edición:
Arriba