elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Enviar caracter nulo (0 hexadecimal en ASCII)a traves de MSComm
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Enviar caracter nulo (0 hexadecimal en ASCII)a traves de MSComm  (Leído 9,430 veces)
FaiF (A¥åHøRå)


Desconectado Desconectado

Mensajes: 343



Ver Perfil WWW
Enviar caracter nulo (0 hexadecimal en ASCII)a traves de MSComm
« en: 7 Abril 2006, 21:38 pm »

Estoy creando un programa para Windows Mobile con eVB 3.0 que se conecta mediante el puerto RS232 con un dispositivo. El caso es que la información que transmito la debe convertir a hexadecimal ya que es lo único que entiende el dispositivo. Yo la cadena que tengo que transmitir de la PDA al dispositivo es:(la H significa que es un valor hexadecimal)

Citar
55H 2H 1H 2H 3H 4H 5H 6H 7H 8H 9H 0H 8H 7H 6H 5H y el checksum XoR de toda la cadena.

Lo que hago es pasarlo a Ascii y luego enviarlo. La función que cree para hacerlo es la siguiente:

Código:
Function pascii(ByVal fdez As String) As String
pascii = Chr(CInt("&H" & fdez))
End Function

Hasta aquí todo bien. lo que hago es poner:
Código:
Comm1.Output = pascii(55) & pascii(2) & .....

El problema viene cuando tiene que pasar el 0 ya que tiene que crear un valor nulo. He probado con vbnullstring pero me envia un 0decimal. Mi pregunta es si alguien sabe que hago para pasar ese 0 a ascii.

Gracias de antemano
salu2


« Última modificación: 8 Abril 2006, 01:53 am por A¥åHøRå » En línea

Cicklow


Desconectado Desconectado

Mensajes: 604


-=Cicklow SOFT®=-


Ver Perfil WWW
Re: 0 en hexadecimal
« Respuesta #1 en: 7 Abril 2006, 22:29 pm »

mira, lo que te entiendo es poko pero weno, el VB tiene la funcion para convertir a HEX, pero si keres mas aka tenes:

http://www.configurarequipos.com/truco396.html

esta funcion del VB de llama HEX(), y vos le pasas un numero o varios


En línea

www.cicklow.com . Solo Soy Un Ciego que Ve El Sonido Del Silencio
FaiF (A¥åHøRå)


Desconectado Desconectado

Mensajes: 343



Ver Perfil WWW
Re: 0 en hexadecimal
« Respuesta #2 en: 7 Abril 2006, 22:58 pm »

creo q no me explique.
Veamos, cada cifra o letra ascii ocupa un byte. es decir q si escribimos la palabra "hola" en un txt este ocuparía 4bytes.
El número 85 ocuparía 2bytes ya que tiene 2 cifras. Si lo pasamos a hexadecimal sería un 55H. Con la función Hex lo que hace es devolverme dos cincos ascii que ocupan 2bytes.

Lo que realmente necesito es convertir un número hexadecimal en un caracter ascii que solo ocupa un byte. Por ejemplo:
si envio un "41"H, estoy enviando 2bytes pero si envio una "A" en ascii solo estoy enviando un byte.
Con la función que anteriormente puse consigo pasar casi cualquier número hexadecimal a ascii. El problema viene con el número 0H que en ascii no tiene valor nulo, entonces lo que quiero saber es como puedo enviar ese 0 hexadecimal.

Lo siento pero sq nunca se me dio bien explicar estas cosas... :-\

salu2  :D
En línea

Ironhorse

Desconectado Desconectado

Mensajes: 150



Ver Perfil
Re: 0 hexadecimal en ASCII
« Respuesta #3 en: 8 Abril 2006, 00:43 am »

No se si entiendo el problema, el numero 0 en ASCII es nulo, o sea si haces:

Código:
Dim a as string
  a=chr(0)

la variable 'a' no está vacia, tiene un caracter (nulo), si te fijas con LEN(a)=1, osea que el valor 0H seria un caracter nulo.


En línea

Pégense una vuelta por Cracton :)
FaiF (A¥åHøRå)


Desconectado Desconectado

Mensajes: 343



Ver Perfil WWW
Re: 0 hexadecimal en ASCII
« Respuesta #4 en: 8 Abril 2006, 00:52 am »

voy a probarlo y ahora te cuento  :D
En línea

FaiF (A¥åHøRå)


Desconectado Desconectado

Mensajes: 343



Ver Perfil WWW
Re: 0 hexadecimal en ASCII
« Respuesta #5 en: 8 Abril 2006, 01:03 am »

nada, sigo en las mismas   :-(
haciendo eso lo ultimo que manda es 9H, cuando llega al 0H se para.

es como si VB no lo convirtiera xq no cree q no existe el 0H.

me estoy volviendo loco a buscar x todas partes.
si alguien sabe como hacerlo q lo postee xfavor!!  :D

salu2
En línea

Ironhorse

Desconectado Desconectado

Mensajes: 150



Ver Perfil
Re: 0 hexadecimal en ASCII
« Respuesta #6 en: 8 Abril 2006, 01:16 am »

A ver, si tenes que convertir una letra (o su valor numerico ASCII) al formato xH:

Código:
Private function Conv(byval Letra as string) as string
  Conv=asc(letra) & "H"
End Function

si queres que esa funcion te devuelva 0H  llamala asi:

Código:
Dim a as string, Res as string
  a=chr(0)
  res= conv(a) 'res vale 0H

si no es lo que necesitas preguntá

saludos
En línea

Pégense una vuelta por Cracton :)
Ironhorse

Desconectado Desconectado

Mensajes: 150



Ver Perfil
Re: 0 hexadecimal en ASCII
« Respuesta #7 en: 8 Abril 2006, 01:30 am »

Citar
El problema viene cuando tiene que pasar el 0 ya que tiene que crear un valor nulo. He probado con vbnullstring pero me envia un 0decimal. Mi pregunta es si alguien sabe que hago para pasar ese 0 a ascii.

Me parece que ahora voy entendiendo, vos queres mandar por el puerto el valor nulo y no la cadena 0H, no?, si es así cito la ayuda del control:


Citar
La propiedad Output puede transmitir datos binarios o de texto. Para enviar texto mediante la propiedad Output, debe especificar una variable de tipo Variant que contenga una cadena. Para enviar datos binarios, debe pasar a la propiedad Output un Variant que contenga una matriz de bytes.

Generalmente, si envía a una aplicación una cadena ANSI, puede enviarla como datos de texto. Si tiene datos que contengan caracteres de control, nulos, etc., debe pasarlos como datos binarios.

Queda claro, no?
En línea

Pégense una vuelta por Cracton :)
FaiF (A¥åHøRå)


Desconectado Desconectado

Mensajes: 343



Ver Perfil WWW
Re: 0 hexadecimal en ASCII
« Respuesta #8 en: 8 Abril 2006, 01:33 am »

Código:
  Conv=asc("A") 
esto devuelve un 65 decimal que ocupa 2bytes.

Pues bien. yo lo que quiero hacer es justo la operación inversa. Supuestamente, como tu bien dices, valdría con:

Código:
Chr("65")
que devolvería una "A" que solo ocupa un byte

Hasta aquí estamos de acuerdo y todo está correcto.

El problema viene ahora, cuando quiero pasar el número cero (en decimal o hexadecimal, me da lo mismo xq es lo mismo xD). Supuestamente sería poner como antes dijiste:
Código:
Chr("0")
El caso es que esto tendría que devolver un caracter nulo que ocupa un byte. Haciendo el Len(Chr("0")) parece que todo esta bien pero no es así ya que cuando paso a juntar todo en una misma variable, esta se queda solo con el valor de juntar todos los caracteres hasta el 0 (sin incluirle). Probadlo en VB para entenderme mejor:
Código:
variable=pascii(55) & pascii(2) & ..... & chr("0") & pascii ("8") & ...

Lo que no se es por  que pasa esto, lo de que se corte ahí. Es como si VB dijera que no hay equivalente para el 0 en ascii.

lo que si que tengo seguro es que se puede hacer porque este mismo proyecto lo hizo otra empresa y funcionó con ceros y con todo xD. lo malo sq no tengo los fuentes para ver como lo solucionaron  :rolleyes:

gracias por vuestra atención ;)
salu2



En línea

FaiF (A¥åHøRå)


Desconectado Desconectado

Mensajes: 343



Ver Perfil WWW
Re: 0 hexadecimal en ASCII
« Respuesta #9 en: 8 Abril 2006, 01:33 am »

aaa. ok. gracias ironhorse.
entonces lo que tengo que hacer es pasar ese 0 o valor nulo a binario no? si es asi existe alguna función ya iimplementada en VB para hacerlo?

salu2

encontre lo siguiente:
Código:
Function Bin(n As Double)
 Dim s As String, i As Integer
 For i = 1 To Len(n)
  s = (n Mod 2) & s
  t = n / 2
  n = Int(t)
 Next
  Bin = s
End Function
devuelve bien el numero pero con ceros delante.


creo q no te he acabado de entender.
segun eso debo pasar todo en binario??? sq el problema de todo sq el dispositivo al que mando la informacion solo puede recibir caracteres ascii que luego transforma a hexadecimal
« Última modificación: 8 Abril 2006, 01:49 am por A¥åHøRå » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Problema] AJAX y caracter unicode nulo
Desarrollo Web
Sancho.Mazorka 0 2,805 Último mensaje 9 Febrero 2011, 19:06 pm
por Sancho.Mazorka
Comparar cadena con un caracter ascii
Programación C/C++
d00ze13 2 11,758 Último mensaje 9 Marzo 2011, 10:30 am
por Akai
[Problema] conversion hexadecimal --> ascii en clave WEP
Wireless en Linux
chywaka 4 7,517 Último mensaje 29 Abril 2012, 23:19 pm
por muerdi
Conversion de Ascii a Hexadecimal
Programación C/C++
xoftfox 1 6,771 Último mensaje 8 Mayo 2012, 22:05 pm
por avesudra
cómo comparar una variable caracter con un código ascii en C « 1 2 »
Programación C/C++
etcheverrypablol 12 25,209 Último mensaje 5 Febrero 2016, 11:57 am
por etcheverrypablol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines