Foros del Web » Programación para mayores de 30 ;) » .NET »

Datos erroneos al leer por el puerto serie

Estas en el tema de Datos erroneos al leer por el puerto serie en el foro de .NET en Foros del Web. Hola: Tengo este código que utilizo para leer datos procedentes de un scanner lector de codigos de barras. El problema es que al leer los ...
  #1 (permalink)  
Antiguo 06/03/2012, 07:07
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
Datos erroneos al leer por el puerto serie

Hola:

Tengo este código que utilizo para leer datos procedentes de un scanner lector de codigos de barras.

El problema es que al leer los datos los recibo con simbolos de interrogación:

5094?254??524

alguna sugerencia?

Public Class Form1
Delegate Sub delegado(ByVal data As String)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each s As String In My.Computer.Ports.SerialPortNames
lista.Items.Add(s)
Next
End Sub
Private Sub lista_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lista.SelectedIndexChanged
Try
'sp3.Close()
sp.Close()
consola.AppendText("Puerto " & sp.PortName & " Cerrado" & vbCrLf)
sp.PortName = lista.SelectedItem
consola.AppendText("Abriendo Puerto : " & sp.PortName & vbCrLf)
sp.Open()
'' sp3.Open()
consola.AppendText("Puerto : " & sp.PortName & " Abierto" & vbCrLf)
Catch ex As Exception
MessageBox.Show(ex.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub



Sub mostar(ByVal d As String)
consola.AppendText(d)
End Sub


Private Sub sp_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles sp.DataReceived
Dim s As String = sp.ReadExisting
Dim escribeport3 As New delegado(AddressOf Me.mostar)
Me.Invoke(escribeport3, s)
End Sub
End Class
  #2 (permalink)  
Antiguo 06/03/2012, 10:18
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Datos erroneos al leer por el puerto serie

Puede ser problema de codificación, que el scanner utilice por ejemplo ASCII y por defecto el puerto serie esté esperando por ejemplo ANSI. ¿Qué código debería llegar? ¿Las "?" corresponderían al mismo dígito siempre?

¿Has probado a poner un punto de interrupción en la línea del sp.ReadExisting para ver si ReadExisting manda bien la información y el problema es la conversión que hace a string?

De momento es lo que se me ocurre, pero me parece raro que sea por ese camino el problema, pero por descartar posibles causas.



Un saludo.
Daimroc.
  #3 (permalink)  
Antiguo 06/03/2012, 11:15
 
Fecha de Ingreso: febrero-2010
Mensajes: 105
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Datos erroneos al leer por el puerto serie

Si, es bastante extraño, las "?" son siempre el mismo caracter, he probado esta intruccion pero tampoco funciona.
sp.Encoding = Encoding.GetEncoding(1255)
  #4 (permalink)  
Antiguo 06/03/2012, 11:51
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Datos erroneos al leer por el puerto serie

Yo otra opción que miraría sería si se puede configurar el lector para que envíe otro formato del que está utilizando actualmente.

Etiquetas: erroneos, puerto, serie, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:47.