Comunicación serial con Visual Basic 2008

Voy a hacer lo que me has dicho a ver si me va todo bien!
¿Puede influir que el CD de instalación que tengo sea la versión aprendizaje?
En otro sitio me han recomendado que descargue la ISO de la versión empresarial...
Iré probando. Ya comentaré cuando consiga solucionarlo.
Gracias!
 
¿Puede influir que el CD de instalación que tengo sea la versión aprendizaje?
No he usado esa versión, tengo la empresarial.
Tal vez en esa versión sea necesaria una licencia para el MSCOMM32.OCX, aunque se me hace raro que ese componente sea distribuido para su uso con licencia en una instalación de aprendizaje. (No se podría usar)

Espero que resuelvas tu problema.
 
Mi problema es el siguiente, estoy haciendo un proyecto para la universidad y es la primera vez que trabajo con comunicacion serial, bueno, lo primero que hice fue crear un FORM en visual basic en el cual, de manera anticipada, se seleccionan 8 datos enteros, despues de seleccionar los 8 numeros, paso a querer enviar solamente el primer dato
Código:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If Button1.Text = "CONECTAR" Then
            SerialPort1.PortName = ComboBox1.Text
            Button1.Text = "DESCONECTAR"
            Try
                SerialPort1.Open()
            Catch ex As Exception
                MessageBox.Show("Puerto no valido")
                Return
            End Try
            SerialPort1.DiscardOutBuffer()
            SerialPort1.Write(freca)
           
        ElseIf Button1.Text = "DESCONECTAR" Then
            Button1.Text = "CONECTAR"
            SerialPort1.Close()
        End If
    End Sub
como ven, el primer y unico dato que envio es FRECA y tiene un valor fijo que es 3, al enviar por el puerto serie a mi simulacion en proteus quiero recibir el dato y mostrarlo por el LCD (para asegurarme que el dato que recibo es el correcto) entonces hago lo siguiente
Código:
lcd_putc("\f variables");
   prr=variables();
   printf(lcd_putc,"\n %3u ",prr);

char variables()
{
   tieca=getc();
   return(tieca);
}
es entonces cuando al mostrar en el LCD mi dato, no me muestra 3, sino 51....que puedo hacer? ...
 
querido joaquin gracias por responder tan rapido, resulta que al enviar un dato por el puerto serial, esta en ASCII y para convertirlo a decimal, pues debo restarle 48, es por eso que me saltaba 51, pero aqui genero otra duda, ya que envio datos mas grandes, por ejemplo 30, y solo me bota el numero 3, aunque, en el Virtual terminal del proteus si llega el valor (30) al mandarlo a imprimir, no lo reconoce
 
Talvez sea por eso, pero como puedo enviar datos binarios desde el VB? estoy usando el visual studio 2010 entonces solo puedo manejar el SerialPort no hay el MSCOMM, entonces necesito ayuda porfavor :cry:
 
¿cómo puedo enviar datos binarios desde el VB?
Necesitas convertir la cadena de texto numérico ingresada al TextBox a su equivalente ASCII.

Para que veas cómo se realiza, adjunto un ejemplo. (Está escrito en VB 2008, pero no tendrás problemas.)

Suerte.
 

Adjuntos

  • SerialCOM.rar
    111 KB · Visitas: 38
Última edición:
Muchas gracias D@rkbytes eso sirvio para ver el dato por un puerto y saber si realmente esta llegando y efectivamente muestra el dato enviado en bits, por ejemplo el 24 (11000), pero ahora como puedo trabajar con esas variables como tipo entero? gracias de antemano
 
Perdon por reabrir el tema mio, pero necesito ayuda ahora no con enviar datos de la pc al PIC sino al revez, y es que cuando pongo putc(1), nunca envia el dato que estoy esperando recibir en mi vb.net, alguna sugerencia?
 
es que cuando pongo putc(1), nunca envía el dato que estoy esperando recibir en mi vb.net. ¿Alguna sugerencia?
Pues eso depende de la manera cómo estés recibiendo los datos.
No es lo mismo enviar un número entero que enviarlo como cadena. "String"
O sea, no es lo mismo enviar 1 que '1' y dependiendo de cómo trates lo que recibes, es lo que se interpretará.
 
La cosa va asi miren en mi codigo en C coloco esto
Código:
if(taux2>=60)
            {
               t--;
               putc(1);
               taux2=0;
               pito=t;              
            }
exacto, asi de censillo, si un contador llega a 60, pongo putc(1)
y en el lado del visual basic pongo, una variable b=0, como entero, y realizo un control para saber si b ha cambiado de valor leyendo constantemente el puerto
Código:
While (b <> 0)
                b = SerialPort1.ReadLine()
            End While
estoy haciendo algo mal? como deberia poder hacerlo, gracias de antemano
 
Gracias por responder, D@kbytes. Probé colocando readbyte() pero sigue sin funcionar
Pues algo debes estar haciendo mal.
Te envío un ejemplo con simulación y programas en PIC C y en Visual Basic 2008.
El programa en C envía un 1 o un 0, el programa en VB sólo actuará al recibir un 1.
 

Adjuntos

  • SerialCOM Rx, Tx.rar
    143.3 KB · Visitas: 15
Última edición:
Una vez más, gracias por responder. Intento aplicar tu ejemplo a mi trabajo, pero sigue sin funcionar.
Cómo información adicional, debo decir que cuando lee el dato, lo guardo en otro form para leerlo y ponerlo en un Label, pero el label nunca cambia de valor, no entiendo q puede estar pasando.
 
Última edición por un moderador:
Pude hacer que mi programa funcione con ayuda de tu programa, tuve que entenderlo muy bien para aplicarlo.
Muchas gracias D@rkbytes, ahora haré la prueba de mi proyecto y les comento cómo me va.


Malas noticias, en la simulación corre perfecto, de maravilla, pero cuando armo el circuito, pareciera que los datos nunca llegan al pic :(
 
Última edición por un moderador:
Malas noticias, en la simulación corre perfecto, de maravilla, pero cuando armo el circuito, pareciera que los datos nunca llegan al pic :(
Entonces será conveniente que realices una depuración del programa usando ICD.
De esa forma puedes ir siguiendo paso por paso lo que hace el programa físicamente.
 
y, pues, como hago eso, muchas gracias por el interes colega, pero cabe recordar, que en proteus corre excelente, no entiendo muy bien que es eso de depuracion usando ICD...me gustaria saber que puedo hacer para solucionar esto, pues es para el lunes a primera hora :(
 
Última edición:
Atrás
Arriba