2017-06-27 3 views
0

Webインターフェイスからデータを送信するPythonスクリプトがあります。 PHPがスクリプトを呼び出して、Pythonスクリプトを呼び出しています。chrのPython変数

評価:Python sender.py 1

1可変adresに格納される値です。しかし、私はラインでコンパイルエラーを得ています:chr(adres)。整数でなければなりません。しかし、私はそれをどのように修正するか分かりません。

私が使用する場合:chr(0x01)それはうまく動作します。

import sys       #import sys 
import serial       #import Serial 

ser = serial.Serial ("/dev/ttyS0")  #Open onze poort 
ser.baudrate = 9600     #Baudrate instellen 

adres = sys.argv[1]     #Adres verkrijgen van PHP 

print adres       #Debug Info 

byte = chr(adres)      #Create byte from value 
ser.write(byte)      #Send byte with uart 

ser.close() 

私が取得エラー:

file sender.py, line 13 in byte = char(adres)
TypeError: an integer is required.

ライン13は以下のとおりです。

byte = chr(adres)      #Create byte from value 
+2

stacktraceを含む* exact *エラーを投稿してください。 – deceze

+0

stacktraceを投稿してください。 – rowana

+0

エラーメッセージが追加されました。スタックトレースを取得できません。私は理由が分かりません... –

答えて

1

sys.argv[1]は、文字列ではなく整数です。あなたは整数に変換する必要があります。

byte = chr(int(adres)) 

また、間違ったスクリプトに渡される引数(整数に評価されていない)処理するためにtry … exceptブロックに入れていいだろう。

+0

あなたは最高です!魅力的な作品;) –

0

引数をintegerに型キャストする必要があります。引数は文字列になるためです。

import sys       #import sys 
    import serial       #import Serial 

    ser = serial.Serial ("/dev/ttyS0")  #Open onze poort 
    ser.baudrate = 9600     #Baudrate instellen 

    adres = int(sys.argv[1])     #Adres verkrijgen van PHP 

    print adres       #Debug Info 

    byte = chr(adres)      #Create byte from value 
    ser.write(byte)      #Send byte with uart 

    ser.close()