Autor Tema: ayuda comunicacion PIC con un PC  (Leído 3075 veces)

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

Desconectado maser84

  • PIC10
  • *
  • Mensajes: 11
ayuda comunicacion PIC con un PC
« en: 21 de Abril de 2004, 18:52:00 »
amigos todopic mi pregunta es la siguinte despues de saber como usar serin2 y serout2 quiero saber en que formato trasmite el pic y el pc por lo menos como hago si yo quiero trasmitir la letra a del pc al micro o viseversa y que ellos reconoscan que es una a y no el numero 65 en decimal o el numero 1000001 en binario o 41 en hex estoy un poco confundido ayuda
agradezco su colaboracion

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: ayuda comunicacion PIC con un PC
« Respuesta #1 en: 21 de Abril de 2004, 22:18:00 »
Yo, lo que hago, es leer el dato a la variable, y para compararla,
lo hago asi...

tmpvar = "a"

Para reconocer caracteres, los tienes que meter entre comillas...
serout2 porta.1, 188, ("Hola"

prueba a hacer un serin a una variable,y seguidamente un serout de esa variable....
Te tiene que pintar en el hiperterminal, el caracter pulsado.

AH!!! y ten en cuenta, que se discriminan las mayusculas de las minusculas... lo digo por el tema de las comparaciones.

Espero haberte resuelto algo...
Suerte.

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: ayuda comunicacion PIC con un PC
« Respuesta #2 en: 21 de Abril de 2004, 22:20:00 »
ah!!! se me olvidaba...
Si no le pones dec/hex/bin...
el caracter, con serin, lo lee como ascii...

Desconectado maser84

  • PIC10
  • *
  • Mensajes: 11
RE: ayuda comunicacion PIC con un PC
« Respuesta #3 en: 22 de Abril de 2004, 18:43:00 »
Gracias por tu ayuda disculpa si noe es mucha molestia podrias explicarme mas detalladamente no soy un experto en esto te entiendo a medias
Gracias por ayudarme

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: ayuda comunicacion PIC con un PC
« Respuesta #4 en: 22 de Abril de 2004, 21:20:00 »
De nada, pero ahora, me he perdido yo....
Cuentamé en que te has perdido, para poder darte una respuesta...


Desconectado maser84

  • PIC10
  • *
  • Mensajes: 11
RE: ayuda comunicacion PIC con un PC
« Respuesta #5 en: 23 de Abril de 2004, 18:46:00 »
no entiendo por lo menos si yo envio el numero 65 del micro al pc como hago para que el pc e incluso si hago lo cobntrario sepan que es el numero 65 y no la letra a en ascci

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: ayuda comunicacion PIC con un PC
« Respuesta #6 en: 23 de Abril de 2004, 21:19:00 »
mandándolo entre comillas....

algo así....
serout2 porta.1 , 188 , ("65"

y para leer
TMP  var   byte[2]
serin2 porta.1, 188, (TMP(0),TMP(1))

En la posición 0 del array, tendrás el 6 y en la 1 tendrás el 5

para hacer las pruebas, te recomiendo que utilices el hyperterminal...
y en el comando serin2, te recomiendo que le pongas el timeout, para que la función, espere la recepción e datos durante unos cuantos milisegundos, por ejemplo 5000
así te dará tiempo a escribir los datos en el terminal....

Espero haberte solucionado alguna duda... En caso contrario, por aqui me tienes!!!


Desconectado maser84

  • PIC10
  • *
  • Mensajes: 11
RE: ayuda comunicacion PIC con un PC
« Respuesta #7 en: 24 de Abril de 2004, 17:21:00 »
Gracias  ya entiendo oiga paraleer una palabra debo hacer lo mismo dividir los datos por letras

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: ayuda comunicacion PIC con un PC
« Respuesta #8 en: 24 de Abril de 2004, 22:56:00 »
efectivamente....
lo que vas a hacer, es guardar el valor ascii de cada caracter en cada uno de los bytes del array.


Desconectado MarquesSalsero

  • PIC18
  • ****
  • Mensajes: 467
RE: ayuda comunicacion PIC con un PC
« Respuesta #9 en: 25 de Abril de 2004, 07:21:00 »
Lo primero, perdonar por el ladrillo que os voy a meter.

Aunque parece que este tema lo teneis ya bastante claro, quisiera aclarar un punto, en los ordenadores no hay ninguna diferencia entre el valor "65" decimal y lo que nosotreos denominamos letra "A" ( por cierto mayuscula y no minuscula ).

En el fondo los ordenadores solo trabajan con numeros y las letras como tales no existen para ellos, es simplemante una convencion a la que se ha llegado y se ha creado una tabla ASCII en la cual hemos relacionado unos valores numericos con una serie de caracteres alfabeticos ( mayusculas y minusculas ) y otros simbolos y numeros.

Es decir que sinosotros enviamos el valor 65 decimal, el 41 hexadecimal o el 01100101 binario es todo lo mismo es un vlor numerico que nosotros podemos interpretarlo como mejor nos parezca, es decir si hemos llegado a la convención de que es un parametro pues lo interpretaremos como tal y si hemos decidido que es un caracter ( en este caso corresponde a la letra "A" ) pues lo trataremos como tal caracter.

A esta convencion llegamos en el momento en que diseñamos el protocolo de comunicaciones entre nuestros dos dispositivos.

Es decir si por ejemplo estamos diseñando un sensor de temperatura que enviara la temperatura medida, sin decimales, al procesador podemos inventarnos un protocolo muy basico como puede ser el que cada tres segundos el sensor envie al procesador principal ( ya sea por linea serie, paralelo o a traves de ondas subespaciales ) la siguiente cadena de texto ( vamos a suponer que la temperatura es de 33 grados):

"TEMP="

y a continuación la temperatura leida, la temperatura podemos enviarla como un valor numerico sin mas, es decir el numero 33 o bien como caracteres ASCII. si lo hiciesemos como un valor numerico enviariamos los siguientes valores numericos decimales:

84
69
77
80
61
33

es decir hemos enviado los caracteres ASCII que corresponden a las letras "T,E,M,P" y al simbolo "=" y a continuacion el valor 33. Si esto lo recibimos y lo vemos en nuestro ordenador con un programa de terminal, lo que veremos sera "TEMP=!"....Que? Como? pues lo que esta pasando es que el terminal esta diseñado para mostrar caracteres ASCII y no entiende otras convenciones a las que nosotros hayamos llegado y por lo tanto el valor numerico "33" decimal nos lo esta mostrando como un simbolo de "!" y que este es el caracter que corresponde a la tabla ASCII para el valor "33".

Ahora bien si deseamos enviar el valor "33" como dos caracteres ASCII "3" enviaremos la siguiente secuencia

84
69
77
80
61
51
51

Y en el terminal, ahora si, veremos "TEMP=33"

Lo que intento explicar es que cuando nosotros enviamos datos a traves de una linea de comunicaciones no mandamos valores decimales o hexadecimales o carateres o, o lo que sea vamos. Siempre estamos mandando valores numericos que luego el receptor los interpretara como nosotros hayamos convenido previamente entre las dos partes.

Lo que nosotros hacemos con los comandos serout2, serin2, hserout y hserin ( en pbp basic ya que en otros lenguajes es diferente) al poner modificadores como BIN, DEC o HEX o poner cadenas de texto entre comillas es decirle al compilador que haga por nosotros el trabajo sucio de interpretar y convertir a valores numericos p.ej. la cadena de texto "TEMP=" o bien que nos convierta el valor numerico "387" a sus caracteres ASCII correspondientes y que a continuacion convierta estos caracteres ASCII en valores numericos y los transmita.

Es decir, que siempre transmitimos valores numericos que al momento de recibirlos deberemos interpretarlos como valores numericos o como caracteres en funcion de lo que hayamos hecho al enviarlos.

Espero haber sido capaz de explicar el concepto y no ser demasiado ladrillazo.
Hay 10 tipos de personas las que entienden binario y las que no