Das Senden von Binärdaten über Bluetooth / RFCOMM / SPP konvertiert 0x0A in 0x0D 0x0A

8

Ich habe einen Bluetooth RFCOMM-Dienst, der unter Linux über die folgenden Befehle ausgeführt wird:

%Vor%

Das $COMMAND schreibt Binärdaten in die Datei, die als Parameter übergeben wurde. Ich habe getestet, dass es sich richtig verhält:

%Vor%

Wenn ich jedoch über SPP / RFCOMM discovery (UUID 00001101-0000-1000-8000-00805F9B34FB ) eine Verbindung zum Dienst von einem anderen Gerät herstelle, sehe ich, dass jede Instanz von 0x0A ( LF ) durch 0x0D 0x0A ( CR LF ) im Stream. Das Problem tritt nicht auf der Empfängerseite auf, da ich versucht habe, eine Verbindung zu einem seriellen Hardware-Gerät herzustellen, das auch Binärdaten sendet, und die Konvertierung findet nicht statt. Es muss der Befehl im ersten Ausschnitt (über der # ^ here -Zeile) sein, der die Ersetzung durchführt.

Warum macht das Tool rfcomm dieses Ersetzen und wie kann ich es deaktivieren?

    
dflemstr 22.02.2013, 16:37
quelle

1 Antwort

6

Es sieht so aus, als ob Sie von der Zeilendisziplin des TTY gebissen werden (bedenken Sie, dass rfcomm keinen Fifo erzeugt, sondern ein Tty).

Sie können versuchen, den TTY in rohen Modus zu ändern, also ohne Magie. Der einfachste Weg ist mit stty --file <tty> raw . Ich weiß nicht, ob rfcomm mehrere Befehle in seiner Befehlszeile zulässt, aber Sie können leicht mit einem Skript machen:

command_raw

%Vor%

Und dann:

%Vor%

Wenn Sie die Quelle des Befehls ausführen lassen, können Sie dies auch einfach in C:

ändern %Vor%     
rodrigo 25.02.2013, 14:24
quelle