Visual Basic.NET - Comunicacion RS232 Puerto COM VB2010

 
Vista:

Comunicacion RS232 Puerto COM VB2010

Publicado por David Peñaloza (2 intervenciones) el 20/10/2011 05:40:23
Buenas noches por aca...

Necesito ayuda urgente con un programa que estoy desarrollando en VB2010, no soy un experto y ya he probado miles de codigos encontrados en internet, solo he podido enviar datos desde mi aplicacion hasta un dispositivo receptor, en este caso estoy trabajando con la siguiente interfaz:


PICkit2 (Microchip)<---->MAX232<---->PC


El software de PICkit2 me permite enviar y recibir data RS232 en formatos ASCII y HEX, el programa que he logrado hacer, me permite enviar desde mi PC hasta el PICkit2, en esto no tengo problemas, pero cuando quiero enviar desde el PICkit2 hacia la PC, no logro que la PC me muestre nada de nada de nada de nada y mi duda esta en la lectura del programa en VB, he trabajado con casi todos los modos y comandos que he encontrado en la web, pero no logro hacer que mi PC lea nada.

el codigo que tengo hasta ahora es el siguiente, omitiendo los elementos que no son imporantes en la comunicacion:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Imports System
Imports System.ComponentModel
Imports System.Threading
Imports System.IO.Ports
Imports System.Text
Imports System.Threading.Thread
Imports System.Windows.Forms.Control
 
Public Class Form1
 
    Dim invocartextbox As String
 
    Dim myText As String
    Dim x As Integer
    Delegate Sub AddReceiveString(ByVal str As String)
    Public DelegadoRecString As AddReceiveString
 
 
    Private Sub Form1_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        For Each sp As String In My.Computer.Ports.SerialPortNames
            ListBox1.Items.Add(sp)
        Next
 
        SerialPort1.Close()
 
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 'Abrir Puerto
        If Not SerialPort1.IsOpen Then
            SerialPort1.Open()
        End If
        TextBox7.Text = "Abierto"
    End Sub
 
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 'Cerrar Puerto
        If SerialPort1.IsOpen Then
            SerialPort1.Close()
        End If
        TextBox7.Text = "Cerrado"
        x = 0
    End Sub
 
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click ' Enviar dato
 
        Dim myTextWrite As String
        myTextWrite = TextBox9.Text
        SerialPort1.Write(myTextWrite, 0, Len(myTextWrite))
 
    End Sub
 
    Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived ' Recibir Dato
 
        Dim resultado As String = String.Empty
        resultado = SerialPort1.ReadByte()
        RichTextBox1.Text = resultado.ToString
 
        RichTextBox4.Text = Invoke(DelegadoRecString, New Object() {resultado.ToString})
        TextBox12.Text = Invoke(DelegadoRecString, New Object() {resultado.ToString})
    End Sub
 
End Class


Con el evento DataReceived no logro hacer funcionar la recepcion de nada. No logro mostra nada en el Richtextbox o en el Textbox.

Podria alguien ayudarme en este problema...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Comunicacion RS232 Puerto COM VB2010

Publicado por Damian (824 intervenciones) el 21/10/2011 14:51:48
Y te da algún error en alguna parte?, porque no pones un punto de interrupción y así vas viendo si se van cargando las variables, o donde se pierden los datos, ya que no las carga.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comunicacion RS232 Puerto COM VB2010

Publicado por Edman (3 intervenciones) el 29/01/2013 07:28:39
1
2
3
4
5
6
7
8
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
 ' Recibir Dato
 Dim resultado As String = String.Empty
resultado = SerialPort1.ReadByte()
RichTextBox1.Text = resultado.ToString
RichTextBox4.Text = Invoke(DelegadoRecString, New Object() {resultado.ToString})
TextBox12.Text = Invoke(DelegadoRecString, New Object() {resultado.ToString})
End Sub


Si no presenta error es por la caracteristica de VB, pero es redundante declarar una variable de tipo String y luego hacer variable.ToString, no es necesario pues al ser declarada YA ES STRING.

Mi dilema es mas grave, me funciona todo bien, aunque no este codigo (no lo he probado), el problema es que me llega la cadena de datos, pero no se como presentarlos ya que llegan un monton de caracteres y entre ellos el peso que envia una báscula conectada a la pc mediante un rs232. Ya he tratado de descomponer la cadena de muchas formas pero me falla la presentación del dato en el control, si hago el seguimiento linea a linea si aprecio los datos en la variable.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar