SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: JDaniel en Jueves 28 de Agosto de 2003, 11:16
-
Hola: Estoy desarrollando una aplicación que debe recibir y enviar datos a un microcontrolador por el puerto serie.
He conseguido que se comuniquen, pero mi problema es que tengo que enviar datos single (4 bytes) y cuando realizo la comunicación como .InputMode = comInputModeBinary no tengo claro como hacer para enviarlos y recibirlos. Puede que el problema este en que no consigo pasar el dato de forma correcta.
Agradeceria cualquier sugerencia.Gracias
-
Podrías probar 'empaquetando' los datos con algo así:
Public Enum ByteOrderEnum
LittleEndianByteOrder = 0 'Primero el byte menos significativo
BigEndianByteOrder = 1 'Primero el byte más significativo
End Enum
Public Sub PackNro(ByVal Valor As Long, bytRes() As Byte, Byval ByteOrder as ByteOrderEnum)
Dim byt1(1 To 4) As Byte
Dim intMaxExp As Integer
ReDim bytRes(1 To 4)
Valor = Abs(Valor)
byt1(1) = 0
byt1(2) = 0
byt1(3) = 0
byt1(4) = 0
Do While intMaxExp <= 4
If Int(Valor / 256 ^ intMaxExp) > 255 Then
intMaxExp = intMaxExp + 1
ElseIf intMaxExp = 0 Then
byt1(1) = Valor
GoTo Salir_PackLong
Else
Exit Do
End If
Loop
Do Until Valor = 0
byt1(intMaxExp + 1) = Int(Valor / 256 ^ intMaxExp)
Valor = Valor - byt1(intMaxExp + 1) * 256 ^ intMaxExp
intMaxExp = intMaxExp - 1
Loop
Salir_PackLong:
If byteOrder = LittleEndianByteOrder Then
bytRes = byt1
Else
bytRes(1) = byt1(4)
bytRes(2) = byt1(3)
bytRes(3) = byt1(2)
bytRes(4) = byt1(1)
End If
End Sub
Ya contarás a ver que tal.
Suerte.
-
Gracias por tu ayuda Brroz, no lo he probado aun, ya te contare.....