Comunicacion con el puerto serial utilizando VB 2010
-
jueves, 29 de abril de 2010 14:33
Hola, estoy tratando de hacer un programa que reciba la data de una maquina de laboratorio, a traves del puerto serial.
ya logre connectar y leer la data que recibo de la maquina pero los caracteres que me muestra son puro ?????XXXX y caracteres raros.
he buscado información y he tratado varias cosas Utilizando SerialPort1.ReadExisting y SerialPort.ReadByte hasta con ReadChar pero siempre obtengo el mismo resulatdo
aqui esta el codigo les agradesco mucho en lo que me puedan ayudar
Public Class Form1
Dim myText As String
Dim x
Delegate Sub AddReceiveString ( ByVal str As String )
Public DelegadoRecString As AddReceiveString
Public Sub New ()
InitializeComponent()
DelegadoRecString = New AddReceiveString ( AddressOf InvocarTextBox)
End Sub
Private Sub Button1_Click( ByVal sender As System. Object , ByVal e As System. EventArgs ) Handles Button1.Click, MyBase .Load
If Not SerialPort1.IsOpen Then
SerialPort1.Open()
End If
TextBox1.Text = "Opened"
End Sub
Private Sub Button2_Click( ByVal sender As System. Object , ByVal e As System. EventArgs ) Handles Button2.Click
If SerialPort1.IsOpen Then
SerialPort1.Close()
End If
TextBox1.Text = "Closed"
TextBox2.Text = ""
myText = ""
x = 0
End Sub
Private Sub SerialPort1_DataReceived( ByVal sender As System. Object , ByVal e As System.IO.Ports. SerialDataReceivedEventArgs ) Handles SerialPort1.DataReceived
Dim bytesrecibidos(SerialPort1.BytesToRead) As Byte
SerialPort1.Read(bytesrecibidos, 0, SerialPort1.BytesToRead)
Dim resultado As Char = Convert .ToChar(bytesrecibidos(0))
TextBox2.Invoke(DelegadoRecString, New Object () {resultado.ToString})
End Sub
Public Sub InvocarTextBox( ByVal str As String )
Try
TextBox2.Text &= str.ToString() & vbCrLf
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
- Cambiado Enrique M. MontejoMVP sábado, 30 de junio de 2012 17:29 (De:Lenguaje VB.NET)
Todas las respuestas
-
jueves, 29 de abril de 2010 15:09
Hola, yo no he trabajado con puertos series, pero aqui tienesun evento de www.Secondnug.com
estuvo muy bien, y tiene el video y el material demo, puede que te sea de ayuda.
Colabora con el foro: Si este mensaje te es de utilidad marcalo como respuesta.
Quique Martínez
Blog: http://www.qmartinez.es
Grupo .Net: http://www.secondnug.com -
jueves, 29 de abril de 2010 18:13
Gracias voy a verlo
Otra cosa que hice para probar fue agragarle el encoding y todavia nada
anexo el nuevo codigo
Public Class Form1
Dim myText As String
Dim x
Delegate Sub AddReceiveString(ByVal str As String)
Public DelegadoRecString As AddReceiveString
Public Sub New()
InitializeComponent()
DelegadoRecString = New AddReceiveString(AddressOf InvocarTextBox)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, MyBase.Load
If Not SerialPort1.IsOpen Then
SerialPort1.Open()
End If
TextBox1.Text = "Opened"
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If SerialPort1.IsOpen Then
SerialPort1.Close()
End If
TextBox1.Text = "Closed"
TextBox2.Text = ""
myText = ""
x = 0
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
SerialPort1.Encoding = System.Text.Encoding.GetEncoding(28591)
Dim resultado = SerialPort1.ReadExisting
TextBox2.Invoke(DelegadoRecString, New Object() {resultado.ToString})
End Sub
Public Sub InvocarTextBox(ByVal str As String)
Try
TextBox2.Text &= str.ToString()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim myTextWrite As String
myTextWrite = TextBox3.Text
'SerialPort1.Write(myTextWrite, 0, Len(myTextWrite))
End Sub
End Class
y este es el resultado
?硡Y
-åÁ°°XX,¬VK
åÁ°ŽY\V
+Íű°X\,,?V
Á³°X-ÖV«
ÑͶŽY-,+kÝÁ³²
ÍŰ²++ÑᎱ\X+Áݵ±Z®V+ÁÑŽµXX,,
硡XX,,
Å۵XXkKÕÕ°²+ëÁÁ±¶Y?
ÁÁ°°XX,,
ÁÁ°°XX,,
硡XX,,
ÁÁ°°XX,,
ÁÁ°°,,Ö
ëÁÅŽ°Y\,Öë+ÁÙ±ŽVÖ
ÉÁ¹²KÕÁ²µ-VkKÑÕ²²[Y,+
áÅ·²¬+kåŲެ¬VK
åŰžXX -
sábado, 05 de marzo de 2011 19:41mmm... por la forma de los caracteres parece q tenés velocidades de comunicacion diferentes entre la pc y el aparato al q lo conectas
-
miércoles, 16 de noviembre de 2011 20:06
hola me podria ayudar stoy trabajando con visual basic 2010 y tngo un error con el puerto serial me podrias ayudar el problema q tngo es lo siguiente
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles
SerialPort1.DataReceived
Dim recibido, recibidotodo As
String
recibido = SerialPort1.ReadChar
recibidotodo = recibidotodo + recibido
TextBox3.Text = recibidotodo :aqui me sale el error me dice lo sigueinte
End Sub
Operación no válida a través de subprocesos: Se tuvo acceso al control 'TextBox3' desde un subproceso distinto a aquel en que lo creó.
-
jueves, 24 de mayo de 2012 22:32
saludos, tienes un problema en el protocolo de comunicación del equipo con la pc. pueden ser velocidades diferentes o bits o paridad etc.

