Spanish LECTURA DE USB FTDI

Discussion in 'Spanish Forum' started by llorenç Galofré, Jun 5, 2015.

Similar threads

B4A Question COMUNICATION USB FTDI
B4A Tutorial AsyncStreams Tutorial
B4R Tutorial RGB Leds
B4A Code Snippet PyMod() - Python Modulo
B4A Question Astreams_NewData() in a service cause null receiver?
  1. llorenç Galofré

    llorenç Galofré Member Licensed User

    Hola
    Estoy programando para leer los datos de una placa SD84 (con chip FTDI), la cual tiene una serie de entradas analógicas. Aparantemente todo funciona bien (permiso USB, comunicación con la placa, tanto en un sentido como en otro, etc.), pero me encuentro con que los datos recibidos (en el evento AStreams_NewData del AsyncStreams), que debieran ser de dos bytes, se reciben tanto 1 byte como 2, sin sentido en su valor (por ejemplo se recibe 67 para una entrada analógica a cero); Quizas se trata del formato de los datos recibidos o algun otro problema. ). Alguien sabe como solucionar el problema. Aqui pongo el codigo de recepción:
    Sub AStreams_NewData(buffer() As Byte)
    Dim ValorTotal As Int, IntRetornats(2) As Short
    EsperantDades=False
    Try
    If buffer.Length=0 Then
    Codi1.OutPutNou("SD84Cont.AStreams_NewData: error: dimensió del buffer rebut igual a 0.")
    Else If buffer.Length=1 Then
    NumRes1=NumRes1+1
    IntRetornats(0)=buffer(0)
    If NumCanalEA=13 Then
    ListBuffer1.Add(IntRetornats(0))
    EAValor(NumCanalEA)=5*ValorTotal/1024
    End If
    Select IntRetornats(0)
    Case 0 ' no error
    Case 1
    Codi1.OutPutNou("SD84Cont.AStreams_NewData: error 1: advertencia -intent de canviar de
    escritura de mode analògic a mode registre, s'ignora-.")
    Case 2
    Codi1.OutPutNou("SD84Cont.AStreams_NewData: error 2: Rang de canals no vàlit.")
    Case 3
    Codi1.OutPutNou("SD84Cont.AStreams_NewData: error 3: mode desconegut.")
    Case Else
    End Select
    Else If buffer.Length=2 Then
    NumRes2=NumRes2+1
    IntRetornats(0)=buffer(0)
    IntRetornats(1)=buffer(1)
    ValorTotal=IntRetornats(0) + 256 * IntRetornats(1)
    EAValor(NumCanalEA)=5*ValorTotal/1024
    If NumCanalEA=13 Then
    ListBuffer1.Add(IntRetornats(0) & " + " & IntRetornats(1))
    End If
    Dim i As Int, Posicions() As Int
    For i=NumCanalEA+1 To 25
    If EALectura(i)<=DateTime.Now Then
    NumCanalEA=0
    Codi1.ServoOperacio("LLEGIR EA",i,0,Posicions)
    Return
    End If
    Next
    NumCanalEA=0
    Else
    Codi1.OutPutNou("SD84Cont.AStreams_NewData: Dimensió de retorn superior a 2: " & buffer.Length)
    End If
    Catch
    Codi1.outputnou("SD84Cont.AStreams_NewData: " & LastException.Message)
    End Try
    NumCanalEA=0
    End Sub
     
Loading...