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.