Programación General > Visual Basic 6.0 e inferiores

 Recepcion Datos Binarios

(1/1)

cubillejo:
estoy haciendo un programa y quiero recibir los datos binarios que me envia un microcontrolador PIC al ordenador. quiero que me salga el valor binario de lo que me ha mandado vamos. puse un codigo que encontre:

Private Sub MSComm1_OnComm()
      Dim TmpStr As String
      Dim StrLen As Long, I As Long
      Dim FileData As Byte

      If MSComm1.CommEvent = comEvReceive Then
         While MSComm1.InBufferCount > 0
            TmpStr = MSComm1.Input
            StrLen = Len(TmpStr)
            For I = 1 To StrLen
               FileData = CByte(Asc(Mid(TmpStr, I, 1)))
               ByteCount = ByteCount + 1
               Put #1, ByteCount, FileData
            Next I
            TmpStr = " "
         Wend
      End If
   End Sub

pero cambie FileData por una caja de texto porque yo queria visualizarlos en esa caja.probablemente sera una burrada pero soy recien iniciado en el tema.acepto cualquier sugerencia.gracias.

Toph:

--- Citar ---quiero recibir los datos binarios que me envia un microcontrolador PIC al ordenador. quiero que me salga el valor binario de lo que me ha mandado vamos. puse un codigo que encontre:
--- Fin de la cita ---

 :unsure: cubillejo este codigo que has posteado si no me equivoco lo encontraste como un truco de vb titulado como "Enviar y recibir datos binarios con MSComm" pero realmente no se refiere a que los datos se puedan ver en binario sino en bytes, el puerto serial trabaja solamente en ASCII (envio y recepcion) analizando el programa este hace una conversion en esta sentencia:

--- Código: Text ---FileData = CByte(Asc(Mid(TmpStr, I, 1)))  pero con esto lo que se hace es que el valor ASCII que ha recibido lo pasa a su valor en decimal es decir si recibio "A" lo convierte a 65 que es su valor decimal, si recibe "B" lo convierte a 66 y asi ...
no a Binario  :( , te lo digo por que cuando yo necesitaba hacer lo mismo que tu comunicar un pic con la PC me tope con este codigo y lo probe y no me sirvio por lo que te comento, ahora no se si cuando dices ver los datos en Binario te refieres propiamente a 1 y 0 o verlos en  hexadecimal, en cualquiera de los dos casos puedo darte una mano solo es que me avises ya que por ahi tengo las rutinas.  :comp:

saludos :hola:

cubillejo:

--- Cita de: "Tania_D" ---
--- Citar ---quiero recibir los datos binarios que me envia un microcontrolador PIC al ordenador. quiero que me salga el valor binario de lo que me ha mandado vamos. puse un codigo que encontre:
--- Fin de la cita ---

 :unsure: cubillejo este codigo que has posteado si no me equivoco lo encontraste como un truco de vb titulado como "Enviar y recibir datos binarios con MSComm" pero realmente no se refiere a que los datos se puedan ver en binario sino en bytes, el puerto serial trabaja solamente en ASCII (envio y recepcion) analizando el programa este hace una conversion en esta sentencia:

--- Código: Text ---FileData = CByte(Asc(Mid(TmpStr, I, 1)))  pero con esto lo que se hace es que el valor ASCII que ha recibido lo pasa a su valor en decimal es decir si recibio "A" lo convierte a 65 que es su valor decimal, si recibe "B" lo convierte a 66 y asi ...
no a Binario  :( , te lo digo por que cuando yo necesitaba hacer lo mismo que tu comunicar un pic con la PC me tope con este codigo y lo probe y no me sirvio por lo que te comento, ahora no se si cuando dices ver los datos en Binario te refieres propiamente a 1 y 0 o verlos en  hexadecimal, en cualquiera de los dos casos puedo darte una mano solo es que me avises ya que por ahi tengo las rutinas.  :comp:

saludos :hola:
--- Fin de la cita ---
quiero recibir el valor en binario para asi luego una vez haya obtenido los valores pasarlos yo mismo a decimal. ojala me puedas ayudar.muchas gracias.

cubillejo:

--- Cita de: "cubillejo" ---
--- Cita de: "Tania_D" ---
--- Citar ---quiero recibir los datos binarios que me envia un microcontrolador PIC al ordenador. quiero que me salga el valor binario de lo que me ha mandado vamos. puse un codigo que encontre:
--- Fin de la cita ---

 :unsure: cubillejo este codigo que has posteado si no me equivoco lo encontraste como un truco de vb titulado como "Enviar y recibir datos binarios con MSComm" pero realmente no se refiere a que los datos se puedan ver en binario sino en bytes, el puerto serial trabaja solamente en ASCII (envio y recepcion) analizando el programa este hace una conversion en esta sentencia:

--- Código: Text ---FileData = CByte(Asc(Mid(TmpStr, I, 1)))  pero con esto lo que se hace es que el valor ASCII que ha recibido lo pasa a su valor en decimal es decir si recibio "A" lo convierte a 65 que es su valor decimal, si recibe "B" lo convierte a 66 y asi ...
no a Binario  :( , te lo digo por que cuando yo necesitaba hacer lo mismo que tu comunicar un pic con la PC me tope con este codigo y lo probe y no me sirvio por lo que te comento, ahora no se si cuando dices ver los datos en Binario te refieres propiamente a 1 y 0 o verlos en  hexadecimal, en cualquiera de los dos casos puedo darte una mano solo es que me avises ya que por ahi tengo las rutinas.  :comp:

saludos :hola:
--- Fin de la cita ---
quiero recibir el valor en binario para asi luego una vez haya obtenido los valores pasarlos yo mismo a decimal. ojala me puedas ayudar.muchas gracias.
--- Fin de la cita ---
quiero ver la ristra de 0 y 1 de cada caracter enviado.gracias.

Toph:

--- Citar --- quiero recibir el valor en binario para asi luego una vez haya obtenido los valores pasarlos yo mismo a decimal. ojala me puedas ayudar.muchas gracias.
--- Fin de la cita ---

 :hola: cubillejo como te dije antes el puerto serial solo trabaja en ascii los datos van a ser enviados y recibidos en ascii, el microcontrolador trabaja en hexadecimal al enviar un dato a la computadora por ejemplo 61(en hexadecimal claro) el puerto de la computadora al recibirlo va a recibir su equivalente en ascii "a" y si envias por ejemplo "33"h al puerto llegara su equivalente en ascii, es decir el numero "3",
el puerto solamente trabaja en ASCII no se pueden recibir datos en binario para poder verlos en binario hay que convertirlos de ascii a binario
dices que los quieres pasarlos a decimal seria una conversion de ascii a decimal es tal como estaba en el primer programa que posteaste


--- Citar --- quiero ver la ristra de 0 y 1 de cada caracter enviado.gracias.
--- Fin de la cita ---

a continuacion te posteo la rutina para convertir el dato recibido en ascii a decimal y luego a binario (1 y 0)

--- Código: Text --- Private Sub MSComm1_OnComm()Dim TmpStr As StringDim StrLen As Long, I As LongDim FileData As ByteDim endecimal, conver As IntegerDim enbinario As String If MSComm1.CommEvent = comEvReceive ThenWhile MSComm1.InBufferCount > 0TmpStr = MSComm1.InputStrLen = Len(TmpStr)For I = 1 To StrLenconver = Asc(Mid(TmpStr, I, 1))endecimal = conver & endecimal 'en la variable "endecimal" esta el valor asciiNext I                                       'convertido ya a decimal'ahora que ya esta el valor en decimal  lo pasamos a binarioDo While endecimal > 1  enbinario = endecimal Mod 2 & enbinario endecimal = Fix(endecimal / 2)Loopenbinario = endecimal & enbinario 'en la variable "enbinario" queda ya el dato convertido de decimal a binarioWendEnd IfEnd Sub  saludos  :hola:

Navegación

[0] Índice de Mensajes

Ir a la versión completa