TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: martinchd en 04 de Mayo de 2020, 10:34:52
-
Hola buen dia. Estoy renegando y buscando y lo logro encontrar como enviarlo, si pongo
printf("Temp -> %2i °C"temp); en el SMS me manda un @ (Temp -> 20 @C).
-
Eso es debido a que no te reconoce el caracter, que libreria estas usando?? Podes mandar mas info.
-
Eso es debido a que no te reconoce el caracter, que libreria estas usando?? Podes mandar mas info.
Las librerias que uso son.
<stdio.h> , <16F877a.h> , <lcd.c>
-
Prueba con \337 a ver si funciona.
-
Hola
Has probado a cambiar la codificación del modem gsm? Donde estoy yo currando ahora (empresa de un amigo), tenian un modulo que desarrollo hace años (es que ando mirando cosas viejas para aprender) y cambian la codificación para enviar ese simbolo, según la documentación que vi. Es un modulo que desarrollo para el tema de temperatura y demas de unos centros, por eso es algo similar.
Saludos.
-
Prueba con \337 a ver si funciona.
si pongo
printf("Temp -> %2i \337C\nHr -> %2i %%",temp,hr);
me manda el mensaje (adjunto imagen)
-
Hola
Has probado a cambiar la codificación del modem gsm? Donde estoy yo currando ahora (empresa de un amigo), tenian un modulo que desarrollo hace años (es que ando mirando cosas viejas para aprender) y cambian la codificación para enviar ese simbolo, según la documentación que vi. Es un modulo que desarrollo para el tema de temperatura y demas de unos centros, por eso es algo similar.
Saludos.
Amigo... noo no he probado... cambiarla como decís?
-
Prueba con \337 a ver si funciona.
si uso \337 para visualizar el simbolo "°" en el display LCD.
-
Hola, quizás el problema no sea la librería para ese caracter, ya que sólo es una parte de la cadena de comunicación. En el medio está sistema GSM de cómo interpreta la codificación ASCII y además está el terminal(destinatario)
-
....
si pongo
printf("Temp -> %2i \337C\nHr -> %2i %%",temp,hr);
me manda el mensaje (adjunto imagen)
octal 337 es la letra eszett (la que mostrás en la imagen) en ISO-8859.
El caracter que corresponde a '°' es octal 260
Probá con printf("Temp -> %2i \260C\nHr -> %2i %%",temp,hr);
-
....
si pongo
printf("Temp -> %2i \337C\nHr -> %2i %%",temp,hr);
me manda el mensaje (adjunto imagen)
octal 337 es la letra eszett (la que mostrás en la imagen) en ISO-8859.
El caracter que corresponde a '°' es octal 260
Probá con printf("Temp -> %2i \260C\nHr -> %2i %%",temp,hr);
Eduardo, al poner asi como me decis tambien me muestra la letra "arroba", al igual que si pongo
printf("Temp -> %2i °C\nHr -> %2i %%",temp,hr);
-
Es como si estuviera seleccionado el juego de caracteres asiático pues:
\337 == '°' en el juego europeo
\337 == 'ß' en el juego asiático
Pero \260 == '°' en el juego asiático (en realidad es un poco mas grande) pero no es una arroba '@' :(
-
Hola
Has probado a cambiar la codificación del modem gsm? Donde estoy yo currando ahora (empresa de un amigo), tenian un modulo que desarrollo hace años (es que ando mirando cosas viejas para aprender) y cambian la codificación para enviar ese simbolo, según la documentación que vi. Es un modulo que desarrollo para el tema de temperatura y demas de unos centros, por eso es algo similar.
Saludos.
Amigo... noo no he probado... cambiarla como decís?
No se que modulo tienes, pero algunos (al menos el que yo he visto del trabajo) se le indica que tipo de codificación va a usar y luego se le manda los mensajes. Así se ve correctamente los mensajes, pasa como las webs, editores de texto, etc.
Saludos
-
¿Por que no hacés un for mandando caracteres para ver cual corresponde al '°' si es que lo tiene?
-
Hola
Has probado a cambiar la codificación del modem gsm? Donde estoy yo currando ahora (empresa de un amigo), tenian un modulo que desarrollo hace años (es que ando mirando cosas viejas para aprender) y cambian la codificación para enviar ese simbolo, según la documentación que vi. Es un modulo que desarrollo para el tema de temperatura y demas de unos centros, por eso es algo similar.
Saludos.
Amigo... noo no he probado... cambiarla como decís?
No se que modulo tienes, pero algunos (al menos el que yo he visto del trabajo) se le indica que tipo de codificación va a usar y luego se le manda los mensajes. Así se ve correctamente los mensajes, pasa como las webs, editores de texto, etc.
Saludos
estoy usando SIM800L
-
¿Por que no hacés un for mandando caracteres para ver cual corresponde al '°' si es que lo tiene?
siii no me va a quedar otra... o sino cambiarlo por (*C ) y listo... no es tan critico.. es de mera información al usuario nada mas.
-
No hay forma de encontrar ese caracter. Lo dejo asi.
-
Haciendo una par de busquedas por internet te doy unas pistas, pero si se puede hacer, pero no facil:
- Depende de la codificacion que estes usando en tu SIM800L y las codificaciones que permitan.
AT+CSCS=?Las opciones son:
"GSM" GSM 7 bit default alphabet (3GPP TS 23.038);
"UCS2" 16-bit universal multiple-octet coded character set (ISO/IEC10646); UCS2 character strings are converted to hexadecimal numbers from 0000 to FFFF; e.g. "004100620063" equals three 16-bit characters with decimal values 65, 98 and 99
"IRA" International reference alphabet (ITU-T T.50)
"HEX" Character strings consist only of hexadecimal
Usando GSM:
El problema esta en que GSM usa un alfabeto de 7bits nomas y no incluye el º que estas buscando, entonces la que te queda es poner la C directamente o buscar alguna alternativa como el asterisco. Entonces si vas por GSM es un NO.
Usando UCS2:
Genial, ahora tenemos 16bits para hacer nuestras letras, por lo que tenemos muchas mas posibilidades,
PERO:
- Los mensajes van a ser mas cortos ya que cada caracter requiere 16bits y no 7. Pero esto no es lo "malo"
- Lo malo: TODO string que envies al modem requiere de esta codificación "extra" para pasar todo a 16bits antes de enviarlo al modem. Y si esto incluye el numero de telefono el cual antes era:
+123456Ahora sera
002B 0031 0032 0033 0034 0035 0036 En realidad es sin separar, lo separe para que se note la diferencia entre caracteres
Charset Table
http://www.columbia.edu/kermit/ucs2.html
Degree Simbol º 00B2
Si no mal lei UCS2 es obsoleto y los dispostivos android lo suplantan por UTF-16BE (big endian) ya que son parecidos pero el UTF agrega un par de cosas mas. Algo sobre UCS2
https://www.twilio.com/docs/glossary/what-is-ucs-2-character-encoding
GSM 7-bit charset table
ftp://www.3gpp.org/tsg_t/tsg_t/tsgt_04/docs/pdfs/tp-99127.pdf (Para bajar)
Informacion sobre el simbolo de grado
http://www.fileformat.info/info/unicode/char/b0/index.htm
-
Hola
Mirate el comando AT+CSCS y prueba a usarlo con AT+CSCS="UCS2", a ver si te funciona.
Saludos
EDITO: No me habían salido las nuevas respuestas... Ya te hablan de la codificación UCS2.
-
Muchísimas gracias chicos por esa información. No encontraba el motivo por el cual no podía enviar ese caracter.
Lo voy a dejar con el (*C), no es tan importante.
Saludos ....