none
Controlar tiempo tras enviar un SerialPort.Write (xxxxx) RRS feed

  • Pregunta

  • Para controlar unas balanzas en bus, envio mensajes a través de un puerto RS y quiero controlar si el dispositivo no contesta, para pedir el peso a la siguiente

    Ahora cuando llega un dato Controlado mediante Handles SerialPort.DataReceived, envio automaticamente una nueva petición SerialPort.Write (xxxxx) a la siguiente balanza. El problema surge si el dispositivo no contesta, ya que al no recibir ningun dato el programa queda parado

    Quiero controlar el tiempo desde la petición y si el dispositivo no contesta en el tiempo elegido, saltar una alarma y pasar a pedir el dato al siguiente equipo.

    Parece que se controla con SerialPort.ReadTimeout pero no acabo de manejarlo correctamente.

    Agradeceria unas lineas de codigo de como controlarlo

    martes, 5 de junio de 2012 10:54

Todas las respuestas

  • Hola,

    La propiedad "timeout" se utiliza para fijar el tiempo maximo de espera respuesta y liberar el threat si no se recibe la terminacion esperada, lo normal es utilizarlo en conjuncion con "ReadLine" y "NewLine"-

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            SerialPort1.ReadTimeout = 1000
            SerialPort1.NewLine = 13
        End Sub
        Private Sub SerialPort1_DataReceived(sender As Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Try
                Dim recibidos = SerialPort1.ReadLine()
            Catch ex As Exception
                ' la excepcion nos marcara el timeout si no recibimos 
                ' la trama terminada en caracter 13 en un tiempo max de 1s.
            End Try
        End Sub

    Espero te sea util,
    PepLluis,


    MVP - Visual Developer

    viernes, 6 de julio de 2012 0:03
    Moderador
  • Hola:

    Una curiosidad.

    No se si alguien de aquí a probado en hacer el cable RS232 en paralelo de la balanza y el PC. Con otro PC o otro puerto serie COM2 si lo posee, puedes capturar los datos en tramas de bytes, tanto en recibir como enviar. Guarda todo tipo de órdenes y respuestas. Con Visual Studio o cualquier programa envía con un botón las órdenes y sabrás sus respuestas. Así he logrado manejar un dispositivo que apenas conozco y puedeo hacer un programa para la balanza como te de la gana.

    Un cordial saludo.


    http://electronica-pic.blogspot.com

    sábado, 4 de agosto de 2012 14:27