Hola FJPPitta.
¿Que es un caracter? ¿Que es un numero?
Creo que todos sabemos(en terminos informaticos) que un numero es un caracter, pero no todo caracter es un numero.
Por lo tanto, los numeros son solo una parte de un conjunto de caracteres.
Podríamos separar básicamente a los caracteres en tres grupos: números, letras y caracteres especiales.
En un principio(en informática) se seleccionó(los yanquees) un determinado grupo de caracteres intentando una estandarización internacional. A este grupo de caracteres se lo llamó ASCII(hoy en dia es llamado US-ASCII).
Este grupo es de 8 bits. significa que hay un total de 256 caracteres ASCII.
Luego, por necesidad, obviamente debido a que se necesitaban muchas veces más de 256 caracteres en ciertos lenguajes, se extendió el grupo a 16 bits, y nacieron códigos ASCII muy variados.
Entonces, volviendo a tu pregunta específica:
Siempre se intenta lograr la mayor compatibilidad posible a la hora de realizar algo.
Vos podes enviar 8 bits por vez(suponiendo que no usas el noveno bit del RS-232).
¿Cuántos numeros entran en 8 bits?¿y cuántos caracteres ASCII?
Si hablamos de números puros, podrías enviar hasta 2 números por cada byte(4 bits =16 combinaciones.por lo tanto alcanza y sobra para nuestro sistema decimal).
Pero si un caracter ASCII tiene una longitud de 8 bits, significa que solo podrias enviar un caracter ASCII por cada 8 bits.
Entonces, excepto que requieras de EXTREMA velocidad, te recomiendo que te ajustes a la tabla de valores ASCII a la hora de enviar números también.
¿Cómo envía un PIC un caracter o un numero?
Para el PIC no existe caracter o numero. No hay ninguna diferencia entre ambos. Sea texto, sea numero, sea simbolo, sea lo que sea. El PIC solo distingue distintos niveles de tension(lo que solemos llamar "ceros y unos").
Si mandas por puerto serie el caracter "A". En realidad, el VB lo pasa a su codigo ASCII, que es el 65(podes comprobarlo haciendo ALT+65 en tu pc).
El 65 es en binario: "01000001"
Entonces, por el puerto serie, el PC enviará primero el bit de inicio, luego iran los 8 bits mencionados, y luego el bit de stop(suponiendo que no hay bit de paridad/9no bit).
El VB permite configurar el control MSComm en 2 maneras: como texto o binario.
Mentira. El VB miente en este caso. El VB no permite variables de tipo binary. Por lo que el modo binario no es mas que una cadena de texto de ceros y unos.
Supongamos que quiero enviar una "A" por puerto serie:
Si lo configuré en modo texto enviaré el string: "A"
Si lo configuré en modo binario deberé enviar el string: "01000001".
Entonces, te recomiendo que dos cosas:
Primero: que tengas cuidado con las funciones Chr() y Asc() del VB que se utilizan para pasar de ASCII a decimal y viceversa. La tabla ASCII del VB no es la tabla ASCII estandar. Posee ciertas diferencias bastante significativas, pero si no envias caracteres especiales o nacionales(me refiero a los acentos, la ñ, etc)no hay problemas en usar dichas funciones.
Segundo:
En este caso lo mejor probablemente es usar el VB en modo texto.
Entonces, para respetar la tabla ASCII, lo que haces desde el PIC para eviar numeros es sumarle a cada digito que envias el valor .48
Esto significa que si tenes que enviar un 9, deberás enviar:
.57
Si debes enviar el numero 123
entonces, deberas enviar 3 bytes por puerto serie y serán:
.49 .50 .51
Si tenes el VB configurado en modo texto, entonces te van a llegar como STRING y exactamente con su caracter representativo.
En el primer caso tendras en el buffer de entrada del puerto serie: "9"
En el segundo tendras: "123"
Los lees y haces con ellos lo que quieras.
Ahora, para enviar del VB al PIC en modo texto harias:
Supongamos que envias el valor "54" desde el VB al PIC.
Al PIC llegaran dos bytes:
primero llegara el valor binario '00110101'(que corresponde al 5) y luego llegara el valor '00110100'(que corresponde al 4)
O lo que es lo mismo: llegara primero el valor .53 y luego el .52.
Podes manipularlo como quieras, pero si queres transformar este valor a un numero de 0 al 9,lo unico que debes hacer es restarle .48 y lo obtendras.
Saludos.