2012-08-17 16 views
8

Ich versuche verzweifelt, einen Bluetooth-Dongle zu bekommen, der mit meinem Arduino arbeitet, aber ich kann ihm keinen Befehl senden, den er benötigt. Ich kann es verwenden, wenn ich es über einen USB-zu-UART-Chip an meinen Computer anschließe und den Befehl (C) von PuTTY sende und dann Enter drücke.Was sendet PuTTY, wenn ich die Eingabetaste drücke?

Die command sheet des Bluetooth-Dongles sagt, dass der Befehl ich versuche, es C<cr> zu senden, aber ich kann nicht herausfinden, wie man das richtige Carriage-Return-Zeichen aus dem Arduino-Code sendet. Ich habe versucht, die Serial.println() Funktion sowie das Hinzufügen der \r Zeichen zu meinem aktuellen Serial.write("C\r"), aber keiner von denen funktioniert.

Wie kann ich das erreichen? -- Danke.

+1

Überprüfen Sie Ihre Einstellungen Putty Terminal, um zu sehen, was es zu schicken einzurichten ist; Sie können es so konfigurieren, dass es beliebige Zeilenenden sendet. – geoffspear

+1

@Wooble Wo ist die "PuTTY Reconfiguration", würde ich das finden können? –

Antwort

0

Ich bin mir fast sicher, dass Sie nach dem neuen Zeilenzeichen \n suchen.

0

Gestern war ich mit dieser durch ein anderes Problem zu versuchen. In der Standardkonfiguration (unter Windows und Linux) Wenn Sie "Hilfe" eingeben und Enter drücken, erscheint die serielle Schnittstelle gefolgt von einer Bitkette (überprüft mit externem Anschluss über RS232 und Logikanalysator):

0x68 (h) 0x65 (e) 0x6C (l) 0x70 (p) 0x0d (CR: Carriage Return U + 000A)

so scheint, wie KITT CR setzt auf ENTER (ganz gleich, ob Sie unter Linux oder Windows) sind

+1

0x0d ist nicht dasselbe wie U + 000A, oder? – thorn

+0

@thorn Ja, ich schrieb 0x0d (LF: Zeilenvorschub, U + 000A), so dass letzter Zeichen 0x0d oder U + 000A ist :) – Mazeryt

+3

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

6

Interessanterweise kann ich das Gegenteil auf Win 7: PuTTY für mich melden und mein eingebettetes Projekt sendet NUR '\ r' über den COM-Port. Neugierig, lies: frustrierend unerklärlich, aber ich suche einfach am anderen Ende der seriellen Verbindung nach einem Zeichen.

Wenn Sie dann 'Implizite LF in jedem CR' unter Terminal-Optionen aktivieren, sendet es beide '\ r \ n'. Standardverhalten scheint zu einem Commodore Maschine ähnlich zu sein: D (http://en.wikipedia.org/wiki/Newline) ... wer wusste ...

+0

Ich bin gerade reingekommen, danke für die implizite LF-Einstellung. –

+1

Ich bin eben auch reingerannt. Ich bin wirklich froh, dass ich zuerst überprüft habe, bevor ich es an meinen PIC angehängt habe. Wie alle anderen Posts zeigen, ist dies ziemlich unerwartet. Mein Umfang zeigt deutlich, dass Puttys Standard nur das Senden ist. Dies ist nicht dokumentiert. – carveone

+0

@carveone, Ich fand die Dokumente [hier] (http://the.earth.li/~sgtatham/putty/0.63/htmldoc/Chapter4.html#config-telnet), siehe Sec. 4.6.14:
Standardmäßig sendet PuTTY den Telnet New Line-Code, wenn Sie Return drücken, anstatt ** Control-M zu senden, wie in den meisten anderen Protokollen. ** – tsul

2

Auf Arduino Programm, verwenden Sie einfach Serial.write und beide Zeichen-Codes:

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

und vermeiden Sie Serial.print als es ist als menschlich lesbar gedacht, also formatiert.

Referenzen: writeprint

+0

Ich hoffe, Sie finden Ihre Antwort auf irgendeine Weise. =) –

0

habe ich versucht, diesen sehr einfachen Code (cr = Carriage Return)

Serial.write(13); 

Und weil die nächste "gedruckt" caracters wird der Rest Text füttern, es ist ok.

2

PuTTY emuliert xterm, das vt100 emuliert. Wenn Sie beim Drücken der Eingabetaste CR/LF senden möchten, geben Sie ESC [20h in Putty ein, nachdem Sie eine Verbindung zum seriellen Gerät hergestellt haben. Dies setzt VT100 LNM auf True.

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

Line Feed/neue Zeile Neue Zeile ESC [20h Zeilenvorschub ESC [20l