現在、Python 3からArduino(HC-06付き)にメッセージを送信しようとしています。私は接続を確立することができましたが、メッセージを送信する正しい方法を見つけることができないようです。エラーがスローされますPython 3でブルートゥース経由でメッセージを送信
sock.send("2")
:
import sys
import bluetooth
bd_addr = '[MAC-address for HC-06]'
port = 1
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((bd_addr,port))
は私がしようとしている送信するには:ここで
は、私はセットアップに接続する(私はブルートゥース用PyBluezを使用しています)を使用するコードです: "TypeError:期待されるバイトバッファ、str"。 も試み:
sock.send(str('2'))
また、エラーがスローされます: "例外TypeError:バイトバッファ期待は、STRました"。
"sock.send(2)"、 "sock.send(b'2 ')"、bytearray、 "sock.send(bytes([" 2 "]))のような他のものを試しました。 "基本的に、私が送るしようとしているデータ型は、別のデータ型を要求します。
私はAndroid端末のBluetooth端末を介してすべてのコマンド(現時点では1と2のみ)を送信できたので、Arduinoサイトに問題はありません。
多くのガイドがありますが、私が複製できない例があります。誰でも基本的なコマンドを送信する方法を教えていただけますか?私は答えに近づいていますか?
EDIT: 私は今、 "sock.send(" 2" .encodeを())」しようとしました、それはまた、エラーがスローされます: "例外TypeError:データは文字列でなければなりません、クラスは 'バイト' だった"
別のIDEを使用しては私にエラーに関するより詳細な情報を与えた:
sock.send( "2"): (警告モジュールからの)警告: ファイル「/Library/Frameworks/Python.framework/をバージョン3.6/lib/python3.6/site-packages/PyBluez-0.22-py3.6.egg/lightblue/_bluetoothsockets.py "、737行。Foundation.NSData.alloc()initWithBytes_length_(データ、LEN(データ))、 UninitializedDeallocWarning:タイプの初期化されていないオブジェクトをリーク_NSPlaceholderData トレースバック(最後の最新の呼び出し): ファイル ""、1行目、 靴下インチsend( "2") ファイル "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PyBluez-0.22-py3.6.egg/bluetooth/osx.py"、行122、送信中 return self._sock.send(data) ファイル "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PyBluez-0.22-py3.6.egg/ lightblue/_bluetoothsockets.py "、行524、送信 結果=自己.__ conn.write(writebuf [:sendbytecount]) ファイル" /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/siteパッケージ/ PyBluez -0.22-py3.6.egg/lightblue/_bluetoothsockets.py "、737行目、書き込み中 Foundation.NSData.alloc()。initWithBytes_length_(データ、len(データ))、 TypeError:バイトバッファーが必要です。
sock.send( "2" .encode()): トレースバック(最新の呼び出しの最後): " sock.sendで、ライン1、 ファイル"( "2" .encode()) ファイル "/ Library/Frameworks/Python。フレームワーク/バージョン/ 3.6/lib/python3.6/site-packages/PyBluez-0.22-py3.6.egg/bluetooth/osx.py "、122行目、send return self._sock.send(data) ファイル"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PyBluez-0.22-py3.6.egg/lightblue/_bluetoothsockets.py"、487行目、送信 raise TypeError( "データは文字列でなければならず、%sでした"%type(data)) TypeError:データは文字列で、クラス 'bytes'でなければなりません
私はライブラリを疑い始めています。 PyBluezをインストールするときに間違っています。私はそれが私のラズベリーパイ3で動作するかどうかを確かめます。
これは右のbluezライブラリを使用していますか? – cunniemm
'sock.send( '2'.encode())'を試してください。 –
@cunnniemm私はそれがPyBluezだと確信しています。 –