# Puerto serie con Visual Studio 2010 (VB.net)



## jorge andrada (Feb 22, 2011)

hola gente de aqui como les va. espero quelindo a todos.
resulta que comence a trabajar con el visual estudio 2010, y ya voy haciendo un par de programitas, pero mi problema comenzo cuando tube necesidad de manejar el puerto serie.
 yo necesitaria un programita de ejemplo en donde por ejemplo tengo dos textboxs, y un boton, y que en un textbox escribo el dato a enviar y se envie cuando presione el boton, y que en el otro textbox se muestre el dato que recivo. alguien seria tan amable de hacer ese programita y pasarlo? aora otra pregunta
puedo conectar el puerto serie de una pc a otra pc de la par, y a las dos le pongo el programita antes mensionado, y asi poder manejar bien el tema de transmision de los datos? y por ejemplo yo le pongo un dato a una y lo envio y le pongo otro dato a otra y lo recivom, y asi susesivamente?
el cable bastara con que solamente use tres hilos? Rx,Tx y GND? solo que al Rx de una lo tengo que mandar al Tx de la otra y viceversa cierto? desde ya muchas gracias me sera de gran utilidad su informacion.
ya e leido varios tutoriales, pero no le caso bien a la mano todavia, y no me queria arriesar a conectar los puertos de las pc entre ellas, por temor a convertirme en un quemador de puertos serial, slauds a todos y gracias por su tiempo.


----------



## Black Tiger1954 (Feb 22, 2011)

Lamentablemente como ya sabrás no te puedo ayudar mucho con VB.net con VB era sencillo, tiene un componente que se llama msComm (creo que se llama así -en este pc no lo tengo instalado-), se agrega al formulario, y luego en el código se lo activa.
Ese componente genera un evento cuando recibe datos (el evento onComm) y eso se usa para detectar y procesar los datos.
Por el otro lado, ese mismo componente acepta que le envíes datos. Si los cargás en un box luego oprimiendo un botón, le transferís los datos al componente y éste los envía.
Efectivamente podes usar un cable de 3 hilos conectado como dijiste.


----------



## Meta (Feb 23, 2011)

Hola:

Aquí hay una guía paso a paso sobre el puerto serie y el PIC.

http://electronica-pic.blogspot.com/2009/03/manual-interfaz-vc-y-visual-basic.html

También para C#.
http://electronica-pic.blogspot.com/2008/11/electrnica-pic.html

Saludo.


----------



## jorge andrada (Feb 24, 2011)

te comento Meta que yo no trabajo con pic, yo trabajo enr ealidad por un puerto USb, pero como tengo un chip USB to uart que me transforma un comx virtual, lo manejaria como si tuviese un puerto srie.
y con ell micro que o voy a comunicar es con un freescale de motorola hc908. pero por ahora y para ejercitarme y comprender bien el manejo del puerto yo necesitaria conectar a dos pc con su puerto serie, entonces al tener un rogramtita de envio y recepcion en cada maquina yo podria ver vien como funcionan los envios, las configuraciones y recien pasaria al microcontrolador, aparte al microcontrolador lo programo en assembler no en c.  gracis de todas maneras.

black tiger, estoy en este momento intentando hacerlo en el VB6 que tambien lo tngo para arrancar con algo. me podrias dar una mano con el programita que quiero hacer que ya explique al comienzo, pero para VB6?   
tengo que utiliar el mscomm cierto? ya lo intente utilizar pero no puedo hacer que funcione ni que lo maneje con un boton que envie cuando pulse el boton y bueno ya explique lo que intento hacer, si me puedes dar una manito black aqui estare gracias .


----------



## ByAxel (Feb 24, 2011)

Hola.
Revisa el tema Comunicación serial con Visual Basic 2008, puede que necesites usar "threads" en el proceso SerialPort1_DataReceived ya que este sucede en modo asincrono al resto del programa...

Busca en el foro, no recurdo pero vi un manual sobre el SerialPort y VS.Net...

Un saludo


----------



## Black Tiger1954 (Feb 24, 2011)

Los pasos son más o menos los siguientes:
En un form, agregás el msComm, 2 textbox (uno para recibir y otro para enviar) y un botón.
En el evento Form_Load le definís el puerto y el modo de conexión. Luego abrís el puerto.
Ahora ya msComm está activo.
Agregás el evento OnComm
Cuando llegue un dato, se activa este evento, y ahí recuperas los datos recibidos (medianteMSComm1.Input)
, y si querés los pasás a un textbox (como si fuera un mensajero) (tenés que recordar vaciar el buffer de entrada).
Para enviar el dato, solo tenés que usar msComm.Output. O sea, escribís en el texbox y luego le transferís los datos del textbox al msComm (si querés te conviene limpiar el textbox luego del envío.


----------



## vargasbill (Abr 9, 2014)

Hola amigo, viendo el trabajo que hiciste y a modo de evitar crear otro tema, te comento un problema que tengo, tengo el codigo para la comunicación serial y recepción de datos desde un microcontrolador y el PC, se conecta pero al recibir datos (lo tengo que por un pulsador envie un dato) manda un error: "Excepción no controlada del tipo 'System.InvalidOperationException' en System.Windows.Forms.dll

Información adicional: Operación no válida a través de subprocesos: Se tuvo acceso al control 'tatos' desde un subproceso distinto a aquel en que lo creó."

Te anexo el proyecto para que me digas que te parece, he revisado en internet pero predomina ayuda para VB6 y no 2010 en adelante. Te agradezco si me puedes colaborar.

PD: El codigo del microcontrolador que envía el dato lo hice en MikroC el cual tiene una herramienta para probar conexiones seriales y el dato me lo lee perfecto desde allí, desde el programa que hice con visual me genera error.


----------



## vargasbill (Abr 10, 2014)

vargasbill dijo:


> Hola amigo, viendo el trabajo que hiciste y a modo de evitar crear otro tema, te comento un problema que tengo, tengo el codigo para la comunicación serial y recepción de datos desde un microcontrolador y el PC, se conecta pero al recibir datos (lo tengo que por un pulsador envie un dato) manda un error: "Excepción no controlada del tipo 'System.InvalidOperationException' en System.Windows.Forms.dll
> 
> Información adicional: Operación no válida a través de subprocesos: Se tuvo acceso al control 'tatos' desde un subproceso distinto a aquel en que lo creó."
> 
> ...



Respondo mi duda que fue movida desde otro tema: El arreglo al error que me generaba es poniendo la siguiente linea en el evento form:
CheckForIllegalCrossThreadCalls = False


----------



## ByAxel (Abr 10, 2014)

vargasbill dijo:


> Información adicional: Operación no válida a través de subprocesos: Se tuvo acceso al control 'tatos' desde un subproceso distinto a aquel en que lo creó."


Es un proceso asíncrono, necesitas crear un delegado... revisa el Link que puse anteriormente, está en C# pero es casi lo mismo.

En las busquedas, especifica que es VB.NET ya que si hay info sobre eso... más en MSDN y en C#.

Saludos.


----------

