Hola a todos, gracias por vuestro interes, he puesto este post por que mi experiencia con el puerto serie es nula, ya que solo lo he utilizado para monitorear algunos datos proporcionados por el arduino.
Quiero conectar una maquina a un PC utilizando arduino, y la única información que poseo es esta:
ESC 0x6 '5' CR //Para poner en marcha se pulsa un botón en el PC que manda
//dicho comando por el serial a la maquina (del PC a Arduino).
ESC 'D' CR ESC "#000027D8" CR ESC 'E' CR //Comandos que recibe la maquina por el seria para
ESC 'D' CR ESC "#000021D2" CR ESC 'E' CR //realizar diferentes funciones.
ESC 'D' CR ESC "#000023D5" CR ESC 'E' CR
ESC 'D' CR ESC "#000025D7" CR ESC 'E' CR
ESC 'Q' CR //Al pulsar otro botón en el PC se manda este comando por el serial para parar.
Mi pregunta es, el programa por el serial que me manda ESC 0x6 '5' CR o me manda 0x27 0x6 '5' 0x13 ya que el 0x27 es el valor ASCII que corresponde a ESC.
Antes de preguntar he buscado en google pero no me aclaro mucho con lo que he leído.
Muchas gracias.
Si es correcto 0x27 es el equivalente ASCII de ESC.
No se como no te quedó claro, y te explico porque.
Buscas en google: tabla ascii como esta
Y donde dice 27 que lees. ESC
Hola, si ya me baje la tabla ascii, de hecho saque de una tabla similar que 0x27 es equivalente a ESC, a demás de leer varios textos en ingles que no me han aclarado mucho.
Pero lo que sigo sin tener claro es, si a arduino por el serial le va a llegar ESC 0x6 '5' CR o le va ha llegar 0x27 0x6 '5' 0x13. Ya que luego el texto recibido por el serial lo voy a almacenar en un string y luego lo analizare para posteriormente activar los contactores correspondientes.
Muchas gracias y un saludo.
Los valores que llegan son bytes pero esos bytes luego los presentas como gustes.
Asi que si defines char c = Serial.read(); recibirás 0x27 0x06 y demás.. terminando en 0x13 que puede servirte como final de comando.
Luego si quieres presentarlo como byte pones Serial.print(c, hex); en formato hexadecimal o simplemente
Serial.print(c); en ASCII o Serial.print(c, DEC); en decimal.
El dato es el mismo, como lo presentas es tu decisión.
Muchas gracias ya lo tengo más caro.
Un saludo.