現在、コードの一部を作業していますが、何をしようとしても機能しないようです。python - 関数に取り込まれた値を返し、それをCSVファイルに追加します。
私がしようとしているのは、コードの別のセクションで関数を呼び出すことによって関数の外部にアクセスできる関数に値を返すことです。私は値がコードの領域に渡されるようにしたい、私はcsvを作成している。
ここに必要な値が含まれている関数です。
def handleNotification(self, cHandle, data):
# Calculating the temperature in celsius and printing the value to the cmd
if cHandle == 24 and data[0] == '\x02':
temp_string = binascii.b2a_hex(data)
temp_val = temp_string[2:10]
temp_exp = temp_val[-2:]
temp_mes = temp_val [:-2]
temp_mes_swap = "".join(map(str.__add__, temp_mes[-2: :-2], temp_mes[-1: : -2]))
final_temp = int(temp_mes_swap, 16)*0.1
temp = format(final_temp)
#print temp
print ('Temperature: {0} Celsius'.format(final_temp))
return temp
ご覧のとおり、値tempを関数に戻そうとしています。私は次のコードでこの関数と値tempを呼び出そうとしています。 temp_reading変数をcsvに渡す予定です。
csv_data = retrieveData()
temp_reading = csv_data.handleNotification(24, temp)
私は、コードを実行すると、私は次のエラー「フロートオブジェクトが属性ののGetItem」を持っていません」を取得。
temp変数は、スクリプトの先頭に浮動小数点として定義されています。
私はPythonには新しいので、私は何かを欠いている可能性がありますが、私が試してみることはできません。任意のヘルプは高く評価されています:)
私はこの問題を解決するために、handleNotification関数の下に別の関数を作成し、tempの値を渡しました。私は新しい関数を呼び出して、それをcsvで使用できる変数に代入することができました。 data
はフロートがあるので、
あなたは代わりに何をお勧めしますか?私はデータ[0]をデータに変更しましたが、私はまだ同じエラーが発生しています。 – Ilish
あなたのコードは特定のフォーマットの温度文字列を期待しているようです。だから、データ[0]はそこにあるはずです。形式が何であるかを調べる。 – trans1st0r
温度は16進形式で読み込まれることが期待されます。値はBLEデバイスによって渡されています。 – Ilish