Autor Tema: Por favor, necesito ayuda, estoy perdido  (Leído 8333 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado alavai

  • PIC10
  • *
  • Mensajes: 15
Por favor, necesito ayuda, estoy perdido
« en: 16 de Octubre de 2006, 07:51:47 »
Hola a todos y enhorabuena por este sitio tan poderoso.

Agradecería enormemente que me echaran una mano, pues estoy completamente perdido. El caso es que una vez consiga recibir la información que necesito de este dispositivo, podré empezar a hacer cosas...

El caso es que estoy intentando conectarme a un dispositivo de mi coche a través del puerto serie.
Me conecto, sí, pero estoy completamente perdido y no sé por donde empezar.

Aquí las instrucciones que me han enviado los fabricantes del aparato.

Citar
> > Zeitronix Zt-2 Wideband Air Fuel Ration Meter Output Data Format
> >
> > RS 232
> >
> > Baud rate            9600
> >
> > Data                8 bit
> >
> > Parity              None
> >
> > Stop                1 bit
> >
> > Flow Control None
> >


> > Header block
> > #00                 null heading
> >
> > #01                 start heading
> >
> > #02                 start text
> >
> > Data block:              data format
> >
> > AFR                            HEX             8 bit
> >
> > EGT    LSB                HEX            16 bit
> >
> > EGT    MSB               HEX            16 bit
> >
> > RPM   LSB                HEX            16 bit
> >
> > RPM   MSB               HEX            16 bit
> >
> > Boost  LSB                HEX            16 bit
> >
> > Boost  MSB               HEX signed
> >
> > TPS                            HEX            8 bit
> >
> > User1                          HEX            8 bit
> >
> > Config Register          HEX             8 bit
> >
> > Possible check sum of all of the above. Not implemented at this point.
> >
> > Data details:
> >
> > All 8 bit and 16 bit numbers need to be converted to decimal
equivalents.

Os doy las gracias por anticipado.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #1 en: 16 de Octubre de 2006, 09:42:38 »
Hola alavai:

Creo que deberías aportar un poco más de información para que se te pueda ayudar. Cuando dices que te conectas, ¿qué quieres decir¿ ¿qué te estás conectando con un PIC o directamente con un ordenador?

Imagino que ya lo habrás visto, pero por si acaso te dejo el enlace a un software para PDA específico para el equipo que estás usando software Zt-2

Saludos,

Desconectado alavai

  • PIC10
  • *
  • Mensajes: 15
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #2 en: 16 de Octubre de 2006, 10:27:25 »
Hola alavai:

Creo que deberías aportar un poco más de información para que se te pueda ayudar. Cuando dices que te conectas, ¿qué quieres decir¿ ¿qué te estás conectando con un PIC o directamente con un ordenador?

Imagino que ya lo habrás visto, pero por si acaso te dejo el enlace a un software para PDA específico para el equipo que estás usando software Zt-2

Saludos,

hola y gracias por responder.
me conecto desde un pc con visual basic a una cajita que contiene electrónica que es la que tiene un puerto serie al que me tengo que conectar para que me envie la informacion en tiempo real de lo que está pasando.
sí ya he visto el software, pero necesito recibir esta información para preparar una plataforma de cara a compartir informaci´no con otros usuarios en el mismo formato, etc...

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #3 en: 16 de Octubre de 2006, 11:51:33 »
Entonces ¿lo que necesitas es que se te ayude a crear un programa en Visual Basic para poder leer los datos que se reciben por el puerto serie?

¿Has probado con el programa HyperTerminal de Windows a ver si se recibe efectivametne algo?

Desconectado alavai

  • PIC10
  • *
  • Mensajes: 15
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #4 en: 16 de Octubre de 2006, 13:22:05 »
Entonces ¿lo que necesitas es que se te ayude a crear un programa en Visual Basic para poder leer los datos que se reciben por el puerto serie?

¿Has probado con el programa HyperTerminal de Windows a ver si se recibe efectivametne algo?

efectivamente.

me llegan datos, pero el tema es que no sé qué hacer con ellos, ni como agruparlos ni como leerlos...
es un pequeño empujón lo que necesito para poder interpretar lo que viene y agruparlo en función de lo que me dice esta gente con la info que me han enviado. Una vez recupere cada valor, ya sigo  :)

Muchísimas gracias!!!

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #5 en: 16 de Octubre de 2006, 13:33:23 »
¿Podrías copiar aquí un ejemplo de los datos que recibes? De este modo quizás podamos descifrar cómo se relacionan con la información que pusiste en tu primer post.

Desconectado alavai

  • PIC10
  • *
  • Mensajes: 15
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #6 en: 16 de Octubre de 2006, 14:44:49 »
¿Podrías copiar aquí un ejemplo de los datos que recibes? De este modo quizás podamos descifrar cómo se relacionan con la información que pusiste en tu primer post.

ok. ahora mismo lo pongo.
voy a sacar la info de distintos emuladores.

uno de mis grandes problemas es que no sé qué valores poner en:
Comm1.RThreshold
Comm1.InBufferSize
Comm1.InputLen

voy a poner en un momento los datos

Desconectado alavai

  • PIC10
  • *
  • Mensajes: 15
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #7 en: 16 de Octubre de 2006, 15:04:35 »
volcado de una captura en ascii:




volcado de una captura en hex:



Aquí ya se puede ver la cadena 00 01 02 que precede cada churro de datos.
« Última modificación: 16 de Octubre de 2006, 15:06:15 por alavai »

Desconectado alavai

  • PIC10
  • *
  • Mensajes: 15
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #8 en: 16 de Octubre de 2006, 15:09:05 »
Más info del fabricante.
Acabo de darme cuenta de que había puesto solamente parte de la info que me han enviado.  :?

Citar
> > Data details:
> >
> > All 8 bit and 16 bit numbers need to be converted to decimal
equivalents.
> >
> >
> > AFR (Air Fuel Ratio)
> >
> > AFR = Lambda x 14.7.
> >
> > AFR Range from 9.5 to 21.1. AFR data needs to be divided by 10
> >
> > RPM
> > 16 bit number is a time between two events (crank angle sensor).
> >
> > RPM=60/(Cm*MSB,LSB*26.0416*10^-6)


Importante!
De estos valores, solamente deben llegar 2, que son el AFR y las RPMS. los demás sensores no están conectados.

Desconectado Toph

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 84
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #9 en: 16 de Octubre de 2006, 18:34:09 »
Hola alavai  :) con respecto a tus preguntas
uno de mis grandes problemas es que no sé qué valores poner en:
Comm1.RThreshold
Comm1.InBufferSize
Comm1.InputLen
la propiedad RThreshold solo es necesaria si utilizas el evento OnComm, debes pensar muy bien el valor que se le pone. Si ponemos un valor corto (1 es el mínimo), cada vez que reciba un carácter se producirá el evento OnComm.
el puerto serial en visual basic trabaja solamente en ascii aunque el equipo los envie en hexa el puerto los recibe en ascii en tu caso, esto:
Citar
> > AFR                            HEX             8 bit
> > RPM   LSB                HEX            16 bit
> > RPM   MSB               HEX            16 bit
AFR mandara un caracter y los RPM 2 caracteres cada uno, pero hay que pensar bien que pondras ahi porque debes considerar tambien los 00 01 02 que te esta enviando (serian otros 3 caracteres) pero segun los datos que posteaste estas recibiendo mas  :shock:.

con esta propiedad Comm1.InBufferSize establecemos el tamaño del Buffer (almacén de datos) de entrada.
Puede conocerse el número de caracteres presentes en el Buffer de entrada consultando el valor de la propiedad InBufferCount..

Por defecto, cuando se lee el Buffer de recepción, se leen todos los caracteres, quedando el Buffer vacío.  Si se le asigna a Comm1.InputLen un valor distinto de 0, cada vez que leamos el Buffer de recepción leerá un número de caracteres igual a esa cantidad, permaneciendo los caracteres restantes en el Buffer a la espera de una nueva lectura. Asignándole el valor 0 (Valor por defecto), el buffer se lee completo.

ahora con respecto a la interpretacion de los datos tengo unas preguntas, segun la informacion que te dio el fabricante antes de enviar los datos envia la cadena 00 01 02 tal como te muestra el hyperterminal despues de esto supuestamente te envia AFR  (8 bits) y luego RPM (32 bits), 40 bits en total (10 numeros hexadecimales) pero entre cada cadena   00 01 02 hay el doble 80 bits (20 numeros hexadecimles) ¿estas seguro de que solo esta enviando estos datos? ¿asi como esta la cadena 00 01 02 para iniciar habra otra para finalizar?

saludos  :-/                         

El tiempo perdido es dificil de recuperar, trata de no desperdiciarlo
atrevete de vez en cuando a hacer algo nuevo
¿Sera este el año que tanto he deseado?

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #10 en: 17 de Octubre de 2006, 04:33:20 »
Yo veo que se reciben en total 13 bytes por tanda.
Los primeros 3 bytes son el ID del mensaje 00 01 02, y los otros 10 el cuerpo del mensaje.
Lo que no coincide es que en la supuesta informacion tecnica que das del cuerpo del mensaje, tenes al menos 15 bytes, y aca solamente estas recibiendo constantemente 10 bytes de datos por tanda.

Tal vez la longitud de la cadena varia segun los datos del usuario, log in,etc.

El ID del final del mensaje puede ser el mismismo ID de inicio del proximo mensaje...

si tengo 00 01 02 ..........X bytes.............00 01 02

se que restando la posicion del segundo 00 a la del primer 02 + 1 me da la longitud del mensaje(es decir, X bytes) y por lo tanto puedo procesarlo.

Si existe un checksum al final del mensaje( es decir, comprobacion de datos correctos) probablemente se compruebe haciendo una operacion logica XOR entre todos los bytes recibidos, y verificando que el valor obtenido sea igual al ultimo byte de la tanda.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado alavai

  • PIC10
  • *
  • Mensajes: 15
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #11 en: 18 de Octubre de 2006, 09:27:25 »
Muchas gracias por la atención que me estais prestando y disculpas por no aparecer por aquí ayer, pero es que estuve fuera y no pude.

A ver; lo que realmente me interesa de este aparato es que me de las rpms y el AFR.

Dentro de 2 horas pondré de nuevo la pantalla que copio del terminal (como la que puse más arriba) y los valores que da el programa original para ver si conseguimos "descifrarlos".

Una vez más, muchas gracias por la atención que me estais prestando.

Desconectado alavai

  • PIC10
  • *
  • Mensajes: 15
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #12 en: 18 de Octubre de 2006, 13:20:46 »
Hola de nuevo a todos.

A ver, ya he conseguido leer los caracteres hex, pero sigo sin ser capaz de descifrar qué significan.

Tengo el 00, el 01 y el 02 seguido de 10 caracteres hex

Un ejemplo es el siguiente:

92 c8
00 c0
05 ff
ad 01
8c fe

a tener en cuenta que solamente necesito las rpms y el afr qué según dice el fabricante sería el afr los 8 primeros bits y las rpms el segundo paquete de 16 +16

leído con el programa que viene con el dispositivo, los valores que me muestra para estos hex que he puesto son:
rpms varía entre 780 y 810
afr varía entre 14.50 y 14.80

gracias por anticipado por vuestra inestimable ayuda.

como "desencriptar esto?

Desconectado alavai

  • PIC10
  • *
  • Mensajes: 15
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #13 en: 18 de Octubre de 2006, 15:14:35 »
oops, tengo que pedir disculpas, pues me he hecho un lío.

los datos hex los veo en el terminal y convirtiendo el primer byte del paquete a decimal, pues es el valor del afr.

mi problema sigue siendo que no soy capaz de obtener los datos en hex desde el visual basic.

me estoy volviendo loco dle todo

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Por favor, necesito ayuda, estoy perdido
« Respuesta #14 en: 18 de Octubre de 2006, 16:25:25 »
En hexadecimal no vas a poder obtenerlos directamente. El VB sólo recibe como STRING.
Sea en ASCII o en binario,ambos son de tipo string.
El binario es un engaño en realidad,es una cadena de 8 caracteres ASCII 0 y 1, pero STRING al fin y al cabo.

Tampoco te conviene pasarlos a HEX, sino a decimal.

Proba con este programa que te adjunto.
Conecta el "aparato" al Puerto serie 1, y primero hace click en comenzar. Despues encende el aparato.
Los datos deberian ir saliendo en el cuadro de texto, todos en formato decimal.
A partir de ahi, comenzamos.
Saludos.

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything