Visual Basic.NET - Uso de Serial Port

 
Vista:
sin imagen de perfil

Uso de Serial Port

Publicado por raxe (5 intervenciones) el 06/07/2010 09:31:06
Incluyo en el proyecto la referencia "SerialPort"
Al dispositivo se envian caracteres ASCII entre 0 y 255 como una cadena de texto.
cada caracter es un valor.
Para saber si comunica hay que enviar 002 000 001 254 255 así que doy a la variable "EnvioTXT" el siguiente valor:
EnvioTXT = Chr(2) & Chr(0) & Chr(1) & Chr(254) & Chr(255)
¿ Como seria aquí en comando a enviar al Serial Port ?
Probe esto pero no se si es correcto:

Dim EnvioTXT as String
EnvioTXT = Chr(2) & Chr(0) & Chr(1) & Chr(254) & Chr(255)
SerialPort1.WriteLine(EnvioTXT)

A su vez Serial Port me deberia de devolver una cadena de caracteres ASCII
con la respuesta donde tengo que evaluar el valor de cada caracter.
¿ Como leo o recibo la respuesta usando Serial Port ?
Probe esto pero la respuesta que obtengo no es correcta.

Dim ReciboTXT as String
ReciboTXT = SerialPort1.ReadLine

Gracias,
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

RE:Uso de Serial Port

Publicado por Julián Cabria (21 intervenciones) el 07/07/2010 11:49:35
Hola raxe!

Ya tienes abierto el puerto y le has indicado que COM utilizas????

'Definimos variable de tipo SerialPort
Dim comSerie As IO.Ports.SerialPort

'Creamos el puerto
Me.comSerie = My.Computer.Ports.OpenSerialPort("COM1") Me.comSerie.ReadTimeout = 500 'Timeout de respuesta en milisegundos

'Abrimos el puerto
If not Me.comSerie.IsOpen Then
Me.comSerie.Open
End If

'Cerramos el puerto
If Me.comSerie.IsOpen Then
Me.comSerie.Close
End If

'Si el puerto está abierto enviamos datos
If Me.comSerie.IsOpen Then
Me.comSerie.WriteLine("información")
End If

If Me.comSerie.IsOpen Then
Msgbox(Me.comSerie.ReadLine())
End If
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
sin imagen de perfil

RE:Uso de Serial Port

Publicado por raxe (5 intervenciones) el 07/07/2010 14:43:03
Hola Julian. Antes que nada gracias por responder.

He copiado tu ejemplo tal cual me lo eviaste. Si tenia creado, abierto y asignado el COM correcto.
En todas le pruebas que hago siempre me devulve el mismo resultado.
Yo envio:

Dim SendCommand As Object 'Esto tambien probe usando String
SendCommand = Chr(2) & Chr(0) & Chr(1) & Chr(254) & Chr(255)
Me.SerialPort1.WriteLine(SendCommand)

Leo así:
Dim RecvCommand As String
RecvCommand = Me.SerialPort1.ReadLine()

Lo que envio tiene que ser tener un check sum de 256 o un multiplo de 256.
2+0+1+254+255 = 510 - Correcto

Lo que me devulve es el eco mas la respuesta, deberia de ser:
2+0+1+254+255+1+0+2+0+253 = 768 - Correcto

Los valores son caracteres y el me devuelve caracteres que yo tengo que convertir uno a uno en valores. Sin embargo me devuelve siempre lo mismo que no es correcto que es. 2+0+1+63+63 = 129 - No es correcto y falta el eco.

Con la referencia MSComm Control de visual basic 6 usando input y output funciona, pero a estas alturas,,, desearia no tener que depender de ella.
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

RE:Uso de Serial Port

Publicado por Julián Cabria (21 intervenciones) el 08/07/2010 11:33:13
Si recibes información no es problema del puerto, tiene pinta de ser un problema de los valores que envias.

No entiendo por qué envias Chr(2) & Chr(0) & Chr(1) & Chr(254) & Chr(255) cuando te quieres referir a 510. 2 no és Chr(2), 254 no és Chr(254), la interpretación de chr(254) és þ.

Si realmente lo que le tienes que enviar és 510 pues enviale un string con 510.

A ver si me puedes aclarar esto mejor.
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

RE:Uso de Serial Port

Publicado por Julián Cabria (21 intervenciones) el 12/07/2010 14:09:21
Hola Raxe,

Solucionastes el problema???
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
sin imagen de perfil

RE:Uso de Serial Port

Publicado por raxe (5 intervenciones) el 13/07/2010 08:44:56
Hola Julian, he tardado un poco en volver por aqui. El check sum tiene que ser un multiplo de 256, en el ejemplo que te envie, me equivoque a escribir el resultado de la suma, era 512 no 510.
Es dispositivo usa el protocolo CCTALK, a este el envias una cadena de caracteres ascii entre 0 y 255, cada caracter tiene un valor en decimal, y este te devuelve como respuesta una cadena de caracteres que es el comando que enviste (eco) mas la respuesta y si sumas el valor decimal de todos los caracteres tb tiene que ser un multiplo de 256. Es un check sum para saber que has recibido todo.
Luego hay que analizar caracter a caracter su valor para sacar la respuesta. El aparato en cuestion es un monedero o capturador de monedas.
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

RE:Uso de Serial Port

Publicado por Hector Hernandez (1 intervención) el 01/08/2011 21:59:59
Hola...tengo un proyecto a nivel estudiantil y mi problema es como utilizar el puerto serie para encender o apagar un led...en si mi trabajo es control de una vivienda, pero necesito ayuda con el envio de bis, datos o pulsos. Estoy trabajando en visual estudio 2010 y con pic.

AYUDAAA!!!
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