Spanish LECTURA DE USB FTDI

llorenç Galofré

Member
Licensed User
Longtime 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
 
Top