Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Estos son los mandatos e instrucciones mas frecuentes para utilizar el puerto serie:

 

    Private Sub EjemploDeLasPrincipalesInstruccionesDeSystem.IO.Port()

        Dim Contador As Integer

 

        Serie = My.Computer.Ports.OpenSerialPort("COM1")  'Llamar al constructor

        '

        'Definir las caracteristicas de la comunicacion

        Serie.BaudRate = 19200              'Fijar velocidad de comunicaciones

        Serie.DataBits = 8                  'Longitud en bits para Byte de datos

        Serie.Parity = Parity.Even          'Asignar paridad(enumeracion parity)

        Serie.StopBits = StopBits.Two       'Bits parada despues byte de datos

        '

        'Abrir/Control/Liberar Puerto

        Serie.Open()                        'Abrir el puerto Serie

        Serie.Close()                       'Cerrar el Puerto Serie

        Serie.Dispose()                     'Liberar objecto

        Dim SiNo As Integer

        SiNo = Serie.IsOpen                 'El Puerto esta abierto?

        Dim Puerto As String

        Puerto = Serie.PortName             'Nombre del puerto

        '

        'Manejo y Control de señales

        Dim Estado As Boolean               'True=Activa / False=Inactiva

        Estado = Serie.CDHolding            'Estado de la señal carrier detect

        Estado = Serie.CtsHolding           'Señal Clear to Send

        Estado = Serie.DsrHolding           'Señal Data Set Ready

        Serie.DtrEnable = True              'Activar de Data Terminal Ready

        Serie.RtsEnable = True              'Activar Request To Send

        '

        'Control Transmission/Recepcion

        Serie.ReadBufferSize = 1024         'Dimensionar tamaño buffer recepcion

        Serie.WriteBufferSize = 1024        'Dimensionar tamaño buffer envio

        Serie.ReadTimeout = 10              'Fuera de tiempo para las lecturas

        Serie.WriteTimeout = 10             'Fuera de tiempo para las escrituras

        Serie.Handshake = Handshake.XOnXOff 'Tipo control para recepcion/envio

        Serie.DiscardInBuffer()             'Borrar el buffer de entrada

        Serie.DiscardOutBuffer()            'Borrar el buffer de salida

        '

        'Enviar datos

        Contador = Serie.BytesToWrite       'Bytes en espera de ser escritos

        Serie.Write("Hola Mundo")           'Enviar una cadena de caracteres

        Serie.WriteLine("Hola Mundo")       'Enviar una linea

        '

        'Leer datos

        Contador = Serie.BytesToRead        'Bytes en espera de ser leidos

        Serie.ReadByte()                    'Leer un byte

        Serie.ReadChar()                    'Leer un char

        Serie.ReadLine()                    'Leer una linea

        Serie.ReadExisting()                'Leer los datos existentes en buffer

    End Sub

Saludos,
Pep Lluis

 

Published Tue, Nov 21 2006 18:46 by peplluis
Filed under:

Comments

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Saturday, April 28, 2007 10:15 AM by lector

hola que tal estoy tratando de hacer una aplicacion de un medidor de energia electrica, y tiene un puerto rs485 y tengo que presentarlo en pantalla y no sepor donde empezar me gustaria que me ayudaras...gracias

taz_ues@hotmail.com

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, October 24, 2007 6:24 PM by luis alfredo osorio

Me podeis ayudar a leer la señal de un dispositivo lector de billetes a traves del puerto serial con VB .net

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, October 25, 2007 10:03 AM by peplluis

Hola Luis,

Al igual que nuestro anterior compañero, te invito a enviarme tu peticion a traves del correo, puedes usar la opcion 'contact' en el recuadro 'This Blog' arriba a la izquierda.

Espero tus noticias, asi como tambien espero poderte ayudar.

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, November 15, 2007 12:07 AM by rody

Estoy creando una aplicación en vb.net...La misma estará corriendo en 3 PC...una de estas Pc tendrá la base datos...Entonces, el problema es: Cómo hago que cada aplicación guarde la ruta de la base de datos....

Me explico mejor: en vez de fijar una ruta en el codigo, fijarla despues que la aplicación esté lista, es decir, buscar la ubicacion de la bd mediante un dialogbox por ejemplo...DE ANTEMANO gracias.........

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, November 15, 2007 1:51 AM by peplluis

Hola rodi... este post es sobre el espacio de nombres de System.IO.ports si te parece contacta conmigo para discutir esta question o bien puedes postear en los blogs de MSDN, donde bien seguro podemos ayudarte.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Monday, November 19, 2007 9:51 AM by Patricio Capelo

Tengo problemas con la recepcion de datos.  Estoy utilizando el io.ports.serialport definido con withEvents, pero no puedo recibir ningun dato.  Sin embargo, dentro de la subrutina de escrituta he incluido un pequeño bloque de lectura que utiliza puerto.readExisting y recibe informacion basica, pero la info importante no aparece.  Todo funciona muy bien desde la hyperterminal.  Ayudame con la recepcion de datos. Te lo agradecere toda la vida

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Tuesday, November 20, 2007 10:19 AM by peplluis

Patricio, Mandame un ejemplo de codigo para poder indicarme sobre el mismo. Puedes hacerlo en la opcion [This Blog] [Contact] - (Parte superior a la Derecha). Saludos, Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Tuesday, November 27, 2007 9:47 AM by Elias

Hola Luis, estoi haciendo mi proyecto de titulo, y necesito enviar datos a traves del puerto serie con una pantalla en visual basic; dichos datos deben ser adquiridos por un basic stamp para controlar unos servomotores, necesito ayuda ya que me queda super poco tiempo para poder entregar mi tesis, esperando una pronta respuesta se despide Elias M.

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Tuesday, November 27, 2007 10:45 AM by peplluis

Elias,

Mandame una descripcion mas detallada y el codigo que tengas, para poder indicarme sobre el mismo. Puedes hacerlo en la opcion [This Blog] [Contact] - (Parte superior a la Derecha). Saludos, Pep Lluis,

Te Contestare tan pronto como me sea posible.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Saturday, December 08, 2007 4:17 PM by r3xet

TEngo una impresora de ticket en puerto com1 pero al parecer no logra conectarse via com, por que el error me dice que el nombre no existe o no esta asiganado

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Sunday, December 09, 2007 3:15 AM by peplluis

Debes dirigirte a :

MiPc>Administrar>Administrador de dispositivos>Puertos(Com & LPT)

En el veras una enumeracion de los puertos disponibles, luego solo tienes que utilizar uno de ellos para conectar la impresora y efectuar sobre el mismo la instruccion de Open.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Monday, December 17, 2007 10:59 PM by Juan Pablo. Montevideo Uruguay.

PepLluis quiero saber todo lo que vos sabes como hago?

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, January 04, 2008 4:30 AM by peplluis

Gracias Juan Carlos por tus amables palabras... pero creo que en mi caso no es por listo, si no mas bien por viejo. No hay duda que el conocimiento y la experiencia se adquieren con los años por lo que mi formula es muy sencilla, el problema es que algunos necesitamos 30 años para saber lo poco que sabemos, la suerte es que lo mas jovenes teneis mas facilidad por lo que provablemente en menos tiempo tendreis el mismo conocimiento, solo es cuestion de mantener despierta la curiosidad por aprender.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, January 30, 2008 9:34 AM by Dante E. García

Hola!, muhcas gracias por tomarte el tiempo de dar aconcoer estos datos.

Mira yo estoy tratando de hacer una aplicación uqe lea el número telefónico de una llamada entrante por un modem con vb.net 2005 pero no logro entender como "cachar" cuando entre la llamada, entiendo que esto va en el evento datareceived, encontre este codigo, pero es en C y no se como traducirlo a vb y lo peor de todo no se en que parte de todo el código va:

this.serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.Recepcion);

Agradezco de antemano tu ayuda

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, January 31, 2008 10:24 AM by peplluis

Gracias por tu amabilidad.

Debo confesarte que los Modems que utilice en su momento no disponian de informacion documentada sobre comandos AT o registros que suministren esa informacion. Quizas algun modem de los incorporados en GPS, ISDN o tecnologias mas actuales lo permiten... pero lo desconozco. En todo caso si dispones de esa informacion deberias decirme el formato e intentamos ver como aplicamos un ejemplo para VB.NET.

Recuerdo que la unica informacion que suministran los Modems antiguos es un enviar por el TX del rs232 un simple "ring" cuando reciben señal por el pin nº9 asi el programa puede mandar un ATH0 .. creo? para descolgar y efectuar la conexion.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Sunday, April 27, 2008 2:32 PM by victor

hola sabes tengo un proyecto de hacer una interface por medio de vb.net de hacer funcionar una licuadora y cambiar las velocidades la interfaz ya la tengo el problema es el programa como lo hago

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Monday, May 05, 2008 11:15 AM by peplluis

Hola Victor,

Que fuerte!!... una licuadora... deberias explicarme el interface con mas detalle, para entender el protocolo y pensar en una idea para mandar las velocidades.

Contacta explicando con mayor detalle a traves de [This Blog] [Contact]

Saludos,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Tuesday, July 08, 2008 11:41 AM by Deisy

Hola buenas tardes muy buena la informacion del blog, Estoy haciendo un proyecto que se basa en controlar los servicios de una casa a traves de la pc ( es una maqueta de una casa montada sobre un circuito) los dos servicios que quiero manejar es el encendido y apagado de las luces, y el abrir y cerrar puertas, ya tengo el circuito montado y el pic programado, lo que falta es enviar la señal desde el programa diseñado en .net... quisiera que me orientaras para ver como lo puedo hacer.... agradezco de antemano tu ayuda..

Saludos,

Deisy

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, July 09, 2008 1:50 AM by peplluis

Hola Seisy,

El programa del PIC debe incluir una parte de electronica que debes enlazar a traves de USB o RS232, luego debes incluir en tu programa las funciones de Lectura/Escritura que atiendan las ordenes enviadas por el PC, usando System.IO.Ports por ejemplo.

Debido a lo extenso del tema, como a otro tipo de consultas similares te invito a contactar directamente para continuar la conversacion.

Puedes usar la opcion [This Blog][Contact]

Saludos y gracias por valorar positivamente la informacion de este Blog.

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, July 17, 2008 12:26 PM by Karina

Hola Pep Lluis!

Estoy nueva en esto pero ya hice el programa para leer el puerto serial... ahora tengo un prolema, el computador q los envia, lo hace por com1 (no se puede cambiar) y la pc q los recibe (donde tengo el programa en visual studio 2005) lo hace por com4.. resulta q cuando lo quiero ejecutar me dice COM1 NO EXISTE... no se si debo hacer una rutina donde le diga q lea por calquier puerto (de ser asi, si puedes ayudame) o hay otra forma de hacerlo!

Gracias..!

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, July 18, 2008 1:38 AM by peplluis

Hola Karina!

Bueno simplemente en el programa debes dejar libre la seleccion del puerto, para que dependiendo del computador puedas selecionar el 'open' en COM1 o COM4. aunque para entender mejor tu caso deberia conocer mas detalles de tu proyecto. Si lo crees oportuno contacta a traves del Blog y continuamos la conversacion en privado.

Puedes descargarte mi libro que introduce a las comunicaciones serie en :

www.dotnetmania.com/.../Robot%20dispensador%20para%20MSDN%20V%C3%ADdeo.pdf

Precisamente la pagina 32/33 te dice como resolver una situacion como la tuya.

Espero saber como te ha ido.

Sadudos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, August 20, 2008 3:05 PM by omar

Despues de 2 dias por fin encontre alguien que explicara de la mejor manera el control del puerto serie.

Gracias, por su aporte

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, September 17, 2008 10:50 AM by Federico

Hola,

Al ajecutar .IsOpen en una función me dice que el puerto está cerrado, y al intentar cerrarlo con .Close me dice que el puerto ya se encuentra cerrado y sale por error. Esto no me sucede en todas las máquinas. Tenés idea que puede ser?

Saludos

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, September 17, 2008 11:13 AM by peplluis

Hola Federico,

Bueno creo que la situacion es logica, si el puerto esta cerrado 'IsOpen' te devolvera 'false' y evidentemente una operacion de 'Close' generara una excepcion.

Aunque puedes resolverlo simplemente con :

If

MiSerialPort.IsOpen Then MiSerialPort.Close()

Si te parece puedes contactar directamente conmigo desde la opcion [Contact] al inicio del blog, o bien concreta la pregunta o el problema en los Foros de MSDN, estare atento para ofrecerte ayuda.

Saludos,

Pep Lluis,

# utilizar el Puerto Serie

Wednesday, October 29, 2008 11:55 PM by sergio

Hola solo queria decirles si me podian ayudar con el SerialPuert1. es k lo que pasa k estoy en desarrollo de un proyecto de un brazo robotico iap  diseñe el brazo y el circuito y pues el entorno grafico en visual Express con entorno flash para la posicion de angulos de mi brazo ahora solo quiero saber como activar el puerto y mandar valores en BINARIO..si me pueden ayudar les agradeseria mucho bueno aki les dejo mi correo Dare_devil664@hotmail.com ahi me pueden mandar el codigo gracias...

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, October 30, 2008 12:01 PM by peplluis

Sergio... creo que para empezar puedes servirte de alguno de los ejemplos del siguiente enlace:

msmvps.com/.../default.aspx

Saludos,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, January 08, 2009 1:08 PM by andres

Hola,

he realizado un programa en VS 2005 que debe imprimir un ticket en una impresora de ticket, cuando quiero sacar el ticket mando el informe a la impresora de ticket directamente y así no sale lo de elegir impresora, esto en mi equipo sale perfecto con una impresora normal, pero llego al equipo del cliente y el ticket sale en pantalla.

puede alguien ayudarme con este tema. muchas gracias de antemano.

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, January 09, 2009 2:37 AM by peplluis

Hola Andres,

A falta de conocer detalles sobre el equipo del cliente, deberias verificar que impresora tienes seleccionada como predeterminada en el sistema. desde Inicio>panel de control>impresoras

Saludos,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, January 09, 2009 10:01 AM by Ivan

Que Tal PepLluis, (primero que nada mucho gusto y ojala y me puedas echar una mano o darme un norte de que me esta faltando, gracias.).

Sucede que estoy desarrollando una aplicacion de ventas en PDA y mando a imprimir a una impresora Termica Zebra MZ220 la cual utiliza CPCL, (tengo el manual de Zebra y el codigo no me parece complejo), inclusive en Zebra solo me han dicho abre el puerto serial y manda a escribir en codigo CPCL, hasta ahi no hay problema. El problema comienza cuando envio la primer linea   PS.write("[TEXTO]") es cuando me egresa un error en VB (se ve que la impresora comienza a recibir pero no pasa nada mas), te adjunto mi codigo y el error y ojala y me puedas decir que estoy haciendo mal gracias.

CODIGO

Imports System

Imports System.IO.Ports

Imports System.IO

Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       Dim ps As New System.IO.Ports.SerialPort("COM3", 9600, Parity.None, 8, StopBits.One)

       Try

           ps.Open()

           ps.Write("! 0 200 200 210 1" + vbCrLf + "TEXT 4 0 30 40 Gracias Dios" + vbCrLf + "FORM" + vbCrLf + "PRINT")

           ps.Close()

       Catch ex As Exception

           MsgBox("ojo " & ex.ToString)

           ps.Close()

       End Try

   End Sub

End Class

ERROR

System.IO.IOException: IOException

en System.IO.Ports.SerialStream.WinIOError()

en System.IO.Ports.SerialStream.Write(Byte[] array, Int32 offset, Int32 count, Int32 timeout)

en System.IO.Ports.SerialPort.Write(String text)

en SmartDeviceProject3.Form1.Button1_Click(Object sender, EventArgs e)

en System.Windows.Forms.Control.OnClick(EventArgs e)

en System.Windows.Forms.Button.OnClick(EventArgs e)

en System.Windows.Forms.ButtonBase.WnProc(WM wm, Int32 wParam, Int32 lParam)

en System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)

en Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)

en System.Windows.Forms.Application.Run(Form fm)

en SmartDeviceProject3.Form1.Main()

Gracias

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, January 09, 2009 10:35 AM by peplluis

Hola Ivan,

Por el codigo te aconsejaria que omitiras la instruccion de ps.close, pues es posible que al ejecutarlo estan interrumpiendo el envio completo de la trama y supongo que el error viene dado por esa 'interrupcion forzada' cuando esta procesando el buffer de transmision.

Espero que la intuicion sea buena... ya nos contaras.

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, January 09, 2009 10:44 AM by Ivan

Muchas gracias por responder tan pronto Peplluis, he comentado la linea ps.close e incluso la comento en la parte del catch, sin embargo me regresa el mismo error; no se si olvide comentarte el medio de impresion es IRDA y le estoy poniendo los mismos datos de configuracion del puerto (9600,N,8,1), ¿Tienes alguna otra idea?  Gracias

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, January 09, 2009 12:10 PM by peplluis

Ivan,

Pues ocurre como bien sabes que los IRDA son un mundo aparte. Lo ideal es Virtualizar un COM a traves de bluetooth. La unica cosa que se me ocurre es que ajustes la velocidad lo mas baja posible a 1200 o 2400 bauds por ejemplo. Deberias probar enviando un texto ASCII puro y sin caracteres de control tipo VbCrLF.... Si te parece continuamos esta conversacion en privado, contactame a traves de la opcion [Contact] en el inicio del Blog.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, January 14, 2009 11:56 AM by enrique

hola Iam enrique, necesito ayuda ya ke necesito un codigo ke al igual ke la hiper terminal me muestre los datos y los almacene en una base de datos, casi no se mucho de esto ojala y mne puedas ayudar mi correo es diug23@hotmail.com grasias salu2....

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, January 16, 2009 4:14 PM by peplluis

Hola Enrique,

En el siguiente enlace tienes un ejemplo que podrias utilizar como punto de partida.

http://msmvps.com/blogs/peplluis/archive/2008/09/19/leer-los-ceros-y-unos-de-un-micro-controlador.aspx

Lo unico que tienes que cambiar es la incorporacion de los bytes recibidos por un contenedor de texto tal como rtf. Luego tienes que tener en cuenta escoger un juego de caracteres que te permita representar los caracteres de control.

Si quieres podemos continuar la conversacion contactandome a traves de la opcion al inicio del blog [contact]

# puerto paralelo

Tuesday, January 20, 2009 8:47 PM by gaspar

hola....

soy estudiante de mecatronica y me gustaria que me ayudaras para un proyecto de creatividad lo que necesito es controlar un motor por el puerto paralelo en visual basic 2005 que con un botton se encienda y a cierto tiempo de vuelta atras... mi correo es misterios_gol@hotmail.com la vdd que te lo agradeceria

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, January 21, 2009 2:31 AM by peplluis

Hola Gaspar,

Tal y como te respondi en el post de los foros... a ver que te parece este ejemplo...

http://msmvps.com/blogs/peplluis/archive/2009/01/22/acceso-al-puerto-paralelo-lpt-algo-m-225-s-que-encender-un-led-o-imprimir-un-doc.aspx

 

Ya nos contaras

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, March 27, 2009 2:53 PM by Leo

Hola..Pep Lluis tu foro es muy bueno y tiene las cosas especificas que uno pueda buscar, creo que como todos estoy agradecido por el aporte de tus conocimientos hacia los demas...te escribo para pedirte porfavor si me puedes hechar una mano si no son las dos =) al problema que tengo.

Tengo que hacer un programa en VS 2005 para recibir datos de una balanza electronica en tiempo real y copie de aqui parte del codigo y otra parte que encontre en MSD con lo que consegui hacer este metodo

 Function ReceiveSerialData() As String

       ' Receive strings from a serial port.

       Dim returnStr As String = ""

       Using serie As IO.Ports.SerialPort = _

               My.Computer.Ports.OpenSerialPort("COM1")

           serie.BaudRate = 9600

           serie.DataBits = 7

           serie.Parity = Parity.Even

           serie.StopBits = StopBits.One

           Do

               Dim Incoming As String = serie.ReadLine()

               If Incoming Is Nothing Then

                   Exit Do

               Else

                   returnStr &= Incoming & vbCrLf

               End If

           Loop

           serie.Close()

       End Using

       Return returnStr

   End Function

Al metodo lo llamo en el evento click d un boton y cuando lo hago solo consigo que la aplicacion se cuelge, no se que me podrias decir de aque se debe. Gracias de antemano

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Tuesday, March 31, 2009 2:07 AM by peplluis

Hola Leo,

En primer lugar nunca deberiamos utilizar un Do-Loop dentro de una rutina de recepcion de datos. En segundo lugar si utilizas un 'ReadLine' deberias hacerlo desde un 'Threat'.

Intenta revisar el ejemplo en :

msmvps.com/.../problemas-en-la-recepci-243-n-de-datos.aspx

Tambien encontraras diversos modelos y propuestas para efectuar recepcion de datos en :

msmvps.com/.../default.aspx

A partir de ese punto, si te parece vamos comentado tus dudas.

Espero que esto te ayude.

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, May 06, 2009 12:16 PM by oskr

Gracias por esta informacion. ahora, me gustaria saber como leer y escribir en el puerto serie

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, May 06, 2009 2:26 PM by peplluis

Oscar,

aqui encontraras algunos ejemplos.

msmvps.com/.../default.aspx

Saludos,

# re: Como seria para una impresora USB

Wednesday, May 13, 2009 6:55 AM by shushi

Al ver esto, me pregutno como seria para enviar datos a una impresora de tickets que este conectada al puerto USB?????? Lo he probado asi y no conecta (logico). Alguien sabe como.

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, May 13, 2009 4:51 PM by daimer

hola amigo lo que pasa que estoy haciendo un proyecto, sera que codigo que esta en la parte superior me sirve para recibir la entrada de datos

de un plc atraves del puerto..  y al plc va conectado un sensor me invia informacion del objeto...

espero que alguien me ayude lo mas pronto

colombia.. sena... barranquilla

mi correo es daimersanchez@hotmail.com

gracias culaquier cosa me escribe al correo

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, May 14, 2009 2:34 AM by peplluis

Hola Daimer,

Para empezar, te aconsejo utilizar alguno de los ejemplos que encontraras en :

msmvps.com/.../default.aspx

Saludos,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, May 27, 2009 1:57 PM by john

nesecito saber como leer los datos de una balanza electronica del modelo indicador - CI3000a  por favorv quien me puede ayudar es urgente grcias

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Monday, August 10, 2009 10:26 PM by mariano

hola pepeluismira  lo que pasa es que quiero mandar datos  tipo char pero  se me ha complicado el procedimiento ojala me puedas ayudar hacer un ejemplo de mandar datos tipo char  por el puerto serial.

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Monday, August 17, 2009 4:50 AM by peplluis

Hola Mariano,

Debes utilizar la expresion '.Write(Chr(n))' donde n representa el numero de caracter ASCII que como ya sabes corresponde a la representacin del mismo (0 a 255)

Saludos,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Monday, October 12, 2009 2:28 PM by jopeve

si alguien puede ayudarme le agradezco necesito hacer el siguiente programa en visual 2005

1. imprimir el almacen con> numero de ventas * año

2. imprimir total ventas de almacen con < ventas

3.imprimir ventas * año.

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Tuesday, October 20, 2009 9:27 AM by peplluis

Hola Jopeve,

Te aconsejaria postearas tu pregunta en los foros de reportes de MSDN, este post esta dedicado a repasar los principales mandatos del puerto serie.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, November 27, 2009 4:33 PM by marcos

hola pepe luis mi pregunta es la siguiente

tengo un equipo con un sistema de bascula conectado por un puerto com el problema es que cada que se reinicia el equipo y inicio el programa de bascula me marca que el puerto esta ocupado a que se debera esto te lo agradezco por tus atenciones

gracias

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Tuesday, December 01, 2009 6:21 AM by peplluis

Hola Marcos,

Para salir de dudas, prueba de adaptar este ejemplo :

msmvps.com/.../como-comunicarme-con-una-bascula.aspx

Y vemos que esta fallando.

Espero tus noticias,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Tuesday, December 15, 2009 11:39 AM by Miguel

hola pepe muy buen porte ^^, imaginate q necesito comunicar un PLC unitronics a mi pc y leer los datos entregados por el plc y visualizarlos en excel pero en tiempo real o lo mas cercano posible. espero me puedas colaborar mcuhas gracias ^^

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, December 17, 2009 3:52 AM by peplluis

Hola Miguel,

Lo ideal es tomar una plantilla de un Add-ins para excel y encapsular la funcionalidad de acceso a dicho PLC.

Para tal proposito deberas incrustar el protocolo de comunicaciones del 'Unitronics', el cual desconozco :-(

Si crees interesante continuar la conversacion, puedes contactar conmigo utilizando la opcion [Contact]... estare encantado de colaborar dentro de mis posibilidades.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Monday, December 28, 2009 6:35 PM by Miguel Lopez

Como puedo activar una electro Chapa desde mi puerto serie ojala me puedan ayudar muchas gracias

Necesito desarrollar una aplicacion que cuando un usuario pase un codigo de barras en un lector de Codigo de Barras este se verifique en una base de datos y si el usuario existe entonces se active una electrochapa que le permita el acceso.

Lo unico qu me falta es como activar la chapa desde puerto serial

Ojala me puedan ayudar

Que DIOS bendiga todos y cada de ustedes en cada uno de sus dias y que este 2010 sea maravilloso para ustedes y sus seres queridos DIOS LES BENDIGA

# Problema en el manejo del puerto.

Wednesday, December 30, 2009 1:28 PM by Juan

Pep Lluis:

          Muy buena tu nota por cierto.

          Estoy teniendo un problema con el uso de is.open. El mismo devuelve un boolean con valor False en el caso en que el puerto se encuentre cerrado y True en el caso en que esté abierto. Mi problema es el siguiente, yo quiero detectar de antemano en la aplicación si el puerto se encuentra abierto, para así indicarle al usuario que el mismo ya se encuentra abierto por otra aplicación, pero isopen, siempre que el puerto no lo haya abierto la aplicación en donde se ejecuta el comando, devuelve False.

            ¿Tenés idea de alguna solución?.

Muchas gracias, Juan Bacigalupo.

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, December 30, 2009 4:53 PM by peplluis

Hola Joan Bacigalupo,

Aqui tienes un ejemplo para enumerar los puertos serie disponibles :

msmvps.com/.../serial-port-enumeraci-243-n-amp-disponibilidad.aspx

Tambien los tienes en C# y diferentes formas de abordarlo. Los encontraras bajo el tag 'Puertos Serie'.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, December 30, 2009 5:07 PM by peplluis

Hola Miguel Lopez,

Es posible utilizando alguna de las señales de salida, pero en tal caso deben adaptarse los niveles logicos de voltage... +/-9V VCC a la tension de trabajo la electro-chpa. La otra posibilidad es utilizar un dispositivo comercial de E/S. Si te parece contactame a traves de la opcion [Contact] y continuamos la conversacion.

Pep Lluis,

# Como lo hago?

Friday, January 22, 2010 9:45 AM by ziggy

hola a todos,

quisiera hacer una aplicacion muy simple pero no se como hacerla:

quiero hacer un programa en vb2005 que este abierto mientras no reciba nada por el puerto serie, y en el momento que reciba una señal de 5 voltios, ejecute otro programa y se cierre.

podrian facilitarme el codigo si no es mucha molestia??

un saludo y gracias

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, January 22, 2010 9:47 AM by ziggy

hola a todos,

quisiera hacer una aplicacion muy simple pero no se como hacerla:

quiero hacer un programa en vb2005 que este abierto mientras no reciba nada por el puerto serie, y en el momento que reciba una señal de 5 voltios, ejecute otro programa y se cierre.

podrian facilitarme el codigo si no es mucha molestia??

un saludo y gracias

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, February 10, 2010 3:54 AM by Carlos

Hola PepLLuis!

Muy bueno tu blog pero tengo un problema al abrir los eejmplos que pones. Mi problema es como el de muchos de los que he leido por aqui, y es que el pc que tengo no tiene COM, con lo que tengo un conversor, pero el conversor solo pone los COM del 4 al 8.

El codigo que utilizo es que te viene por defecto en visual basic C++ 2008 y tiene el inconveniente que no se donde o como declara que tiene que abrir el puerto COM1 con lo que no detecta nada y dice que esta cerrado.

Como puedo cambiar la declaracion de los puertos, es decir, como hago para que me habra el COM5 por ejemplo?

Gracias de antemano!

Un saludo!

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, February 10, 2010 9:01 AM by peplluis

Hola Carlos,

Es simple... si estas utilizando el System.IO.Ports.SerialPort, solo tienes que asignar la propiedad 'Name'... ejemplo :

MiPuertoSerie.PortName = "COM4"

antes de la operacion 'Open'.

o bien :

MiPuertoSerie = My.Computer.Ports.OpenSerialPort("COM4")

Tambien tienes la opcion de asignar al conversor el numero que desees, desde el administrador de dispositivos, puertos com/lpt, opciones avanzadas y seleccionar el COMx que quieras.

Espero que esto responda a tu pregunta, en caso contrario no dudes en contactar de nuevo.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Monday, February 15, 2010 7:35 AM by robin

Hola Pep Lluis, excelente tu blog.

Mira necesito hacer un programa en vb.net (tengo visual estudio 2008) donde el programa este siempre escuchando el puerto serial (COM1)  y cuando llegue informacion por ese puerto la capture y la almacene.

Ojala me puedas ayudar

Gracias de antemano

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, February 17, 2010 9:41 AM by peplluis

Hola robin,

Encontraras multitud de ejemplos en este apartado :

msmvps.com/.../default.aspx

Aun y asi, si no encuentras en ello algo util, no dudes en contactar de nuevo.

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, February 18, 2010 2:06 AM by peplluis

Nota para Ernaes,

Sobre tu pregunta del NE555... es mejor que contactes directamente, opcion [Contact] y vemos como puedo ayudarte.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, March 18, 2010 11:52 AM by jerson

Hola tengo problemas para actualizar el texbox, tengo un pic conectado al pto usb, lo leo como pto COM, y le mando al Pc, datos de un teclado, pero no consigo que el texbox se actualice y me muestre las teclas presionadas, solo se queda con la primera espero me puedas ayudar. Soy de chile, aqui te dejo el codigo.

Public Class Form1

   Dim Recibidos As String

   Public Sub New()

       ' Llamada necesaria para el Diseñador de Windows Forms.

       ' Agregue cualquier inicialización después de la llamada a InitializeComponent().

       InitializeComponent()

       If Not SerialPort1.IsOpen Then

           Try

               SerialPort1.Open()     ' Para abrir el puerto.En este caso el com6 puerto virtual

               ' que genera el Proteus en mi aplicacion.

           Catch ex As Exception

               MessageBox.Show(ex.ToString)

           End Try

       End If

       ' Agregue cualquier inicialización después de la llamada a InitializeComponent().

       AddHandler SerialPort1.DataReceived, AddressOf Recepcion 'delegado para que se pueda escribir en el texbox1

   End Sub

   ' Delegado

   Private Sub Recepcion(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)

       Recibidos += SerialPort1.ReadExisting() 'lee lo que tiene el bufer de entrada y lo guarda en la variable recibidos

       'Recibidos = SerialPort1.ReadLine()

       Me.Invoke(New EventHandler(AddressOf Actualizar)) 'Necesario para poder ocupar el Texbox1

   End Sub

   Private Sub Actualizar(ByVal s As Object, ByVal e As EventArgs)

       TextBox1.Text += Recibidos

   End Sub

End Class

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, April 23, 2010 6:17 AM by peplluis

Hola Jerson,

El codigo parece correcto para la funcion que detallas, debes tener en cuenta que para recibir datos debes adecuarte a los ajustes del dispositivo, por lo que deberias verificar la velocidad,paridad...etc.

Tambien existen ciertas problematicas con adaptadores USB/Rs232, tengo algun post que los describe.

Espero tus noticias,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Monday, June 28, 2010 4:20 PM by jose

hola estoy programando en vb 2008, tengo un combox1 y quiero que se refleje en ese combo los puertos, com. que tiene la pc para poder seleccionerlos me podrias ayudar gracias

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Thursday, July 22, 2010 5:40 PM by peplluis

Hola Jose,

Puede utilizar alguno de los ejemplos que tienes en el apartao de puertos serie como por ejemplo :

msmvps.com/.../serial-port-enumeraci-243-n-amp-disponibilidad.aspx

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, August 11, 2010 12:12 PM by Felipe Escudero

Hola,

necesito leer los datos de una balanza, ya tengo los datos de pariedad y bits de datos etc, pero lo necesito plasmar en una aplicacion pero nose por donde comenzar, se que deben usar el control serialPort, porfavor me podrias ayudar con algun ejemplo.

Gracias

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Friday, August 13, 2010 5:34 AM by peplluis

Hola Felipe,

Aqui tienes el enlace para seguir los ejemplos mas significativos de este blog en tanto al puerto serie :

msmvps.com/.../default.aspx

No dude en usar la opcion [Contact] si necesita alguna indicacion mas.

Saludos,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Sunday, September 26, 2010 11:17 PM by Grace

Hola,

Estoy teniendo problemas al tratar de enviar datos por el puerto serial, me sale que no puedo accesar al COM8 porque no tengo los privilegios necesarios. Que podria hacer para solventar este inconveniente?

Muchisimas gracias,

Grace!

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, September 29, 2010 10:24 AM by peplluis

Intenta configurar tu puerto asignandole otro numero de port... ejm COM2, asegurate en caso de que hablemos de un adaptador USB/Serie que el driver funciona bien con otras aplicaciones, o si tienes algun software que al iniciarse el sistema, esta ocupando el puerto para conectarse con "un telefono" por ejemplo.

En caso negativo, toma un ejemplo de mi blog "el de la bascula" por decir uno, he intenta hacerlo rodar con el numero de puerto asignado anteriormente.

Ya nos contaras ;-)

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, November 03, 2010 8:53 PM by Nana

excelente blog.

Muchas gracias por tus aportes

Nana

# mi primera vez programando a travez del puerto serial

Wednesday, November 24, 2010 11:26 PM by Pablo V.

Hola men

sabes  te  he leido y seguido tus indicaciones arriba pero no pasa nada con la tarjeta la cual estoy enviando datos la idea es enviar un array  tengo un codigo para visual 6 pero yo ocupo visual basic 2005 hice algo parecido para poder enviar y prender la tarjeta pero no pasa nada te envio el codigo de visual 6 que funciona y el de visual basic 2005  que no :/

visual 6

////////////////////////////////////////////

Private Sub Command1_Click()

Dim arr() As Byte

Dim a, b, c, d As Integer

ReDim arr(18)

arr(0) = 115  's

arr(1) = 100   'Centro

arr(2) = 120  'm

arr(3) = 1   'camara

arr(4) = 111  'accion

arr(5) = 101   'solicita respuesta

With MSComm1

   .Output = arr

    Text1.Text = ""

End With

End Sub

Private Sub Form_Load()

With MSComm1

   .CommPort = 4

   .Settings = "9600,N,8,1"

   .PortOpen = True

   .InputLen = 0

   .RThreshold = 1

   End With

End Sub

Private Sub Form_Unload(Cancel As Integer)

With MSComm1

.PortOpen = False

End With

End

End Sub

Private Sub MSComm1_OnComm()

With MSComm1

       sinput = .Input

       Text1.Text = Text1.Text + sinput

       Label1.Caption = Len(Text1.Text)

       End With

End Sub

////////////////////////////////////////////

visual basic 2005  (que no me funciona)

/////////////////////////////////////////////

Imports System.IO.Ports

Imports System.IO.Ports.SerialPort

Public Class Form1

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   End Sub

   Public a As Integer

   Public b As Integer

   Public c As Integer

   Public d As Integer

   Private Sub Command1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Command1.Click

       Dim arr() As Byte

       Dim Contador As Integer

       ReDim arr(18)

       arr(0) = 115  's

       arr(1) = 100   'Centro

       arr(2) = 120  'm

       arr(3) = 1   'camara

       arr(4) = 111  'accion 82

       arr(5) = 101   'solicita respuesta

       Dim Serie As SerialPort

       If cmbpuerto.Text <> "" Then

           Serie = My.Computer.Ports.OpenSerialPort(cmbpuerto.Text)  

           Serie.BaudRate = 9600              

           Serie.DataBits = 8                  

           Serie.Parity = IO.Ports.Parity.None    

           Serie.StopBits = IO.Ports.StopBits.One

           Dim Puerto As String

           Puerto = Serie.PortName

           Label5.Text = Puerto

           Dim Estado As Boolean          

           Estado = Serie.CDHolding            

           txtest.Text = Estado

           Dim SiNo As Integer

           SiNo = Serie.IsOpen          

           Estado = Serie.CtsHolding          

           Label2.Text = Estado

           Estado = Serie.DsrHolding          

       Label4.Text = Estado

           Serie.RtsEnable = True              

           Serie.DtrEnable = True        

           Serie.ReadTimeout = 10              

           Serie.WriteTimeout = 10            

           Contador = Serie.BytesToWrite      

           Dim numer As Integer

           For numer = 0 To 5

               Serie.Write(arr(numer))

           Next

           textrecibido.Text = Serie.ReadExisting()            

       Else

           MsgBox("Ingrese Puerto")

       End If

   End Sub

end Class

///////////////////////////////////////

NEcesito ayuda :S

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Monday, December 13, 2010 11:54 AM by Fede

Hola soy de Chile y te comento que es lo mejor que he encontrado para el manejo del puerto serial con VB 2005. He leido la gran parte de los POst y Solo darte las gracias por lo nuevo que he aprendido. Aunque sigo sin actualizar los datos  recibidos..es el mismo caso de Jerson de Chile, he colocado bien la velocidad, paridad, etc. y utilizo una maquina (notebook) con puerto serial. Podrias apoyarme con mi interrogante

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Monday, December 13, 2010 12:08 PM by Fede

Hola soy de Chile y te comento que es lo mejor que he encontrado para el manejo del puerto serial con VB 2005. Te comento que tengo el mismo problema de Jerson (Thursday, March 18, 2010 11:52 AM by jerson

), sigo sin actualizar los datos  recibidos por la com1.. he colocado bien la velocidad, paridad, etc.porque lo puedo ver con Hyperterminal y en mi caso utilizo una maquina (notebook) con puerto serial. Podrias apoyarme con mi interrogante

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Sunday, December 19, 2010 5:52 AM by peplluis

Hola Fede,

Disculpa la tardanza en responder pero ya se sabe... el trabajo prioriza las necesidades.

Para tratar de este tema estare encantado de ayudarte a traves de la opcion [Contact], asi podremos disponer de una comunicacion fluida.

Espero tu correo,

Gracias,

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Sunday, December 19, 2010 5:57 AM by peplluis

Nota a Pablo y a todos los que necesitan contactar conmigo.

He recibido muchas peticiones de ayuda a traves de este post. Me gustaria comentaros que por las caracteristicas del Blog se hace imposible gestionar pregunta/respuesta. Para ello os animo que contacteis directamente conmigo a traves de la opcion [Contact] o bien posteeis vuestras preguntas en los foros de MSDN, siempre intento estar al corriente y participar en las conversaciones en las que puedo aportar alguna respuesta.

Gracias por vuestro interes y participación.

Pep Lluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, October 19, 2011 12:04 PM by Juan

uff, parece que por fin encuentro un sitio sobre este tema.

Veras, me estoy iniciando en los scadas, a ver si pudieras orientarme con un ejemplo de tramas cómo enviarle al plc que ponga a I un contacto y cómo leer si una señal esta a O ó I.

Muchas gracias.

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, October 19, 2011 12:38 PM by Juan

Hola, me estoy iniciando en los scada, mi cuestion es muy simple, a ver si me podeis poner un ejemplo en el que un boton me active una marca en el plc y leer una marca para hacer algo en el pc (por ejemplo el color del boton)

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Wednesday, November 02, 2011 6:41 PM by peplluis

Hola Juan... si te parece podemos continuar la conversacion en los foros de Msdn... por ejemplo :

social.msdn.microsoft.com/.../d09a541a-54e9-47fc-a46d-0aaadc3dce52

Saludos,

PepLluis,

# re: Principales Mandatos para utilizar el Puerto Serie, del espacio System.IO.Ports

Tuesday, November 08, 2011 10:06 AM by Erico

Hola, tengo una impresora serial Epson, la que manejaba bajo VB 6.0, mediante el mscomm, me detectaba los errores producidos en la impresora (falta de papel, por ejemplo), sin embargo por necesidad tengo que migrar a VB.net 2005, puedo imprimir sin problemas, pero no se como dejar a la escucha los errores que llegan de la puerta.

Agradeciendo tu gestion

Saludos

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: