Autor Tema: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?  (Leído 4756 veces)

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

Desconectado egds

  • PIC12
  • **
  • Mensajes: 76
Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« en: 13 de Septiembre de 2004, 12:45:00 »
Hola amigos,

Tengo una duda a ver si hay me puede dar una solución.
Necesito crear una serie de constantes.Por ejemplo:
A=0
B=1
C=2
ETC...
y luego a=26
b=27
c=38 y asi sucesivamente.
Las mayusculas no me dan error creando las constantes pero cuando tiro a hacerlo con minusculas me da error, normal claro.
Mi pregunta es como nidar las minúsculas o engañar al programa para que no me cree conflictos. Existe alguna solución?
Muchas gracias.

Desconectado MarquesSalsero

  • PIC18
  • ****
  • Mensajes: 467
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #1 en: 14 de Septiembre de 2004, 07:15:00 »
Hola egds, no tengo muy claro tu pregunta, vamos la pregunta si, pero no la necesidad de hacer coincidir el nonbre de las variables.

He visto que has hecho esta misma consulta en el foro ingles del picbasicpro, pero alli dices simplemente que deseas distinguir mayusculas de minusculas. No mencionas nada de variables, en realidad que es lo que necesitas hacer?

Danos algun detalle mas y tal vez podamos ayudarte.

Hay 10 tipos de personas las que entienden binario y las que no

Desconectado egds

  • PIC12
  • **
  • Mensajes: 76
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #2 en: 14 de Septiembre de 2004, 07:49:00 »
Hola y muchas gracias por intentar ayudarme.
Pues mira tengo que hacer un proyecto en el cual tengo que codificar y descodificar tramas de mensajes SMS procedentes de un terminal GSM en Base64. Es una codificación de mensajes supongo que lo conoceras. La codificación Base64 la tengo controlada pero en papel y con la calculadora, jejeje.
El problema es que yo cuando recibo la trama recibiré algo parecido a esto:

Ejemplo> recibo la siguiente trama: (suponiendo que estoy escuchando el puerto serie con serin2 etc...)

 SE9MQQ== que codificado sería en Base64 sería: HOLA , pues bien hasta ahi no tengo ningún problema. Decodifico con mi algoritmo y listo.
El problema viene cuando recibo una cadena imaginate que recibo la siguiente trama por el puerto serie: "cGljYmFzaWM=" ,
bien esto significa "picbasic" en Base64 descodificado.
Fíjate en que en la cadena codificada existe una "m" en minúscula y una "M" en mayúscula, ahi tendría un problemon porque el caracter, "m" tiene un valor en ASCII y "M" tiene otro distinto y tengo que ternelos en cuenta. Por eso he de distinguir entre mayusculas y minusculas.

Y es que le he dado vueltas y a mi no se me ocurre nada. Mira a ver si te se ocurre algo.

Un saludo y gracias.

Desconectado MarquesSalsero

  • PIC18
  • ****
  • Mensajes: 467
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #3 en: 15 de Septiembre de 2004, 07:22:00 »
NO se exactamente como es el base64 pero si lo que quieres es asignarle a una variable un valor en funcion del caracter de turno puedes hacerlo mas o menos lo siguiente. Dado que un caracter no es tal sino tan solo una variable con un valor numerico puedes reasignar los valores numericos .

Es macrocodigo, no codigo real.

varchar la variable con el caracter original
varnew la variable con el codigo reasignado

if varchar > 64 and varchar < 91 then varnew = varchar-64
if varchar > 96 and varchar < 123 then varnew = varchar-(96-25)

De esta nmanera despues de pasar por aqui varnew valdra de 1 a 26 para "A" a "Z" y de 27 a 52 para "a" a "z"esto es algo realmente basico y es lo que se usa, con ligeras modificciones, para pasar cadenas de texto de mayusculas a minusculas y viceversa.

dime si era este tu problema.
Hay 10 tipos de personas las que entienden binario y las que no

Desconectado egds

  • PIC12
  • **
  • Mensajes: 76
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #4 en: 15 de Septiembre de 2004, 10:55:00 »
Estimado amigo,

La verdad es que ese método no lo conocía. A ver si me puedes ayudar. Yo recibiré una trama por el serin2 -por ejemplo- :
-AbBdeE-
Y tengo que, manteniendo el orden saber que la b tiene un valor determinado en ASCII y que B tiene otro valor. La codificación es lo de menos porque eso ya lo tengo mas que solucionado. El problema aunque me ha servido de gran ayuda lo tuyo, es, que si la B vale por ejemplo en ASCII 66, en mi conversión la B vale 1.

En fin todo es pensar un poquito y organizarme. Ya te contaré como lo he solucionado.

Un saludo.

Desconectado MarquesSalsero

  • PIC18
  • ****
  • Mensajes: 467
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #5 en: 15 de Septiembre de 2004, 13:09:00 »
Vamos a ver, si no te entiendo mal tu quieres pasar de una cadena ( que supongo tendras almacenada en una matriz ) a otra cadena que estara en otra matriz con una cierta transposicion.

Es decir que donde antes habia una "A" que en realidad no es tal sino el numero 65 despues de procesarlo tendras el numero 0 y para la "B" que es el 66 tendras el 1, etc...

Pues es tan sencillo como hacer:

matriz1(6)
matriz2(6)
for n = 0 to 7

matriz2(n)=matriz1(n)-65 (aqui pon lo que te he explicado antes )

next n

despues de esto tendras en la segunda cadena todos los caracteres "offseteados" vamos, desplazados numericamenta tanto como desees.
Hay 10 tipos de personas las que entienden binario y las que no

Desconectado egds

  • PIC12
  • **
  • Mensajes: 76
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #6 en: 16 de Septiembre de 2004, 03:24:00 »
Estimado amigo,

El proyecto que estoy realizando es el siguiente. Tengo que adaptar un localizador GPS-GSM que yo ya hizé en su momento a un protocolo impuesto por la Generalitat de Catalunya.
Si tienes curiosidad puedes bajarte las especificaciones del protocolo en el siguiente enlace:
http://www.localret.es/projectes/eadm/docs/especificacioprotocol1.pdf

Consiste en que los taxistas de toda España deben ir conectados a partir del 2007 al 112 manteniendo un protocolo impuesto por una comisión en la que está metida Telefónica Soluciones. El problema es que yo voy a utilizar el canal SMS del módem GSM y no lo voy hacer por llamada de datos, por lo que ,los mensajes -y esta es la gran putada- van codificados en Base 64.
Entonces qué pasa?, pues que cuando me llega una cadena en Base64 hay caracteres que se repiten en Mayusculas y minusculas, y lo peor es que hay tramos de la cadena que no sé ni lo que me va a llegar. Lo único bueno es que cuando el 112 me pide que el equipo haga alguna cosa me llega siempre un código de control por ejemplo (0x10)significa (Activación de seguimiento), pero luego sigue una cadena de datos, como: identificar la llamada entrante, poner en marcha los altavoces de emergencia, etc...
Bájate el archivo y le echas un vistazo, es muy interesante de verdad.
Así que, ese es el problema, cómo recorrer cadenas a ciegas.jejejej.

Bueno, ya me cuentas.

Un saludo.

Desconectado MarquesSalsero

  • PIC18
  • ****
  • Mensajes: 467
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #7 en: 16 de Septiembre de 2004, 04:37:00 »
el modo estandar de transmision en telefonos y modulos GSM economicos es como bytes de 7 bits empaquetados como bytes de 8 bits, lo que es tremendamente parecido a BASE64. Pero cualquier modulo de nivel profesional te lo puede entregar como cadena de texto  lo que aligera mucho el trabajo a realizar por el pic.

Yo recientemente he diseñado un modulo adaptador entre el sistema de automatizacion/domotica que vendemos en mi empresa y unos modulos de GSM y aun reconociendo que no es algo para hacerlo en dos dias y que a un aficionado, como es tu caso, puede darte algunos problemas, para cualquier diseñador/integrador de Hard/soft profesional no le toma mas alla de cinco o seis dias.

Aunque esta en ingles mira esto.

http://www.picbasic.co.uk/forum/showthread.php?s=&threadid=305

Hay 10 tipos de personas las que entienden binario y las que no

Desconectado egds

  • PIC12
  • **
  • Mensajes: 76
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #8 en: 17 de Septiembre de 2004, 03:18:00 »
Hola Marques,

A qué te refieres en esta frase "Pero cualquier modulo de nivel profesional te lo puede entregar como cadena de texto" ,
quieres decir que hay módems GSM que entregan el mensaje Base64 y lo decodifican ellos mismos? o que te lo entregan en formato "pdu" y lo decodifican?

No he entendido muy bien esa frase, lo siento.
Respecto al enlace muy bien, buscaba algo así.
BUeno, ya me cuentas.

Un saludo.

Desconectado MarquesSalsero

  • PIC18
  • ****
  • Mensajes: 467
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #9 en: 17 de Septiembre de 2004, 04:39:00 »
Eso quire decir que cualquier modulo GSM serio y algunos telefonos una vez configurados correctamente te devolveran un mensaje como texto ya decodificado. Yo en casa tengo puesto uno de Xacom.

http://www.xacom.com/

Pero tambien he usado en muchas instalaciones los de Siemens sin ningun problema. Lo que te decia es que cuando se esta esperimentando y a nivel aficonado normalmente uno prefiere ahorrarse 20 o 30 euros ( o US$  o lo que sea ) y dedicar un par de dias o semanas mas al diseño del soft.

Si buscas en el foro encontraras varias cadenas de mensajes al respecto.
Hay 10 tipos de personas las que entienden binario y las que no

Desconectado egds

  • PIC12
  • **
  • Mensajes: 76
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #10 en: 17 de Septiembre de 2004, 05:19:00 »
Pero qué tipo de codificación?
Base 64 o pdu?

Salu2.

Desconectado MarquesSalsero

  • PIC18
  • ****
  • Mensajes: 467
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #11 en: 20 de Septiembre de 2004, 04:42:00 »
Pues la transmision, como marca el standard, es porsupuesto en pdu, pero los modems lo decodifican y te lo entregan ya como texto, con lo cual puedes hacer simples SEND "Texto" y/o RECEIVE "TEXTO"

Ahora bien si en el protocolo que me indicas ellos lo vuelvan a codificar en BASE64... pues no entiendo muy bien la razon.
Hay 10 tipos de personas las que entienden binario y las que no

Desconectado egds

  • PIC12
  • **
  • Mensajes: 76
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #12 en: 20 de Septiembre de 2004, 12:10:00 »
Hola Marques!,

Como veo que dominas bastante el tema, -bastante más que yo- .
Resuelto ya el tema del dichoso algoritmo en BAse64 ahora se me presenta el último y gran problema. Te cuento: esto yo creo que es más para informáticos o programadores porque yo soy Ing.técnico Naval y no tengo "ni idea". Siguiendo con las especificaciones del protocolo, puedo recibir bytes, INT16 (2 bytes) entero corto (MSB first),INT32 (4bytes) Entero largo (MSB first),
FLT32 4 Bytes Coma flotante corto (MSB first) y FLT64 8bytes Coma flotante largo (MSB first).
Esto lo tienes en la página 11 del .pdf que te dí la dirección.
Cuando recibo un byte no tengo problema, pero si recibo 2 bytes por ejemplo ya me lío.
¿qué coño es un INT16 número de 16 bits con signo en formato de complemento a 2? Cómo se come eso? Tienes alguna dirección que lo explique.
O 4 bytes INT32 número 32 bytes con signo en formato de complemento a 2.?

La verdad es, que cuando soluciono una cosa, siempre viene un problema más gordo detrás..

Mira a ver si me puedes echar una mano.
Muchas gracias Marques.


Desconectado MarquesSalsero

  • PIC18
  • ****
  • Mensajes: 467
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #13 en: 21 de Septiembre de 2004, 04:04:00 »
Ufff me estas haciendo unas preguntitasa que si bien no son complejas voy a necesitar mucho tiempo para poder escribirlo.

Por partes:

Un byte es una agrupacion de bits, la tecnologia de los ordenadores de 8 bits han hecho que universalmente se considere que un Byte us un grupo de 8 bytes, sin embargo lo cierto es que esto no deja de ser una convencion en la que nos hemos puesto generalmente de acuerdo. De hecho un Byte puede ser de tres bits o de once.

Pues bien como se ha "acordado" que los bytes son de 8 bits, cuando hablamos de grupos de 16 bits lo solemos llamar 2 Bytes y si es de 32 bits lo llamamos 4 Bytes.

Hay otro tipo de agrupación de bits que es la llamada "Nibble" que se puede traducir por "medio" o por "fragmento" ( NOTA si os fijáis en las latas de granos maíz suele poner "Nibblets de maíz" porque les han cortado la punta del germen para hacer aceite con el ), un Nibble es medio Byte y por extensión a lo de antes se suele llamar Nibble a un grupo de 4 bits aunque de forma rigurosa sea medio Byte

Lo del MSB quiere decir "Most Significant Byte" traducido "Byte Mas Importante" y LSB quiere decir "Least Significant Byte" traducido "Byte Menos Importante"

Normalmente todos los sistemas de comunicaciones están basados en transmisión de paquetes de 8 bits, por lo tanto si queremos enviar un paquete de 16 bits necesitamos trocearlo en bloques de 8 bits para poderlo acomodar en nuestro medio de transmisión.

Una vez que hemos partido el bloque de dos Bytes "F64C" en "F6" y "4C" nos queda la siguiente duda  ¿Que mandamos primero ? Pues bien si enviamos primero el "F6" estamos mandando primero el Byte de mas valor y por lo tanto el "Byte Mas Importante".... MSB First ¿Entendido?

Si lo hacemos al revés estaremos enviando el Byte menos importante primero ... LSB First


Para el tema del binario con signo y demás, te aconsejo que busques cualquier documento sobre matemáticas binarias ( cualquier libro sobre programación elemental trata el tema ) ya que no solo te desvelará este tema sino que aprenderás muchas cosas que seguramente, si no estudias el tema, estarás preguntándote dentro de dos días.

Hay un libro que circula como PDF por internet llamado "The Quintessential PIC Microcontroller" que es muy bueno
Hay 10 tipos de personas las que entienden binario y las que no

Desconectado egds

  • PIC12
  • **
  • Mensajes: 76
RE: Cómo puedo hacer que basic pro distinga mayusculas y minusculas?
« Respuesta #14 en: 23 de Septiembre de 2004, 06:13:00 »
Gracias por tu ayuda,

Ahora ya puedo seguir trabajando en mi proyecto, me quedan lineas y lineas de programación...

Hasta otra.!