TODOPIC

Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: jwg en 06 de Marzo de 2004, 09:26:00

Título: El binario y el VB
Publicado por: jwg en 06 de Marzo de 2004, 09:26:00
Hola, estoy comunicando un pic con uart a una pc usando Vb6, ya que no manejo este ultimo, tuve que convertir en el micro el dato a transmitir a ascii, lo cual es una solucion mas que a medias, alguien me podria indicar como manejar datos de 16 bit , obviamente en binario en el vb6.
Ej: quiero transmitir el resultado de una medicion de 10bits , recibir los dos byte y poderlos manejar en vb.
Gracias desde ya
Título: RE: El binario y el VB
Publicado por: adolfoadc en 06 de Marzo de 2004, 18:48:00
Bien te digo como lo hago yo que es darle el trabajo al PC que para eso corre mas.
El PIC envia el dato directamente en hexadecimal
Recibo en el puerto un caracter ascii de ese valor hexadecimal que es del tipo string, lo que hago es convertir dicho valor en un valor decimal (recibo un string de 2 caracteres para la resolucion de 10bits que comentas)
//////////////////////////////////////////////////////////////////////////
Public Function pasarAsciiDato(cad As String) As Integer
Dim rdo As Boolean
Dim carAscii As String
Dim carHex As String
Dim carDec As Integer

"a partir de un caracter ascii recibido en el puerto,
"obtenemos el dato asociado
  "If cad <> vbNullString Then
    carAscii = Asc(cad)
    carHex = Hex(carAscii)
    carDec = pasarHexADecimal(carHex)
 "End If
 pasarAsciiDato = carDec
End Function
//////////////////////////////////////////////////////////////////////////////////
Esta funcion nos devuelve el valor decimal de los 10bits que enviaste por el puerto.
aqui esta definida la funcion pasarHexADecimal()
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Public Function pasarHexADecimal(InputData As String) As Double
""
""  Converts Hexadecimal to Decimal
""
Dim i As Integer
Dim DecOut As Double
Dim Lenhex As Integer
Dim HexStep As Double


"" Zeroise the output
DecOut = 0

""  The length of the input
""
InputData = UCase(InputData)
Lenhex = Len(InputData)

""
""  Check to make sure its a valid Hex Number
""
For i = 1 To Lenhex

If IsNumeric(Mid(InputData, i, 1)) Then
  ""
  GoTo NumOk
ElseIf Mid(InputData, i, 1) = "A" Then
  GoTo NumOk
ElseIf Mid(InputData, i, 1) = "B" Then
  GoTo NumOk
ElseIf Mid(InputData, i, 1) = "C" Then
  GoTo NumOk
ElseIf Mid(InputData, i, 1) = "D" Then
  GoTo NumOk
ElseIf Mid(InputData, i, 1) = "E" Then
  GoTo NumOk
ElseIf Mid(InputData, i, 1) = "F" Then
  GoTo NumOk
Else
  MsgBox "El número no es hexadecimal", vbCritical
  Exit Function
End If

NumOk:
Next i

HexStep = 0

""
""
""  Convert the Number to Decimal
""
For i = Lenhex To 1 Step -1

HexStep = HexStep * 16
If HexStep = 0 Then
  HexStep = 1
End If

 If Mid(InputData, i, 1) = "0" Then
   DecOut = DecOut + (0 * HexStep)
 ElseIf Mid(InputData, i, 1) = "1" Then
   DecOut = DecOut + (1 * HexStep)
 ElseIf Mid(InputData, i, 1) = "2" Then
   DecOut = DecOut + (2 * HexStep)
 ElseIf Mid(InputData, i, 1) = "3" Then
   DecOut = DecOut + (3 * HexStep)
 ElseIf Mid(InputData, i, 1) = "4" Then
   DecOut = DecOut + (4 * HexStep)
 ElseIf Mid(InputData, i, 1) = "5" Then
   DecOut = DecOut + (5 * HexStep)
 ElseIf Mid(InputData, i, 1) = "6" Then
   DecOut = DecOut + (6 * HexStep)
 ElseIf Mid(InputData, i, 1) = "7" Then
   DecOut = DecOut + (7 * HexStep)
 ElseIf Mid(InputData, i, 1) = "8" Then
   DecOut = DecOut + (8 * HexStep)
 ElseIf Mid(InputData, i, 1) = "9" Then
   DecOut = DecOut + (9 * HexStep)
 ElseIf Mid(InputData, i, 1) = "A" Then
   DecOut = DecOut + (10 * HexStep)
 ElseIf Mid(InputData, i, 1) = "B" Then
   DecOut = DecOut + (11 * HexStep)
 ElseIf Mid(InputData, i, 1) = "C" Then
   DecOut = DecOut + (12 * HexStep)
 ElseIf Mid(InputData, i, 1) = "D" Then
   DecOut = DecOut + (13 * HexStep)
 ElseIf Mid(InputData, i, 1) = "E" Then
   DecOut = DecOut + (14 * HexStep)
 ElseIf Mid(InputData, i, 1) = "F" Then
   DecOut = DecOut + (15 * HexStep)
 Else
   MsgBox "ERROR pasando a decimal", vbCritical
 End If

Next i



pasarHexADecimal = DecOut

eds:
End Function
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Espero que te sirva
Título: RE: El binario y el VB
Publicado por: Colores en 18 de Abril de 2004, 21:53:00
Muy interesante. Es una de las dudas que tenía, porque yo hice algo parecido y sólo me salían caracteres basura. La duda que tengo es cómo hago para que el micro mande el tipo de datos que necesito a VB. Estoy usando Pic Basic y tengo entendido que los datos se pueden pasar de varias maneras (decimal, binario...), el tema es: de que manera lo tengo que hacer en el pic para que funcione con el ejemplo de adolfoadc?
Yo pensaba que obtenía basura porque el micro enviaba ascii y mscomm acepta ansi.