2012-08-17 21 views
8

Estoy tratando desesperadamente de obtener un dongle Bluetooth que funcione con mi Arduino, pero no puedo enviarle un comando que necesita. Puedo usarlo cuando lo conecte a mi computadora a través de un chip USB a UART y envíe el comando (C) desde PuTTY y luego presione Enter.¿Qué envía PuTTY cuando presiono la tecla Entrar?

El dongle de Bluetooth command sheet dice que el comando que estoy tratando de enviarlo es C<cr> pero no entiendo cómo enviar el caracter de retorno de carro adecuado desde el código de Arduino. He intentado usar la función Serial.println() y agregar el carácter \r a mi actual Serial.write("C\r"), pero ninguno de los dos está funcionando.

¿Cómo puedo lograrlo? -- gracias.

+1

verifica la configuracion de terminales Masilla para ver lo que está configurado para enviar; puedes configurarlo para enviar las terminaciones de línea que quieras. – geoffspear

+1

@Wooble ¿Dónde puedo encontrar la "Reconfiguración de PuTTY"? –

Respuesta

0

Estoy casi seguro de que está buscando el nuevo carácter de línea \n.

0

Ayer estaba tratando con este problema por otro. En la configuración estándar (en Windows y Linux) si escribe "help" y luego presiona enter en el puerto serial aparecerá la cadena de bits (verificada con terminal conectado externo vía RS232 y analizador lógico):

0x68 (h) 0x65 (e) 0x6c (l) 0x70 (p) 0x0D (CR: Retorno de carro u + 000A)

así parece como masilla pone CR en ENTER (no importa si usted está en Linux o Windows)

+1

0x0d no es lo mismo que U + 000A, ¿o sí? – thorn

+0

@thorn Sí, escribí 0x0d (LF: Line Feed, U + 000A) así que el último carácter es 0x0d o U + 000A :) – Mazeryt

+3

0x0a == U + 000A == LF, 0x0d == U + 000D == CR – thorn

6

Curiosamente, puedo informar lo contrario en Win 7: PuTTY para mí y mi proyecto incrustado está enviando SOLAMENTE '\ r' sobre el puerto COM. Curioso, léase: frustrantemente inexplicable, pero simplemente busco a cualquiera de los personajes en el otro extremo de la conexión en serie.

Luego, si habilita 'LF implícita en cada CR' en Opciones de terminal, enviará ambos '\ r \ n'. El comportamiento por defecto parece ser similar a una máquina de Commodore: D (http://en.wikipedia.org/wiki/Newline) ... que sabía ...

+0

Acabo de toparme con esto, gracias por mencionar la configuración implícita de LF. –

+1

Acabo de toparme con esto también. Estoy muy contento de haber verificado primero antes de conectarlo a mi PIC; como muestra la publicación de todos los demás, esto es bastante inesperado. Mi alcance muestra claramente que el valor predeterminado de Putty es enviar solo \ r. Esto no está documentado. – carveone

+0

@carveone, encontré los documentos [aquí] (http://the.earth.li/~sgtatham/putty/0.63/htmldoc/Chapter4.html#config-telnet), vea sec. 4.6.14:
De manera predeterminada, PuTTY envía el código Telnet New Line cuando presiona Return, en lugar de ** enviar Control-M como lo hace en la mayoría de los demás protocolos. ** – tsul

2

El programa de Arduino, sólo tiene que utilizar Serial.write y ambos personajes códigos:

Serial.write(13); // CR 
Serial.write(10); // LF 

y evitar Serial.print como está pensado como legible para humanos, por lo que tiene formato.

referencias: writeprint

+0

Espero que encuentre su respuesta de alguna manera. =) –

0

Probé este código muy sencillo (cr = retorno de carro)

Serial.write(13); 

Y debido a que los próximos carácteres "impresos" se introducirá el texto residual, que está bien.

2

PuTTY emula xterm que emula vt100. Para enviar masilla CR/LF al presionar enter, escriba ESC [20h en masilla después de conectarla al dispositivo serie. Esto establece VT100 LNM verdadero.

http://vt100.net/docs/vt100-ug/chapter3.html

línea de alimentación/nueva línea Nueva línea ESC [20h alimentación Línea ESC [20l

Cuestiones relacionadas