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:
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?
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:
Und dann:
%Vor%Wenn Sie die Quelle des Befehls ausführen lassen, können Sie dies auch einfach in C:
ändern %Vor%Tags und Links linux bluetooth serial-port newline