2016-05-25 5 views
0

現在、コードの一部を作業していますが、何をしようとしても機能しないようです。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

関数が定義されていると引数が渡される方法、ライン

if cHandle == 24 and data[0] == '\x02': 

data[0]

cHandle = 24 
data = temp 

は、間違った構文です(あなたはフロートするtempを述べましたこれはdataと同じです)。

したがって、エラーです。

+0

あなたは代わりに何をお勧めしますか?私はデータ[0]をデータに変更しましたが、私はまだ同じエラーが発生しています。 – Ilish

+0

あなたのコードは特定のフォーマットの温度文字列を期待しているようです。だから、データ[0]はそこにあるはずです。形式が何であるかを調べる。 – trans1st0r

+0

温度は16進形式で読み込まれることが期待されます。値はBLEデバイスによって渡されています。 – Ilish

関連する問題