質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
DJI SDK

DJI SDKはドローン関連のアプリケーションを開発するために設計された開発キットです。アプリのUIなどをカスタマイズできるUXSDK、積載物をコントロールするPSDK、機体情報をカスタマイズするOSDKやMSDKなどがあり、様々な用途に合わせてカスタマイズが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

10944閲覧

TypeError: can only concatenate str (not "bytes") to strのエラーが直らない

momokoko

総合スコア38

DJI SDK

DJI SDKはドローン関連のアプリケーションを開発するために設計された開発キットです。アプリのUIなどをカスタマイズできるUXSDK、積載物をコントロールするPSDK、機体情報をカスタマイズするOSDKやMSDKなどがあり、様々な用途に合わせてカスタマイズが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/28 06:09

タイトル通りなのですが、コマンドを実行するとTypeError: can only concatenate str (not "bytes") to strというエラーが出ます。

↓エラー内容

$python tello_state.py Traceback (most recent call last): File "tello_state.py", line 38, in <module> out = 'Tello State:\n' + out TypeError: can only concatenate str (not "bytes") to str

↓実行ファイル

$cat tello_state.py #!/usr/bin/env python3 import socket from time import sleep import curses def report(str): stdscr.addstr(0, 0, str) stdscr.refresh() if __name__ == "__main__": stdscr = curses.initscr() curses.noecho() curses.cbreak() local_ip = '' local_port = 8890 socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # socket for sending cmd socket.bind((local_ip, local_port)) tello_ip = '192.168.10.1' tello_port = 8889 tello_adderss = (tello_ip, tello_port) socket.sendto('command'.encode('utf-8'), tello_adderss) try: index = 0 while True: index += 1 response, ip = socket.recvfrom(1024) if response == 'ok': continue out = response.replace(b';', b';\n') out = 'Tello State:\n' + out report(out) sleep(INTERVAL) except KeyboardInterrupt: curses.echo() curses.nocbreak() curses.endwin()

自分でやったこと:
テラテイル
を参考にout = response.replace(';', ';\n')をout = response.replace(b';', b';\n')に書き換えました。

やっていることの大枠:
こちらの記事
を参考にコマンドラインでドローンを操作しようとしています。

つまづいている箇所:
リンク内容

数ヶ月は問題なく動いたコードですが、動かなくなっていました。
検索してもよくわからない状態です。
ご教授いただけると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ドローンとの通信部分はともかく、エラーで指摘されているのは、

Python

1out = 'Tello State:\n' + out

recvfrom()から受け取ったバイト列のデータを一部置換したバイト列outを、文字列'Tello State:\n'と連結しようとして怒られているだけですよね。

Python

1out = 'Tello State:\n' + out.decode() 2

とバイト列をデコードして文字列にすればいいんじゃないでしょうか(不正なバイト列を考慮しない場合)。

投稿2020/06/28 07:22

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momokoko

2020/06/28 08:20

ありがとうございます! 無事通信できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問